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(config: OpenMeteo::Client::Config.new, url_builder: UrlBuilder.new(config:), agent: FaradayConnection.new(config:)) ⇒ 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(
  config: OpenMeteo::Client::Config.new,
  url_builder: UrlBuilder.new(config:),
  agent: FaradayConnection.new(config:)
)
  @config = config
  @url_builder = url_builder
  @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

#configObject (readonly)

Returns the value of attribute config.



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

def config
  @config
end

Instance Method Details

#get(endpoint_name, path_params: {}, query_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, path_params: {}, query_params: {})
  endpoint = url_builder.build_url(endpoint_name, path_params)

  agent.connect.get do |request|
    request.params = query_params.merge({ apikey: 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