@@ -32,7 +32,7 @@ defmodule SparkPost.Endpoint do
32
32
"id" => "102258558346809186", "name" => "102258558346809186",
33
33
"state" => "Success"}, ...], status_code: 200}
34
34
"""
35
- def request ( method , endpoint , body \\ % { } , headers \\ % { } , options \\ [ ] ) do
35
+ def request ( method , endpoint , body \\ % { } , headers \\ % { } , options \\ [ ] , decode_results \\ true ) do
36
36
url = Application . get_env ( :sparkpost , :api_endpoint , @ default_endpoint ) <> endpoint
37
37
38
38
{ :ok , request_body } = encode_request_body ( body )
@@ -49,7 +49,7 @@ defmodule SparkPost.Endpoint do
49
49
|> Keyword . put ( :recv_timeout , Application . get_env ( :sparkpost , :http_recv_timeout , 8000 ) )
50
50
51
51
HTTPoison . request ( method , url , request_body , request_headers , request_options )
52
- |> handle_response
52
+ |> handle_response ( decode_results )
53
53
end
54
54
55
55
def marshal_response ( response , struct_type , subkey \\ nil )
@@ -70,12 +70,16 @@ defmodule SparkPost.Endpoint do
70
70
response
71
71
end
72
72
73
- defp handle_response ( { :ok , % HTTPoison.Response { status_code: code , body: body } } ) when code >= 200 and code < 300 do
73
+ defp handle_response ( { :ok , % HTTPoison.Response { status_code: code , body: body } } , decode_results ) when code >= 200 and code < 300 do
74
74
decoded_body = decode_response_body ( body )
75
- % SparkPost.Endpoint.Response { status_code: 200 , results: decoded_body . results }
75
+ if decode_results do
76
+ % SparkPost.Endpoint.Response { status_code: 200 , results: decoded_body . results }
77
+ else
78
+ % SparkPost.Endpoint.Response { status_code: 200 , results: decoded_body }
79
+ end
76
80
end
77
81
78
- defp handle_response ( { :ok , % HTTPoison.Response { status_code: code , body: body } } ) when code >= 400 do
82
+ defp handle_response ( { :ok , % HTTPoison.Response { status_code: code , body: body } } , _decode_results ) when code >= 400 do
79
83
decoded_body = decode_response_body ( body )
80
84
if Map . has_key? ( decoded_body , :errors ) do
81
85
% SparkPost.Endpoint.Error { status_code: code , errors: decoded_body . errors }
0 commit comments