Class: Orchard::API::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/orchard/api/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params, request_configurations) ⇒ Base

Returns a new instance of Base.



6
7
8
9
10
11
12
# File 'lib/orchard/api/base.rb', line 6

def initialize(params, request_configurations)
  @payload = params[:payload]
  @client_token = params[:client_token]
  @secret_token = params[:secret_token]
  @connection = params[:connection]
  @timeout = request_configurations[:timeout] || 30
end

Class Method Details

.call(params, request_configurations) ⇒ Object



14
15
16
# File 'lib/orchard/api/base.rb', line 14

def self.call(params, request_configurations)
  new(params, request_configurations).call
end

Instance Method Details

#compute_signatureObject



18
19
20
21
# File 'lib/orchard/api/base.rb', line 18

def compute_signature
  digest = OpenSSL::Digest.new("sha256")
  OpenSSL::HMAC.hexdigest(digest, @secret_token.to_s, @payload.to_json)
end

#error_response(error) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/orchard/api/base.rb', line 40

def error_response(error)
  {
    "res_code" => "999",
    "res_desc" => @response&.reason_phrase,
    "error_message" => error.message,
    "error_class" => error.class
  }
end

#make_request(method) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/orchard/api/base.rb', line 23

def make_request(method)
  @response = @connection.send(method) do |request|
    request.url @endpoint
    request.options.timeout = @timeout
    request["Authorization"] = "#{@client_token}:#{compute_signature}"
    if method.eql?(:get)
      request.params = @payload
    else
      request.body = @payload.to_json
    end
  end

  JSON.parse(@response.body)
rescue StandardError => e
  error_response(e)
end