Sha256: f015f334fd7afd813456c3cfc2045c3939ff13169b225a219a22e9438101eda3

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

require "espago/api_connection"
require "espago/response"

module Espago
  class Client
    attr_accessor :public_key, :app_id, :app_password, :api_version, :production, :checksum_key
    NotAuthenticated = Class.new(StandardError)

    def initialize(options = {})
      @public_key, @app_id, @app_password, @api_version, @checksum_key = options.values_at( :public_key, :app_id, :app_password, :api_version, :checksum_key)
      @connection = options[:connection] || ApiConnection
    end

    def send_request(path, method, params = {})
      
      app_id = params[:app_id].present? ?  params.delete(:app_id) : @app_id
      app_password = params[:app_password].present? ? params.delete(:app_password) : @app_password 
      production_param = !params[:production].nil? ? params.delete(:production) : production 
      
      raise NotAuthenticated unless valid?(app_id, app_password)
      
      connection = @connection.new(enviroment(production_param),api_version_header)
      connection.authenticate(app_id, app_password)
      connection.create(path, method, params)
    end

    def parse_response(request)
      Response.new(request)
    end

    private
    def enviroment(production_param)
      # "http://127.0.0.1:3007/api"
      production_param ? "https://secure.espago.com/api" : "https://sandbox.espago.com/api"
    end

    def api_version_header
      if @api_version.to_f.to_s == '3.0'
        {'Accept' => "application/vnd.espago.v3+json"}
      else
        {'Accept' => "application/vnd.espago.v2+json"}
      end
    end

    def valid?(app_id, app_password)
      app_id && app_password
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
espago-0.1.8 lib/espago/client.rb