module Giftbit::Base
Public Class Methods
extended(klass)
click to toggle source
# File lib/giftbit/base.rb, line 7 def self.extended(klass) klass.send :cattr_accessor, :endpoint, :auth, :auths klass.endpoint = 'https://testbedapp.giftbit.com/papi/v1/' end
included(klass)
click to toggle source
# File lib/giftbit/base.rb, line 12 def self.included(klass) klass.send :attr_accessor, :auth end
Public Instance Methods
auths?()
click to toggle source
# File lib/giftbit/base.rb, line 36 def auths? auths = instance? ? self.class.auths : self.auths auths && auths.any? end
get_auth()
click to toggle source
# File lib/giftbit/base.rb, line 16 def get_auth fail "auth and auths can't both be set" if inherited_auth && auths? if auth = instance? ? self.auth : inherited_auth auth elsif auths? fail 'you must init a new API instance with the auth you want to use' else fail 'you must set an auth token at application boot' end end
inherited_auth()
click to toggle source
# File lib/giftbit/base.rb, line 28 def inherited_auth instance? ? self.class.auth : auth end
inherited_endpoint()
click to toggle source
# File lib/giftbit/base.rb, line 32 def inherited_endpoint instance? ? self.class.endpoint : endpoint end
instance?()
click to toggle source
# File lib/giftbit/base.rb, line 41 def instance? self.class == Giftbit end
Private Instance Methods
default_resource_options()
click to toggle source
# File lib/giftbit/base.rb, line 47 def default_resource_options { headers: { "Authorization" => "Bearer #{get_auth}", "Accept" => "application/json", "Content-Type" => "json" } } end
delete(path, request_options = {}, resource_options = {})
click to toggle source
# File lib/giftbit/base.rb, line 87 def delete(path, request_options = {}, resource_options = {}) response :delete, resource(resource_options)[path], request_options end
get(path, request_options = {}, resource_options = {})
click to toggle source
# File lib/giftbit/base.rb, line 83 def get(path, request_options = {}, resource_options = {}) response :get, resource(resource_options)[path], request_options end
post(path, request_options = {}, resource_options = {})
click to toggle source
# File lib/giftbit/base.rb, line 91 def post(path, request_options = {}, resource_options = {}) response :post, resource(resource_options)[path], request_options end
put(path, request_options = {}, resource_options = {})
click to toggle source
# File lib/giftbit/base.rb, line 95 def put(path, request_options = {}, resource_options = {}) response :put, resource(resource_options)[path], request_options end
resource(options = {})
click to toggle source
# File lib/giftbit/base.rb, line 57 def resource(options = {}) RestClient::Resource.new inherited_endpoint, default_resource_options.deep_merge(options) end
response(method, resource, options = {})
click to toggle source
# File lib/giftbit/base.rb, line 61 def response(method, resource, options = {}) if body = options.delete(:body) json = resource.send(method, JSON.generate(body), options) else json = resource.send(method, options) end JSON.parse json rescue RestClient::ExceptionWithResponse => e case e.http_code when 400..499 JSON.parse e.response when 500..599 { 'status' => e.http_code, 'error' => { 'message' => e.response } } else raise end end