Class: OpenMeteo::Client
- Inherits:
-
Object
- Object
- OpenMeteo::Client
- 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
-
#agent ⇒ Object
readonly
Returns the value of attribute agent.
-
#config ⇒ Object
readonly
Returns the value of attribute config.
Instance Method Summary collapse
- #get(endpoint_name, path_params: {}, query_params: {}) ⇒ Object
-
#initialize(config: OpenMeteo::Client::Config.new, url_builder: UrlBuilder.new(config:), agent: FaradayConnection.new(config:)) ⇒ Client
constructor
A new instance of Client.
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
#agent ⇒ Object (readonly)
Returns the value of attribute agent.
14 15 16 |
# File 'lib/open_meteo/client.rb', line 14 def agent @agent end |
#config ⇒ Object (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 |