lib/soapy_cake/client.rb in soapy_cake-1.13.1 vs lib/soapy_cake/client.rb in soapy_cake-1.14.0
- old
+ new
@@ -16,19 +16,36 @@
def run(request)
request.api_key = api_key
request.time_offset = time_offset
- response = Response.new(http_response(request), request.short_response?)
- response.time_offset = time_offset
- response.to_enum
+ Response
+ .new(response_body(request), request.short_response?, time_offset)
+ .public_send(:"to_#{xml_response? ? 'xml' : 'enum'}")
end
private
+ def xml_response?
+ opts[:xml_response] == true
+ end
+
+ def response_body(request)
+ if request.opts[:response].present?
+ request.opts[:response]
+ else
+ http_response(request)
+ end
+ end
+
def http_response(request)
url = "https://#{domain}#{request.path}"
- HTTParty.post(url, headers: headers, body: request.xml, timeout: NET_TIMEOUT).body
+ http_response = HTTParty.post(url, headers: headers, body: request.xml, timeout: NET_TIMEOUT)
+
+ fail RequestFailed, "Request failed with HTTP #{http_response.code}: " \
+ "#{http_response.body}" unless http_response.success?
+
+ http_response
end
def headers
{ 'Content-Type' => 'application/soap+xml;charset=UTF-8' }
end