Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- include HTTParty
- attr_accessor :uri, :format
- def self.method_missing(method_name, request_properties, &block)
- raise 'request properties should not be empty, please provide some keys to the request' if request_properties.empty?
- header_list = header_check_for(request_properties[:headers])
- if method_name.to_s =~ /_for$/
- base_uri @uri
- format @format
- body = get_json_from_body(request_properties[:body])
- http_method_name = method_name.to_s.scan(/^[a-z]+/).first
- response = send(http_method_name,
- request_properties[:url],
- :body => body,
- :headers => header_list,
- query: request_properties[:query],
- OpenSSL.debug => true)
- response
- else
- super
- end
- end
- private
- def self.get_json_from_body(body)
- if valid_json?(body)
- return body
- else
- return body.to_json
- end
- end
- def self.valid_json?(json)
- begin
- JSON.parse(json)
- return true
- rescue Exception => e
- return false
- end
- end
- def self.get_header_defaults
- {
- 'Content-Type' => 'application/json',
- }
- end
- def self.header_check_for headers
- headers ||= get_header_defaults
- get_header_defaults.merge(headers)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement