Class: ForestAdminDatasourceRpc::Utils::RpcClient

Inherits:
Object
  • Object
show all
Defined in:
lib/forest_admin_datasource_rpc/Utils/rpc_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_url, auth_secret) ⇒ RpcClient

Returns a new instance of RpcClient.



9
10
11
12
# File 'lib/forest_admin_datasource_rpc/Utils/rpc_client.rb', line 9

def initialize(api_url, auth_secret)
  @api_url = api_url
  @auth_secret = auth_secret
end

Instance Method Details

#call_rpc(endpoint, method: :get, payload: nil, symbolize_keys: false) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/forest_admin_datasource_rpc/Utils/rpc_client.rb', line 14

def call_rpc(endpoint, method: :get, payload: nil, symbolize_keys: false)
  client = Faraday.new(url: @api_url) do |faraday|
    faraday.request :json
    faraday.response :json, parser_options: { symbolize_names: symbolize_keys }
    faraday.adapter Faraday.default_adapter
    faraday.ssl.verify = !ForestAdminRpcAgent::Facades::Container.cache(:debug)
  end

  timestamp = Time.now.utc.iso8601
  signature = generate_signature(timestamp)

  headers = {
    'Content-Type' => 'application/json',
    'X_TIMESTAMP' => timestamp,
    'X_SIGNATURE' => signature
  }

  response = client.send(method, endpoint, payload, headers)

  handle_response(response)
end