class SendWithUs::ApiRequest
Attributes
response[R]
Public Class Methods
new(configuration)
click to toggle source
# File lib/send_with_us/api_request.rb, line 13 def initialize(configuration) @configuration = configuration end
Public Instance Methods
delete(endpoint)
click to toggle source
# File lib/send_with_us/api_request.rb, line 25 def delete(endpoint) request(Net::HTTP::Delete, request_path(endpoint)) end
get(endpoint, payload = nil)
click to toggle source
# File lib/send_with_us/api_request.rb, line 21 def get(endpoint, payload = nil) request(Net::HTTP::Get, request_path(endpoint), payload) end
post(endpoint, payload)
click to toggle source
# File lib/send_with_us/api_request.rb, line 17 def post(endpoint, payload) request(Net::HTTP::Post, request_path(endpoint), payload) end
put(endpoint, payload)
click to toggle source
# File lib/send_with_us/api_request.rb, line 29 def put(endpoint, payload) request(Net::HTTP::Put, request_path(endpoint), payload) end
Private Instance Methods
request(method_klass, path, payload=nil)
click to toggle source
# File lib/send_with_us/api_request.rb, line 44 def request(method_klass, path, payload=nil) request = method_klass.new(path, {'Content-Type' =>'application/json'}) request.add_field('X-SWU-API-KEY', @configuration.api_key) request.add_field('X-SWU-API-CLIENT', @configuration.client_stub) http = Net::HTTP.new(@configuration.host, @configuration.port) http.use_ssl = use_ssl? http.set_debug_output($stdout) if @configuration.debug @response = http.request(request, payload) case @response when Net::HTTPNotFound then raise SendWithUs::ApiInvalidEndpoint, path when Net::HTTPForbidden then raise SendWithUs::ApiInvalidKey, "Invalid api key: #{@configuration.api_key}" when Net::HTTPBadRequest then raise SendWithUs::ApiBadRequest.new("There was an error processing your request: #{@response.body.force_encoding('UTF-8')}, with payload: #{payload}") when Net::HTTPSuccess puts @response.body if @configuration.debug @response else raise SendWithUs::ApiUnknownError, "A #{@response.code} error has occurred: '#{@response.message.force_encoding('UTF-8')}'" end rescue Errno::ECONNREFUSED raise SendWithUs::ApiConnectionRefused, 'The connection was refused' end
request_path(end_point)
click to toggle source
# File lib/send_with_us/api_request.rb, line 36 def request_path(end_point) "/api/v#{@configuration.api_version}/#{end_point}" end
use_ssl?()
click to toggle source
# File lib/send_with_us/api_request.rb, line 40 def use_ssl? @configuration.protocol == 'https' end