class ABBYY::Cloud::Connection

Attributes

root[R]

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/abbyy/cloud/connection.rb, line 30
def initialize(*)
  super
  @root = URI("https://api.abbyy.cloud").tap { |obj| obj.scheme = "https" }
end

Public Instance Methods

call(http_method, path, body: nil, **options) click to toggle source
# File lib/abbyy/cloud/connection.rb, line 16
def call(http_method, path, body: nil, **options)
  uri = prepare_uri(path, options)
  req = Net::HTTP.const_get(http_method.capitalize).new(uri)
  req.body = body
  setup_headers(req, options)

  res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
    http.request(req)
  end
  handle_response(res)
end

Private Instance Methods

handle_response(response) click to toggle source
# File lib/abbyy/cloud/connection.rb, line 48
def handle_response(response)
  raise ResponseError.new(response) unless response.is_a? Net::HTTPSuccess
  response.body
end
prepare_uri(path, query: nil, **) click to toggle source
# File lib/abbyy/cloud/connection.rb, line 35
def prepare_uri(path, query: nil, **)
  uri   = root.merge(path)
  query = query.to_h.map { |k, v| "#{k}=#{v}" if v }.compact.join("&")
  uri.query = query unless query.empty?
  uri
end
setup_headers(req, headers: nil, **) click to toggle source
# File lib/abbyy/cloud/connection.rb, line 42
def setup_headers(req, headers: nil, **)
  req.basic_auth id, token
  req["accept-charset"] = "utf-8"
  headers.to_h.each { |key, value| req[key.to_s] = value }
end