open-meteo 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f33676766f8b3c6bb0e373337e836eafe3cc8d7d4d2f0ee17a5cd397768592e8
4
- data.tar.gz: 928328683daf2420bd23852cff7aa08ca71ffc637050dd2df5a77aa072729ac0
3
+ metadata.gz: f89e15f29bfd187c332d5543477221061804b3a03e7a9773adebc62639284ab3
4
+ data.tar.gz: e2fd0e2e6c3b78a5448101ad8982da048e3532e4cb6089cfdc5b614d350184b5
5
5
  SHA512:
6
- metadata.gz: 85d8aef77f27747a258b26e54eece4a092843bf7bb5f5b852c4d85246e56ae94bfeb902219edf78b3501fe266e741ed6d4e8a4bb8928c39ae00be8a56bfa9479
7
- data.tar.gz: bcd21c77a39fdc3bd8f30b2ef8f003ec52d68725b5f664852086f995ad620ad2ae804eb5c6605874e29a7c5de986aacd54b498c35d4d0be90a9cd3c45790ab7d
6
+ metadata.gz: e9e564dff02d8e28c5a3c45ef418b901da1dc5dc565231dd9608e8d0c02b8d1b340341d89ce2af7dcf7bec7f631cf38e4460a472d33cdcbec90cc5628767ef1d
7
+ data.tar.gz: f32d7c9de50a39a420aa64e8a7962f3c2fdf27f1bb04e5e86a0e2170077803ca9d31a14904fb0c839c3ef0f511e41d25667f90473501c2746f6beab717f980db
@@ -3,12 +3,13 @@ module OpenMeteo
3
3
  ##
4
4
  # The configuration for the OpenMeteo::Client.
5
5
  class Config
6
- attr_reader :api_key, :host, :logger
6
+ attr_reader :api_key, :host, :logger, :timeouts
7
7
 
8
- def initialize(api_key: nil, host: nil, logger: nil)
8
+ def initialize(api_key: nil, host: nil, logger: nil, timeouts: nil)
9
9
  @api_key = api_key || OpenMeteo.configuration.api_key
10
10
  @host = host || OpenMeteo.configuration.host
11
11
  @logger = logger || OpenMeteo.configuration.logger
12
+ @timeouts = timeouts || OpenMeteo.configuration.timeouts
12
13
  end
13
14
 
14
15
  def url
@@ -1,6 +1,4 @@
1
- require "faraday"
2
- require "faraday/retry"
3
-
1
+ require_relative "faraday_connection"
4
2
  require_relative "client/config"
5
3
  require_relative "client/url_builder"
6
4
 
@@ -13,15 +11,16 @@ module OpenMeteo
13
11
  class Timeout < StandardError
14
12
  end
15
13
 
16
- # See https://github.com/lostisland/faraday-retry/tree/main#usage
17
- RETRY_OPTIONS = { max: 3, interval: 0.05, interval_randomness: 0.5, backoff_factor: 3 }.freeze
18
-
19
14
  attr_reader :api_config, :agent
20
15
 
21
- def initialize(api_config: OpenMeteo::Client::Config.new, url_builder: nil, agent: nil)
16
+ def initialize(
17
+ api_config: OpenMeteo::Client::Config.new,
18
+ url_builder: nil,
19
+ agent: FaradayConnection.new.connect
20
+ )
22
21
  @api_config = api_config
23
22
  @url_builder = url_builder || UrlBuilder.new(api_config:)
24
- @agent = agent || Faraday.new { |f| f.request :retry, RETRY_OPTIONS }
23
+ @agent = agent
25
24
  end
26
25
 
27
26
  def get(endpoint_name, *endpoint_args, **get_params)
@@ -28,5 +28,6 @@ module OpenMeteo
28
28
  add_setting :logger, -> { Logger.new($stdout) }
29
29
  add_setting :host, "api.open-meteo.com"
30
30
  add_setting :api_key, -> { ENV.fetch("OPEN_METEO_API_KEY", nil) }
31
+ add_setting :timeouts, -> { { timeout: 5, open_timeout: 5 } }
31
32
  end
32
33
  end
@@ -0,0 +1,26 @@
1
+ require "faraday"
2
+ require "faraday/retry"
3
+
4
+ module OpenMeteo
5
+ ##
6
+ # The Faraday connection
7
+ class FaradayConnection
8
+ # See https://github.com/lostisland/faraday-retry/tree/main#usage
9
+ RETRY_OPTIONS = { max: 3, interval: 0.05, interval_randomness: 0.5, backoff_factor: 3 }.freeze
10
+
11
+ attr_reader :config
12
+
13
+ def initialize(config: OpenMeteo::Client::Config.new)
14
+ @config = config
15
+ end
16
+
17
+ def connect
18
+ Faraday.new do |conn|
19
+ conn.options[:timeout] = config.timeouts[:timeout]
20
+ conn.options[:open_timeout] = config.timeouts[:open_timeout]
21
+
22
+ conn.request :retry, RETRY_OPTIONS
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module OpenMeteo
2
- VERSION = "0.3.0".freeze
2
+ VERSION = "0.3.1".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: open-meteo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Morgenstern
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-24 00:00:00.000000000 Z
11
+ date: 2024-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-struct
@@ -113,6 +113,7 @@ files:
113
113
  - lib/open_meteo/entities/forecast/units.rb
114
114
  - lib/open_meteo/entities/location.rb
115
115
  - lib/open_meteo/errors.rb
116
+ - lib/open_meteo/faraday_connection.rb
116
117
  - lib/open_meteo/forecast.rb
117
118
  - lib/open_meteo/forecast/variables.rb
118
119
  - lib/open_meteo/response_wrapper.rb