Class: AILabTools::Requester
- Inherits:
-
Object
- Object
- AILabTools::Requester
- Defined in:
- lib/ailabtools/requester.rb
Instance Method Summary collapse
-
#initialize(api_key:, base_url: "https://www.ailabapi.com", timeout: 120) ⇒ Requester
constructor
A new instance of Requester.
- #request(method, path, params, response_class) ⇒ Object
Constructor Details
#initialize(api_key:, base_url: "https://www.ailabapi.com", timeout: 120) ⇒ Requester
Returns a new instance of Requester.
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.}" end |