module Flinks::Request
Public Instance Methods
delete(path, params: {}, body: {})
click to toggle source
Performs a HTTP Delete request
@param [String] path @param [Hash] params @param [Hash] body
# File lib/flinks/request.rb, line 42 def delete(path, params: {}, body: {}) request(:delete, path, params: params, body: body) end
get(path, params: {})
click to toggle source
Performs a HTTP Get request
@param [String] path @param [Hash] params
# File lib/flinks/request.rb, line 15 def get(path, params: {}) request(:get, path, params: params) end
patch(path, params: {}, body: {})
click to toggle source
Performs a HTTP Patch request
@param [String] path @param [Hash] params @param [Hash] body
# File lib/flinks/request.rb, line 33 def patch(path, params: {}, body: {}) request(:patch, path, params: params, body: body) end
post(path, params: {}, body: {})
click to toggle source
Performs a HTTP Post request
@param [String] path @param [Hash] params @param [Hash] body
# File lib/flinks/request.rb, line 24 def post(path, params: {}, body: {}) request(:post, path, params: params, body: body) end
Private Instance Methods
request(method, path, params: {}, body: {})
click to toggle source
@return [HTTP::Client] @raise [Flinks::Error]
# File lib/flinks/request.rb, line 51 def request(method, path, params: {}, body: {}) headers = { 'Content-Type' => "application/json", 'Accept' => "application/json", 'User-Agent' => user_agent } # Build URL url = URI.parse(api_endpoint).merge(path) # Build payload payload = body.transform_keys { |k| k.to_s.camelize } # Perform request response = Http.headers(headers).send(method, url, params: params, json: payload) if debug p "Method: #{method}" p "Url: #{url}" p "Headers: #{headers}" p "Payload: #{payload}" p "Response: #{response}" end # Pass on errors when HTTP status included in 400 to 599 if (400..599).include?(response.code) raise Error.from_response(response) on_error.call(response.code, response.reason, body) end # Parse body data = response.parse # Transform data if !raw && raw.is_a?(Hash) data.deep_transform_keys { |k| k.underscore }.with_indifferent_access else data end end