class ScientificProtocols::Client
Constants
- HEADERS
- REQUESTS
- URL
Public Class Methods
new()
click to toggle source
# File lib/scientificprotocols/client.rb, line 19 def initialize # Setup HTTP request connection to Zenodo. @connection ||= Faraday.new do |builder| builder.request :multipart builder.request :url_encoded builder.response :logger builder.adapter Faraday.default_adapter end end
Public Instance Methods
request(method, path, query = {}, headers = HEADERS)
click to toggle source
@param [:get, :post, :put, :delete] method. @param [String] path. @param [Hash] query (optional). @param [Hash] headers request headers (optional). @raise [ArgumentError] If the response is blank. @raise [ResourceNotFoundError] If the response code is 404. @raise [ClientError] If the response code is not in the success range. @return [Faraday::Response] server response.
# File lib/scientificprotocols/client.rb, line 37 def request(method, path, query = {}, headers = HEADERS) raise ArgumentError, "Unsupported method #{method.inspect}. Only :get, :post, :put, :delete are allowed" unless REQUESTS.include?(method) payload = nil if query.present? accept = headers.present? ? headers['Accept'] : nil if accept.present? && accept == 'application/json' payload = JSON.generate(query) else payload = query end end response = @connection.run_request(method, "#{URL}#{path}", payload, headers) case response.status.to_i when 200..299 return response when 404 raise ResourceNotFoundError.new(response: response) else raise ClientError.new(response: response) end end