Skip to content

Commit e614839

Browse files
committed
Client: Improve query params
Adds better handling of query parameters using HTTParty instead of manually. Fills in the gaps in the supported WeatherKit query params.
1 parent a3af0cb commit e614839

File tree

1 file changed

+32
-8
lines changed

1 file changed

+32
-8
lines changed

lib/tenkit/client.rb

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,21 @@ def initialize
2323
Tenkit.config.validate!
2424
end
2525

26-
def availability(lat, lon, country: 'US')
27-
get("/availability/#{lat}/#{lon}?country=#{country}")
26+
def availability(lat, lon, **options)
27+
options[:country] ||= 'US'
28+
29+
query = { country: options[:country] }
30+
get("/availability/#{lat}/#{lon}", query)
2831
end
2932

30-
def weather(lat, lon, data_sets: [:current_weather], language: 'en')
31-
path_root = "/weather/#{language}/#{lat}/#{lon}?dataSets="
32-
path = path_root + data_sets.map { |ds| DATA_SETS[ds] }.compact.join(',')
33-
response = get(path)
33+
def weather(lat, lon, **options)
34+
options[:data_sets] ||= [:current_weather]
35+
options[:language] ||= 'en'
36+
37+
query = weather_query_for_options(options)
38+
path = "/weather/#{options[:language]}/#{lat}/#{lon}"
39+
40+
response = get(path, query)
3441
WeatherResponse.new(response)
3542
end
3643

@@ -42,9 +49,11 @@ def weather_alert(id, language: 'en')
4249

4350
private
4451

45-
def get(url)
52+
def get(url, query: nil)
4653
headers = { Authorization: "Bearer #{token}" }
47-
self.class.get(url, { headers: headers })
54+
payload = { headers: headers, query: query.compact }
55+
56+
self.class.get(url, payload)
4857
end
4958

5059
def header
@@ -71,5 +80,20 @@ def key
7180
def token
7281
JWT.encode payload, key, 'ES256', header
7382
end
83+
84+
def weather_query_for_options(options)
85+
data_sets_param = options[:data_sets].map { |ds| DATA_SETS[ds] }.compact.join(',')
86+
87+
{
88+
countryCode: options[:country_code],
89+
currentAsOf: options[:current_as_of],
90+
dailyEnd: options[:daily_end],
91+
dailyStart: options[:daily_start],
92+
dataSets: data_sets_param,
93+
hourlyEnd: options[:hourly_end],
94+
hourlyStart: options[:hourly_start],
95+
timezone: options[:timezone]
96+
}
97+
end
7498
end
7599
end

0 commit comments

Comments
 (0)