open-meteo 0.3.1 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
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