Advertisement
sbmanthri

Untitled

Nov 29th, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. include HTTParty
  2. attr_accessor :uri, :format
  3.  
  4.  
  5. def self.method_missing(method_name, request_properties, &block)
  6. raise 'request properties should not be empty, please provide some keys to the request' if request_properties.empty?
  7.  
  8. header_list = header_check_for(request_properties[:headers])
  9.  
  10. if method_name.to_s =~ /_for$/
  11. base_uri @uri
  12. format @format
  13. body = get_json_from_body(request_properties[:body])
  14. http_method_name = method_name.to_s.scan(/^[a-z]+/).first
  15. response = send(http_method_name,
  16. request_properties[:url],
  17. :body => body,
  18. :headers => header_list,
  19. query: request_properties[:query],
  20. OpenSSL.debug => true)
  21. response
  22. else
  23. super
  24. end
  25. end
  26.  
  27.  
  28. private
  29.  
  30. def self.get_json_from_body(body)
  31. if valid_json?(body)
  32. return body
  33. else
  34. return body.to_json
  35. end
  36. end
  37.  
  38. def self.valid_json?(json)
  39. begin
  40. JSON.parse(json)
  41. return true
  42. rescue Exception => e
  43. return false
  44. end
  45. end
  46.  
  47. def self.get_header_defaults
  48. {
  49. 'Content-Type' => 'application/json',
  50. }
  51. end
  52.  
  53. def self.header_check_for headers
  54. headers ||= get_header_defaults
  55. get_header_defaults.merge(headers)
  56. end
  57.  
  58.  
  59. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement