Class: OpenMeteo::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/open_meteo/client.rb,
lib/open_meteo/client/config.rb,
lib/open_meteo/client/url_builder.rb

Overview

The client that makes the actual requests to the OpenMeteo API.

Defined Under Namespace

Classes: Config, ConnectionFailed, Timeout, UrlBuilder

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_config: OpenMeteo::Client::Config.new, url_builder: nil, agent: FaradayConnection.new.connect) ⇒ Client

Returns a new instance of Client.



16
17
18
19
20
21
22
23
24
# File 'lib/open_meteo/client.rb', line 16

def initialize(
  api_config: OpenMeteo::Client::Config.new,
  url_builder: nil,
  agent: FaradayConnection.new.connect
)
  @api_config = api_config
  @url_builder = url_builder || UrlBuilder.new(api_config:)
  @agent = agent
end

Instance Attribute Details

#agentObject (readonly)

Returns the value of attribute agent.



14
15
16
# File 'lib/open_meteo/client.rb', line 14

def agent
  @agent
end

#api_configObject (readonly)

Returns the value of attribute api_config.



14
15
16
# File 'lib/open_meteo/client.rb', line 14

def api_config
  @api_config
end

Instance Method Details

#get(endpoint_name, *endpoint_args, **get_params) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/open_meteo/client.rb', line 26

def get(endpoint_name, *endpoint_args, **get_params)
  endpoint = url_builder.build_url(endpoint_name, *endpoint_args)

  agent.get do |request|
    request.params = get_params.merge({ apikey: api_config.api_key }.compact)
    request.url(endpoint)
  end
rescue Faraday::ConnectionFailed => e
  raise ConnectionFailed, "Could not connect to OpenMeteo API: #{e.message}"
rescue Faraday::TimeoutError
  raise Timeout, "Timeout error from the OpenMeteo API"
end