Class: Komtet::Transport

Inherits:
Object
  • Object
show all
Defined in:
lib/komtet/transport.rb

Defined Under Namespace

Classes: RequestSignatureMiddleware

Constant Summary collapse

DEFAULT_API_URL =
'https://kassa.komtet.ru/api/shop/v1/'

Instance Method Summary collapse

Constructor Details

#initialize(api_url, credentials) ⇒ Transport

Returns a new instance of Transport.



27
28
29
30
# File 'lib/komtet/transport.rb', line 27

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

Instance Method Details

#post_task(content, queue_id = @credentials.queue_id) ⇒ Object

Raises:

  • (ArgumentError)


43
44
45
46
47
48
# File 'lib/komtet/transport.rb', line 43

def post_task(content, queue_id=@credentials.queue_id)
  raise ArgumentError, "queue_id is not integer" unless queue_id.is_a?(Integer)
  res = transport.post("queues/#{queue_id}/task", content)
  raise "non success: #{res.status}: #{res.body}" unless res.success?
  res.body
end

#queue_status(queue_id = @credentials.queue_id) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/komtet/transport.rb', line 56

def queue_status(queue_id=@credentials.queue_id)
  res = transport.get("queues/#{ queue_id }")
  # {"id"=>6395, "state"=>"active"} (либо passive)
  # либо 403 {"title"=>"Ошибка авторизации", "description"=>"Проверьте...", "code"=>"AUT00"}

  if res.success?
    return res.body["state"]
  elsif res.status == 403
    return 'access_denied'
  else
    raise "non success: #{res.status}: #{res.body}"
  end
end

#task_result(task_id) ⇒ Object



50
51
52
53
54
# File 'lib/komtet/transport.rb', line 50

def task_result(task_id)
  res = transport.get("tasks/#{task_id}")
  raise "non success: #{res.status}: #{res.body}" unless res.success?
  res.body
end

#transportObject



32
33
34
35
36
37
38
39
40
41
# File 'lib/komtet/transport.rb', line 32

def transport
  @transport ||= Faraday.new(url: @api_url) do |conn|
    conn.headers['User-Agent'] = "KomtetRuby/#{Komtet::VERSION}"
    conn.headers['Accept'] = "application/json"
    conn.request(:json)
    conn.use(RequestSignatureMiddleware, @credentials)
    conn.response :json, content_type: /\bjson$/
    conn.adapter(Faraday.default_adapter)
  end
end