@@ -30,6 +30,7 @@ defmodule Snap.Request do
30
30
31
31
body = encode_body ( body , json_library )
32
32
headers = set_default_headers ( headers )
33
+ request_body_bytes = count_bytes ( body )
33
34
34
35
start_time = System . monotonic_time ( )
35
36
@@ -40,6 +41,7 @@ defmodule Snap.Request do
40
41
41
42
result = parse_response ( response , json_library )
42
43
status = parse_status ( response )
44
+ response_body_bytes = count_response_bytes ( response )
43
45
44
46
decode_time = System . monotonic_time ( ) - response_time - start_time
45
47
total_time = response_time + decode_time
@@ -60,7 +62,9 @@ defmodule Snap.Request do
60
62
measurements = % {
61
63
response_time: response_time ,
62
64
decode_time: decode_time ,
63
- total_time: total_time
65
+ total_time: total_time ,
66
+ request_body_bytes: request_body_bytes ,
67
+ response_body_bytes: response_body_bytes
64
68
}
65
69
66
70
uri = URI . parse ( url )
@@ -99,6 +103,16 @@ defmodule Snap.Request do
99
103
defp parse_status ( { :ok , % HTTPClient.Response { status: status } } ) , do: status
100
104
defp parse_status ( { :error , _ } ) , do: nil
101
105
106
+ defp count_response_bytes ( { :ok , % HTTPClient.Response { body: body } } ) do
107
+ count_bytes ( body )
108
+ end
109
+
110
+ defp count_response_bytes ( { :error , _ } ) , do: 0
111
+
112
+ defp count_bytes ( nil ) , do: 0
113
+ defp count_bytes ( binary ) when is_binary ( binary ) , do: byte_size ( binary )
114
+ defp count_bytes ( list ) when is_list ( list ) , do: IO . iodata_length ( list )
115
+
102
116
defp telemetry_prefix ( cluster ) do
103
117
config = cluster . config ( )
104
118
0 commit comments