Module: CoverMyMeds::ApiRequest
- Included in:
- Client
- Defined in:
- lib/cover_my_meds/api_request.rb
Constant Summary collapse
- DEFAULT_TIMEOUT =
seconds, matches Net::Http’s default which rest-client used
60
Instance Method Summary collapse
- #parse_response(response) ⇒ Object
- #request(http_method, host, path, params = {}, auth_type = :basic, &block) ⇒ Object
- #url(host, path, params) ⇒ Object
Instance Method Details
#parse_response(response) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/cover_my_meds/api_request.rb', line 46 def parse_response response return nil if response.body.empty? JSON.parse(response.body) rescue JSON::ParserError response.body end |
#request(http_method, host, path, params = {}, auth_type = :basic, &block) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/cover_my_meds/api_request.rb', line 17 def request(http_method, host, path, params={}, auth_type = :basic, &block) params = params.symbolize_keys headers = params.delete(:headers) || {} conn = Faraday.new host do |faraday| faraday.request :multipart faraday.request :url_encoded faraday.response :follow_redirects faraday.adapter :typhoeus end case auth_type when :basic conn.basic_auth @username, @password when :bearer conn. :Bearer, "#{@username}+#{params.delete(:token_id)}" end response = conn.send http_method do |request| request.url path request..timeout = DEFAULT_TIMEOUT request.params = params request.headers.merge! headers request.body = block_given? ? yield : {} end raise Error::HTTPError.new(response.status, response.body, http_method, url(host, path, params)) unless response.success? parse_response response end |
#url(host, path, params) ⇒ Object
53 54 55 56 57 |
# File 'lib/cover_my_meds/api_request.rb', line 53 def url(host, path, params) "#{host}#{path}".tap do |url| url << "?#{params.to_query}" if params.present? end end |