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