class Omise::Resource

Constants

DEFAULT_HEADERS

Attributes

headers[R]
key[R]
uri[R]

Public Class Methods

new(url, path, key) click to toggle source
# File lib/omise/resource.rb, line 14
def initialize(url, path, key)
  @uri     = prepare_uri(url, path)
  @headers = prepare_headers
  @key     = key

  set_resource
end

Public Instance Methods

delete() click to toggle source
# File lib/omise/resource.rb, line 50
def delete
  @resource.delete do |response, request|
    log(request, response)
    Omise::Util.load_response(response)
  end
end
get(attributes = {}) click to toggle source
# File lib/omise/resource.rb, line 24
def get(attributes = {})
  if attributes.any?
    @uri.query = Omise::Util.generate_query(attributes)
    set_resource
  end

  @resource.get do |response, request|
    log(request, response)
    Omise::Util.load_response(response)
  end
end
patch(attributes = {}) click to toggle source
# File lib/omise/resource.rb, line 36
def patch(attributes = {})
  @resource.patch(attributes) do |response, request|
    log(request, response)
    Omise::Util.load_response(response)
  end
end
post(attributes = {}) click to toggle source
# File lib/omise/resource.rb, line 43
def post(attributes = {})
  @resource.post(attributes) do |response, request|
    log(request, response)
    Omise::Util.load_response(response)
  end
end

Private Instance Methods

log(request, response) click to toggle source
# File lib/omise/resource.rb, line 67
def log(request, response)
  Omise.http_logger.log_request(request)
  Omise.http_logger.log_response(response)
end
prepare_headers() click to toggle source
# File lib/omise/resource.rb, line 83
def prepare_headers
  headers = {}.merge(DEFAULT_HEADERS)

  if Omise.api_version
    headers = headers.merge(omise_version: Omise.api_version)
  end

  if Omise.user_agent_suffix
    headers[:user_agent] += ' ' + Omise.user_agent_suffix
  end

  headers
end
prepare_uri(url, path) click to toggle source
# File lib/omise/resource.rb, line 72
def prepare_uri(url, path)
  URI.parse(url).tap do |uri|
    path  = URI.parse(path)
    query = path.query

    path.query = nil
    uri.path   = [uri.path, path.to_s].join
    uri.query  = query
  end
end
set_resource() click to toggle source
# File lib/omise/resource.rb, line 59
def set_resource
  @resource = RestClient::Resource.new(@uri.to_s, {
    user: @key,
    verify_ssl: OpenSSL::SSL::VERIFY_PEER,
    headers: @headers,
  })
end