lib/locomotive/wagon/misc/httparty.rb in locomotivecms_wagon-1.5.4 vs lib/locomotive/wagon/misc/httparty.rb in locomotivecms_wagon-1.5.5
- old
+ new
@@ -6,30 +6,37 @@
class Webservice
include ::HTTParty
def self.consume(url, options = {})
+ method = options.delete(:method).try(:to_sym) || :get
+
url = ::HTTParty.normalize_base_uri(url)
uri = URI.parse(url)
- options[:base_uri] = "#{uri.scheme}://#{uri.host}"
- options[:base_uri] += ":#{uri.port}" if uri.port != 80
- path = uri.request_uri
+ path = uri.path.blank? ? '/' : uri.path
+ if uri.query
+ params = Rack::Utils.parse_nested_query(uri.query)
+ key = method == :post ? :body : :query
+ options[key] = params unless params.blank?
+ end
+
+ uri.query = nil; uri.path = ''
+ options[:base_uri] = uri.to_s
+
options.delete(:format) if options[:format] == 'default'
options[:format] = options[:format].gsub(/[\'\"]/, '').to_sym if options.has_key?(:format)
options[:headers] = { 'User-Agent' => 'LocomotiveCMS' } if options[:with_user_agent]
username, password = options.delete(:username), options.delete(:password)
options[:basic_auth] = { username: username, password: password } if username
- path ||= '/'
+ Locomotive::Wagon::Logger.debug "[WebService] consuming #{path}, #{options.inspect}"
- # Locomotive::Wagon::Logger.debug "[WebService] consuming #{path}, #{options.inspect}"
+ response = self.send(method, path, options)
- response = self.get(path, options)
-
if response.code == 200
_response = response.parsed_response
if _response.respond_to?(:underscore_keys)
_response.underscore_keys
else
@@ -43,6 +50,6 @@
end
end
end
end
-end
\ No newline at end of file
+end