class Bibox::Rest::Client

Attributes

configuration[RW]
url[RW]

Public Class Methods

new(configuration: ::Bibox.configuration) click to toggle source
# File lib/bibox/rest/client.rb, line 6
def initialize(configuration: ::Bibox.configuration)
  self.url              =   "https://api.bibox.com/v1"
  self.configuration    =   configuration
end

Public Instance Methods

auth(payload = {}) click to toggle source
# File lib/bibox/rest/client.rb, line 56
def auth(payload = {})
  data              =   {}
  data[:cmds]       =   payload.to_json
  
  if configured?
    data[:apikey]   =   self.configuration.key
    data[:sign]     =   ::OpenSSL::HMAC.hexdigest('md5', self.configuration.secret, payload.to_json)
  end
  
  return data
end
check_credentials!() click to toggle source
# File lib/bibox/rest/client.rb, line 33
def check_credentials!
  unless configured?
    raise ::Bibox::Errors::MissingConfigError.new("Bibox gem hasn't been properly configured.")
  end
end
configured?() click to toggle source
# File lib/bibox/rest/client.rb, line 29
def configured?
  !self.configuration.key.to_s.empty? && !self.configuration.secret.to_s.empty?
end
get(path, params: {}, options: {}) click to toggle source
# File lib/bibox/rest/client.rb, line 48
def get(path, params: {}, options: {})
  request path, method: :get, params: params, options: options
end
parse(response) click to toggle source
# File lib/bibox/rest/client.rb, line 43
def parse(response)
  error?(response)
  response
end
post(path, params: {}, data: {}, options: {}) click to toggle source
# File lib/bibox/rest/client.rb, line 52
def post(path, params: {}, data: {}, options: {})
  request path, method: :post, params: params, data: auth(data), options: options
end
request(path, method: :get, params: {}, data: {}, options: {}) click to toggle source
# File lib/bibox/rest/client.rb, line 68
def request(path, method: :get, params: {}, data: {}, options: {})
  user_agent    =   options.fetch(:user_agent, self.configuration.faraday.fetch(:user_agent, nil))
  proxy         =   options.fetch(:proxy, nil)
    
  connection    =   Faraday.new(url: to_uri(path)) do |builder|
    builder.headers[:user_agent] = user_agent if !user_agent.to_s.empty?
    builder.request  :url_encoded if method.eql?(:post)
    builder.response :logger      if self.configuration.verbose_faraday?
    builder.response :json

    if proxy
      puts "[Bibox::Rest::Client] - Will connect to Bibox using proxy: #{proxy.inspect}" if self.configuration.verbose_faraday?
      builder.proxy = proxy
    end

    builder.adapter self.configuration.faraday.fetch(:adapter, :net_http)
  end
    
  case method
    when :get
      connection.get do |request|
        request.params  =   params if params && !params.empty?
      end&.body
    when :post
      connection.post do |request|
        request.body    =   data
        request.params  =   params if params && !params.empty?
      end&.body
  end
end
to_uri(path) click to toggle source
# File lib/bibox/rest/client.rb, line 39
def to_uri(path)
  "#{self.url}#{path}"
end