open-meteo 0.3.1 → 0.3.3

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: f89e15f29bfd187c332d5543477221061804b3a03e7a9773adebc62639284ab3
4
- data.tar.gz: e2fd0e2e6c3b78a5448101ad8982da048e3532e4cb6089cfdc5b614d350184b5
3
+ metadata.gz: df57745eac4454ef8165b7e202ac8b794ffa21e4e91f3a2888245fae72c2247d
4
+ data.tar.gz: a94961154f9f325b5194956236fe2153071d91711a194eabcf9b8968766183ba
5
5
  SHA512:
6
- metadata.gz: e9e564dff02d8e28c5a3c45ef418b901da1dc5dc565231dd9608e8d0c02b8d1b340341d89ce2af7dcf7bec7f631cf38e4460a472d33cdcbec90cc5628767ef1d
7
- data.tar.gz: f32d7c9de50a39a420aa64e8a7962f3c2fdf27f1bb04e5e86a0e2170077803ca9d31a14904fb0c839c3ef0f511e41d25667f90473501c2746f6beab717f980db
6
+ metadata.gz: b3bc0b7c5530498b4a099503665e29c6f582aa4453a3bd564b612fa346ae56a18173f19e7a53677ba811015604a77eaaf408dbb52fde980afc6b887501843e22
7
+ data.tar.gz: f35900d202b03f878497d260ec54f6293f595a33848182b9ad106b587f60421124c9aa9b079605d4b62e4071743c883fa7dea3861354d98fe8502cb011700fb3
@@ -5,17 +5,17 @@ module OpenMeteo
5
5
  class UrlBuilder
6
6
  API_PATHS = { forecast: "v1/forecast", forecast_dwd_icon: "v1/dwd-icon" }.freeze
7
7
 
8
- attr_reader :api_config
8
+ attr_reader :config
9
9
 
10
- def initialize(api_config: OpenMeteo::Client::Config.new)
11
- @api_config = api_config
10
+ def initialize(config: OpenMeteo::Client::Config.new)
11
+ @config = config
12
12
  end
13
13
 
14
- def build_url(endpoint, *args)
14
+ def build_url(endpoint, path_params = {})
15
15
  relative_path = API_PATHS.fetch(endpoint.to_sym)
16
- full_path = [api_config.url, relative_path].join("/")
16
+ full_path = [config.url, relative_path].join("/")
17
17
 
18
- URI::DEFAULT_PARSER.escape(format(full_path, args))
18
+ URI::DEFAULT_PARSER.escape(format(full_path, path_params))
19
19
  end
20
20
  end
21
21
  end
@@ -11,23 +11,23 @@ module OpenMeteo
11
11
  class Timeout < StandardError
12
12
  end
13
13
 
14
- attr_reader :api_config, :agent
14
+ attr_reader :config, :agent
15
15
 
16
16
  def initialize(
17
- api_config: OpenMeteo::Client::Config.new,
18
- url_builder: nil,
19
- agent: FaradayConnection.new.connect
17
+ config: OpenMeteo::Client::Config.new,
18
+ url_builder: UrlBuilder.new(config:),
19
+ agent: FaradayConnection.new(config:)
20
20
  )
21
- @api_config = api_config
22
- @url_builder = url_builder || UrlBuilder.new(api_config:)
21
+ @config = config
22
+ @url_builder = url_builder
23
23
  @agent = agent
24
24
  end
25
25
 
26
- def get(endpoint_name, *endpoint_args, **get_params)
27
- endpoint = url_builder.build_url(endpoint_name, *endpoint_args)
26
+ def get(endpoint_name, path_params: {}, query_params: {})
27
+ endpoint = url_builder.build_url(endpoint_name, path_params)
28
28
 
29
- agent.get do |request|
30
- request.params = get_params.merge({ apikey: api_config.api_key }.compact)
29
+ agent.connect.get do |request|
30
+ request.params = query_params.merge({ apikey: config.api_key }.compact)
31
31
  request.url(endpoint)
32
32
  end
33
33
  rescue Faraday::ConnectionFailed => e
@@ -12,7 +12,7 @@ module OpenMeteo
12
12
  OpenMeteo::Entities::Contracts::LocationContract.validate!(to_hash)
13
13
  end
14
14
 
15
- def to_get_params
15
+ def to_query_params
16
16
  { latitude:, longitude: }
17
17
  end
18
18
  end
@@ -20,6 +20,7 @@ module OpenMeteo
20
20
  conn.options[:open_timeout] = config.timeouts[:open_timeout]
21
21
 
22
22
  conn.request :retry, RETRY_OPTIONS
23
+ conn.response :logger, config.logger
23
24
  end
24
25
  end
25
26
  end
@@ -25,15 +25,18 @@ module OpenMeteo
25
25
  :models,
26
26
  OpenMeteo::Types::Strict::Array.of(OpenMeteo::Types::Strict::Symbol).default([].freeze),
27
27
  )
28
+ attribute(:timezone, OpenMeteo::Types::Strict::String.optional.default(nil))
28
29
 
29
- def to_get_params
30
- get_params = {}
30
+ def to_query_params
31
+ query_params = {}
31
32
 
32
33
  %i[current minutely_15 hourly daily models].each do |key|
33
- get_params[key] = send(key).join(",") if send(key) != []
34
+ query_params[key] = send(key).join(",") if send(key) != []
34
35
  end
35
36
 
36
- get_params
37
+ %i[timezone].each { |key| query_params[key] = send(key) if send(key) }
38
+
39
+ query_params
37
40
  end
38
41
  end
39
42
  end
@@ -12,7 +12,11 @@ module OpenMeteo
12
12
  class WrongLocationType < StandardError
13
13
  end
14
14
 
15
- def initialize(client: OpenMeteo::Client.new, response_wrapper: OpenMeteo::ResponseWrapper.new)
15
+ def initialize(
16
+ config: OpenMeteo::Client::Config.new,
17
+ client: OpenMeteo::Client.new(config:),
18
+ response_wrapper: OpenMeteo::ResponseWrapper.new(config:)
19
+ )
16
20
  @client = client
17
21
  @response_wrapper = response_wrapper
18
22
  end
@@ -53,8 +57,8 @@ module OpenMeteo
53
57
  end
54
58
 
55
59
  def get_forecast(endpoint, location, variables)
56
- get_params = { **location.to_get_params, **variables.to_get_params }
57
- response = client.get(endpoint, **get_params)
60
+ query_params = { **location.to_query_params, **variables.to_query_params }
61
+ response = client.get(endpoint, query_params:)
58
62
 
59
63
  @response_wrapper.wrap(response, entity: OpenMeteo::Entities::Forecast)
60
64
  end
@@ -3,6 +3,8 @@ module OpenMeteo
3
3
  # Wrap the JSON body response from the OpenMeteo request.
4
4
  #
5
5
  class ResponseWrapper
6
+ attr_reader :config
7
+
6
8
  def initialize(config: OpenMeteo::Client::Config.new)
7
9
  @config = config
8
10
  end
@@ -1,3 +1,3 @@
1
1
  module OpenMeteo
2
- VERSION = "0.3.1".freeze
2
+ VERSION = "0.3.3".freeze
3
3
  end
data/lib/open_meteo.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "open_meteo/faraday_connection"
1
2
  require "open_meteo/types"
2
3
  require "open_meteo/configuration"
3
4
  require "open_meteo/entities/location"
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.1
4
+ version: 0.3.3
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-03-08 00:00:00.000000000 Z
11
+ date: 2024-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-struct