class ShadowCabinet::Client::Base

Attributes

key[R]
secret[R]
url[R]

Public Class Methods

new(url:, key:, secret:) click to toggle source
# File lib/shadow_cabinet/client/base.rb, line 9
def initialize(url:, key:, secret:)
  @url = url
  @key = key
  @secret = secret
end

Public Instance Methods

delete(path:, params: {}) click to toggle source
# File lib/shadow_cabinet/client/base.rb, line 62
def delete(path:, params: {})
  result = make_request(
    verb: :delete,
    request_url: construct_url(path, params)
  )

  raise result.error if result.error_present?

  result.body
end
get(path:, params: {}) click to toggle source
# File lib/shadow_cabinet/client/base.rb, line 15
def get(path:, params: {})
  result = make_request(
    verb: :get,
    request_url: construct_url(path: path, params: params)
  )

  raise result.error if result.error_present?

  result.body
end
patch(path:, params: {}, data: nil) click to toggle source
# File lib/shadow_cabinet/client/base.rb, line 50
def patch(path:, params: {}, data: nil)
  result = make_request(
    verb: :patch,
    request_url: construct_url(path: path, params: params),
    data: data
  )

  raise result.error if result.error_present?

  result.body
end
post(path:, params: {}, data: nil) click to toggle source
# File lib/shadow_cabinet/client/base.rb, line 26
def post(path:, params: {}, data: nil)
  result = make_request(
    verb: :post,
    request_url: construct_url(path: path, params: params),
    data: data
  )

  raise result.error if result.error_present?

  result.body
end
put(path:, params: {}, data: nil) click to toggle source
# File lib/shadow_cabinet/client/base.rb, line 38
def put(path:, params: {}, data: nil)
  result = make_request(
    verb: :put,
    request_url: construct_url(path: path, params: params),
    data: data
  )

  raise result.error if result.error_present?

  result.body
end

Private Instance Methods

base_url() click to toggle source
# File lib/shadow_cabinet/client/base.rb, line 83
def base_url
  @base_url ||= Addressable::URI.parse(url)
end
construct_url(path:, params: {}) click to toggle source
# File lib/shadow_cabinet/client/base.rb, line 87
def construct_url(path:, params: {})
  base_url.tap do |url|
    url.path = File.join('/', 'api', 'v1', path)

    url.query_values = params

    return url
  end
end
make_request(verb:, request_url:, data: nil) click to toggle source
# File lib/shadow_cabinet/client/base.rb, line 75
def make_request(verb:, request_url:, data: nil)
  Result.new(
    error: Unimplmented.new(
      "#make_request is not defined for #{self.class}"
    )
  )
end