Class: IcAgent::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/ic_agent/client.rb

Constant Summary collapse

DEFAULT_TIMEOUT =
120
DEFAULT_TIMEOUT_QUERY =
30

Instance Method Summary collapse

Constructor Details

#initialize(url = 'https://ic0.app') ⇒ Client

Returns a new instance of Client.



8
9
10
11
12
13
14
15
16
17
# File 'lib/ic_agent/client.rb', line 8

def initialize(url = 'https://ic0.app')
  @url = url
  @conn = Faraday.new(url: url) do |faraday|
    faraday.request :url_encoded
    faraday.adapter Faraday.default_adapter
    faraday.headers['Content-Type'] = 'application/cbor'
    faraday.options.timeout = DEFAULT_TIMEOUT
    faraday.options.open_timeout = DEFAULT_TIMEOUT_QUERY
  end
end

Instance Method Details

#call(canister_id, req_id, data) ⇒ Object



26
27
28
29
30
31
# File 'lib/ic_agent/client.rb', line 26

def call(canister_id, req_id, data)
  endpoint = "/api/v2/canister/#{canister_id}/call"
  ret = @conn.post(endpoint, data)
  ret.body.force_encoding('ISO-8859-1').encode('UTF-8')
  req_id
end

#query(canister_id, data) ⇒ Object



19
20
21
22
23
24
# File 'lib/ic_agent/client.rb', line 19

def query(canister_id, data)
  endpoint = "/api/v2/canister/#{canister_id}/query"
  ret = @conn.post(endpoint, data)
  ret.body.force_encoding('ISO-8859-1').encode('UTF-8')
  ret.body
end

#read_state(canister_id, data) ⇒ Object



33
34
35
36
37
38
# File 'lib/ic_agent/client.rb', line 33

def read_state(canister_id, data)
  endpoint = "/api/v2/canister/#{canister_id}/read_state"
  ret = @conn.post(endpoint, data)
  ret.body.force_encoding('ISO-8859-1').encode('UTF-8')
  ret.body
end

#status(timeout: DEFAULT_TIMEOUT_QUERY) ⇒ Object



40
41
42
43
44
45
# File 'lib/ic_agent/client.rb', line 40

def status(timeout: DEFAULT_TIMEOUT_QUERY)
  endpoint = '/api/v2/status'
  ret = @conn.get(endpoint, timeout: timeout)
  puts "client.status: #{ret.body.force_encoding('ISO-8859-1').encode('UTF-8')}"
  ret.body
end