Class: AILabTools::Requester

Inherits:
Object
  • Object
show all
Defined in:
lib/ailabtools/requester.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_key:, base_url: "https://www.ailabapi.com", timeout: 120) ⇒ Requester

Returns a new instance of Requester.

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
# File 'lib/ailabtools/requester.rb', line 10

def initialize(api_key:, base_url: "https://www.ailabapi.com", timeout: 120)
  raise ArgumentError, "AILabTools API key must not be empty" if api_key.nil? || api_key.empty?

  @api_key = api_key
  @base_url = base_url.sub(%r{/+\z}, "")
  @timeout = timeout
end

Instance Method Details

#request(method, path, params, response_class) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ailabtools/requester.rb', line 18

def request(method, path, params, response_class)
  uri = URI(@base_url + "/" + path.sub(%r{\A/+}, ""))
  query = params.query_fields
  uri.query = URI.encode_www_form(stringify_hash(query)) unless query.empty?

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = uri.scheme == "https"
  http.open_timeout = @timeout
  http.read_timeout = @timeout
  http.write_timeout = @timeout if http.respond_to?(:write_timeout=)

  request = build_request(method, uri, params.body_fields)
  request["ailabapi-api-key"] = @api_key
  response = http.request(request)
  parse_response(response, response_class)
rescue APIError
  raise
rescue StandardError => e
  raise SDKError, "AILabTools request failed: #{e.message}"
end