module Stackd::Util::HTTP
Public Class Methods
delete(credentials, url)
click to toggle source
# File lib/stackd/util/http.rb, line 25 def self.delete credentials, url request_without_body :delete, credentials, url end
get(credentials, url)
click to toggle source
# File lib/stackd/util/http.rb, line 9 def self.get credentials, url request_without_body :get, credentials, url end
patch(credentials, url, body, content_type)
click to toggle source
# File lib/stackd/util/http.rb, line 21 def self.patch credentials, url, body, content_type request_with_body :patch, credentials, url, body, content_type end
post(credentials, url, body, content_type)
click to toggle source
# File lib/stackd/util/http.rb, line 13 def self.post credentials, url, body, content_type request_with_body :post, credentials, url, body, content_type end
put(credentials, url, body, content_type)
click to toggle source
# File lib/stackd/util/http.rb, line 17 def self.put credentials, url, body, content_type request_with_body :put, credentials, url, body, content_type end
Private Class Methods
basic_auth_for(credentials)
click to toggle source
# File lib/stackd/util/http.rb, line 89 def self.basic_auth_for credentials if credentials.is_a? Hash credentials elsif credentials.is_a? Client { user: credentials.id, password: credentials.secret } end end
creds_are_valid?(credentials)
click to toggle source
# File lib/stackd/util/http.rb, line 80 def self.creds_are_valid? credentials credentials.nil? || \ credentials.is_a?(Client) || \ credentials.is_a?(Token) || \ (credentials.is_a?(Hash) && \ credentials[:user].is_a?(String) && \ credentials[:password].is_a?(String)) end
headers_for(credentials, content_type = nil)
click to toggle source
# File lib/stackd/util/http.rb, line 97 def self.headers_for credentials, content_type = nil headers = {} if credentials.is_a? Token headers.merge!( { 'Authorization' => "Bearer #{credentials.access_token}" }) end unless content_type.nil? content_type_value = content_type == :json \ ? 'application/json' \ : 'application/x-www-form-urlencoded' headers.merge!({ 'Content-Type' => content_type_value }) end headers end
parameters_for(body, content_type)
click to toggle source
# File lib/stackd/util/http.rb, line 116 def self.parameters_for body, content_type if content_type == :json JSON.generate body else body end end
process_response(res)
click to toggle source
# File lib/stackd/util/http.rb, line 124 def self.process_response res if res.code >= 500 raise ServerError.new res.body.deep_symbolize_keys elsif res.code >= 400 raise Error.new res.body.deep_symbolize_keys else res.body.deep_symbolize_keys end end
request_with_body(method, credentials, url, body, content_type)
click to toggle source
# File lib/stackd/util/http.rb, line 43 def self.request_with_body method, credentials, url, body, content_type validate_params! credentials, url, body, content_type basic_auth = basic_auth_for credentials headers = headers_for credentials, content_type parameters = parameters_for body, content_type res = Unirest.public_send method, url, headers: headers, auth: basic_auth, parameters: parameters process_response res end
request_without_body(method, credentials, url)
click to toggle source
# File lib/stackd/util/http.rb, line 31 def self.request_without_body method, credentials, url validate_params! credentials, url basic_auth = basic_auth_for credentials headers = headers_for credentials res = Unirest.public_send method, url, headers: headers, auth: basic_auth process_response res end
validate_params!(credentials, url, body = nil, content_type = nil)
click to toggle source
# File lib/stackd/util/http.rb, line 57 def self.validate_params! credentials, url, body = nil, content_type = nil unless creds_are_valid? credentials raise ArgumentError.new \ "credentials must be a Stackd::Token, Hash with :user + " + \ ":password, credentials: #{credentials.inspect}" end unless url.is_a? String raise ArgumentError.new "url must be String. url: #{url.inspect}" end unless body.nil? || body.is_a?(Hash) raise ArgumentError.new \ "body must be a Hash or nil. body: #{body.inspect}" end unless content_type.nil? || [:json, :form].include?(content_type) raise ArgumentError.new \ "content_type must be :json, :form, or nil. " + \ "content_type: #{content_type.inspect}" end end