owmo 2.0.1 → 2.0.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 +5 -5
- data/.github/workflows/ruby-publish-gem.yml +22 -0
- data/.github/workflows/ruby.yml +38 -0
- data/Gemfile +4 -0
- data/Rakefile +6 -4
- data/bin/console +4 -3
- data/examples/current.rb +6 -5
- data/examples/current_box.rb +4 -2
- data/examples/current_circle.rb +4 -2
- data/examples/current_group.rb +5 -3
- data/examples/forecast16.rb +6 -6
- data/examples/forecast5.rb +6 -6
- data/examples/query_all.rb +4 -2
- data/examples/query_geocode.rb +9 -7
- data/examples/query_mode.rb +7 -5
- data/examples/query_units.rb +6 -4
- data/examples/sinatra_example.rb +5 -4
- data/lib/core_extensions/net/http_response/weather_response.rb +30 -36
- data/lib/owmo/version.rb +5 -6
- data/lib/owmo/weather.rb +73 -89
- data/lib/owmo.rb +25 -29
- data/owmo.gemspec +16 -13
- metadata +12 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b7e4b64ccdb32db93f751f28f7c07923244770d68eda25301b1939ac21de38bb
|
4
|
+
data.tar.gz: f67520f2b29f4bbf95f0bef27a60827fd1f04906ab2fa72da49a7ebefc834f3f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e072a5ccce24a3c24032b5d88141feabe29806e6f1825c21700b751b5a9b91e3f43e9218cbed9bcd0a095b9335115979da775374d7093ec46059a51185cff42a
|
7
|
+
data.tar.gz: 1cd83a94eec07bfcb4d9a96d0a087395fea3b7f4a227cc8665bad66175a9fc4738d3c3813c25db1967768db2a7e32d8488fa857282b957cc1b43dc8bf2cb6e39
|
@@ -0,0 +1,22 @@
|
|
1
|
+
name: Publish Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- "*"
|
7
|
+
tags:
|
8
|
+
- v*
|
9
|
+
jobs:
|
10
|
+
build:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
|
13
|
+
steps:
|
14
|
+
- uses: actions/checkout@v3
|
15
|
+
|
16
|
+
- name: Release Gem
|
17
|
+
if: contains(github.ref, 'refs/tags/v')
|
18
|
+
uses: cadwallion/publish-rubygems-action@master
|
19
|
+
env:
|
20
|
+
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
21
|
+
RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
|
22
|
+
RELEASE_COMMAND: rake release
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ "main" ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ "main" ]
|
15
|
+
|
16
|
+
permissions:
|
17
|
+
contents: read
|
18
|
+
|
19
|
+
jobs:
|
20
|
+
test:
|
21
|
+
|
22
|
+
runs-on: ubuntu-latest
|
23
|
+
strategy:
|
24
|
+
matrix:
|
25
|
+
ruby-version: ['2.7', '3.0']
|
26
|
+
|
27
|
+
steps:
|
28
|
+
- uses: actions/checkout@v3
|
29
|
+
- name: Set up Ruby
|
30
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
31
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
32
|
+
# uses: ruby/setup-ruby@v1
|
33
|
+
uses: ruby/setup-ruby@ee2113536afb7f793eed4ce60e8d3b26db912da4 # v1.127.0
|
34
|
+
with:
|
35
|
+
ruby-version: ${{ matrix.ruby-version }}
|
36
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
37
|
+
- name: Run tests
|
38
|
+
run: bundle exec rake
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
|
2
|
-
require "rspec/core/rake_task"
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
3
|
+
require 'bundler/gem_tasks'
|
4
|
+
require 'rspec/core/rake_task'
|
5
5
|
|
6
|
-
|
6
|
+
RSpec::Core::RakeTask.new :spec
|
7
|
+
|
8
|
+
task default: :spec
|
data/bin/console
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
-
require
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'owmo'
|
5
6
|
|
6
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
8
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +11,5 @@ require "owmo"
|
|
10
11
|
# require "pry"
|
11
12
|
# Pry.start
|
12
13
|
|
13
|
-
require
|
14
|
+
require 'irb'
|
14
15
|
IRB.start(__FILE__)
|
data/examples/current.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'owmo'
|
2
4
|
|
3
|
-
|
4
|
-
An example on how to get current conditions and use the different parameters.
|
5
|
-
=
|
6
|
-
api_key = ""
|
5
|
+
# rdoc
|
6
|
+
# An example on how to get current conditions and use the different parameters.
|
7
|
+
api_key = ''
|
7
8
|
|
8
9
|
weather = OWMO::Weather.new api_key
|
9
10
|
|
10
11
|
# http://openweathermap.org/current#data
|
11
|
-
current = weather.get :current, city_name:
|
12
|
+
current = weather.get :current, city_name: 'London,UK'
|
12
13
|
|
13
14
|
puts current
|
data/examples/current_box.rb
CHANGED
data/examples/current_circle.rb
CHANGED
data/examples/current_group.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'owmo'
|
2
4
|
|
3
|
-
api_key =
|
5
|
+
api_key = ''
|
4
6
|
|
5
|
-
OWMO
|
6
|
-
puts weather.get :group, id: [
|
7
|
+
OWMO.weather(api_key) do |weather|
|
8
|
+
puts weather.get :group, id: [4_850_751, 4_887_398, 2_643_743, 4_164_138, 5_368_361].join(',')
|
7
9
|
end
|
data/examples/forecast16.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'owmo'
|
3
4
|
|
4
|
-
|
5
|
-
An example on how to get the weather forcast and use the different parameters.
|
6
|
-
=
|
7
|
-
api_key = ""
|
5
|
+
# rdoc
|
6
|
+
# An example on how to get the weather forcast and use the different parameters.
|
7
|
+
api_key = ''
|
8
8
|
|
9
9
|
weather = OWMO::Weather.new api_key
|
10
10
|
|
11
11
|
# http://openweathermap.org/forecast16
|
12
|
-
forecast16 = weather.get :forecast16, city_name:
|
12
|
+
forecast16 = weather.get :forecast16, city_name: 'London,UK'
|
13
13
|
|
14
14
|
puts forecast16
|
data/examples/forecast5.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'owmo'
|
3
4
|
|
4
|
-
|
5
|
-
An example on how to get the extended forcast and use the different parameters.
|
6
|
-
=
|
7
|
-
api_key = ""
|
5
|
+
# rdoc
|
6
|
+
# An example on how to get the extended forcast and use the different parameters.
|
7
|
+
api_key = ''
|
8
8
|
|
9
9
|
weather = OWMO::Weather.new api_key
|
10
10
|
|
11
11
|
# http://openweathermap.org/forecast5
|
12
|
-
forecast5 = weather.get :forecast5, city_name:
|
12
|
+
forecast5 = weather.get :forecast5, city_name: 'London,UK'
|
13
13
|
|
14
14
|
puts forecast5
|
data/examples/query_all.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'owmo'
|
2
4
|
|
3
|
-
api_key =
|
5
|
+
api_key = ''
|
4
6
|
|
5
7
|
weather = OWMO::Weather.new api_key
|
6
8
|
|
7
9
|
query = {
|
8
|
-
city_name:
|
10
|
+
city_name: 'London,UK', # Geolocation, required
|
9
11
|
mode: 'json', # Return data [json (defaul), xml, html]
|
10
12
|
units: 'imperial', # [imperial, metric, or blank (Default, Kelvin)]
|
11
13
|
lang: 'fr' # Language support
|
data/examples/query_geocode.rb
CHANGED
@@ -1,20 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'owmo'
|
2
4
|
|
3
|
-
api_key =
|
5
|
+
api_key = ''
|
4
6
|
|
5
7
|
weather = OWMO::Weather.new api_key
|
6
8
|
|
7
9
|
# Geocode by City ID
|
8
|
-
puts weather.get :current, city_id:
|
9
|
-
puts weather.get :current, id:
|
10
|
+
puts weather.get :current, city_id: 5_328_041
|
11
|
+
puts weather.get :current, id: 5_328_041
|
10
12
|
|
11
13
|
# Geocode by City Name
|
12
|
-
puts weather.get :current, city_name:
|
13
|
-
puts weather.get :current, q:
|
14
|
+
puts weather.get :current, city_name: 'Beverly Hills'
|
15
|
+
puts weather.get :current, q: 'Beverly Hills'
|
14
16
|
|
15
17
|
# Geocode by Zip Code
|
16
|
-
puts weather.get :current, zip:
|
17
|
-
puts weather.get :current, zip_code:
|
18
|
+
puts weather.get :current, zip: 90_210
|
19
|
+
puts weather.get :current, zip_code: 90_210
|
18
20
|
|
19
21
|
# Geocode by Coordinance
|
20
22
|
puts weather.get :current, lon: -118.41, lat: 34.09
|
data/examples/query_mode.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'owmo'
|
2
4
|
|
3
|
-
api_key =
|
5
|
+
api_key = ''
|
4
6
|
|
5
7
|
weather = OWMO::Weather.new api_key
|
6
8
|
|
7
9
|
# Response in JSON format
|
8
|
-
puts weather.get :current, city_name:
|
9
|
-
puts weather.get :current, city_name:
|
10
|
+
puts weather.get :current, city_name: 'London,UK'
|
11
|
+
puts weather.get :current, city_name: 'London,UK', mode: :json
|
10
12
|
|
11
13
|
# Response in XML format
|
12
|
-
puts weather.get :current, city_name:
|
14
|
+
puts weather.get :current, city_name: 'London,UK', mode: :xml
|
13
15
|
|
14
16
|
# Response in HTML format
|
15
|
-
puts weather.get :current, city_name:
|
17
|
+
puts weather.get :current, city_name: 'London,UK', mode: :html
|
data/examples/query_units.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'owmo'
|
2
4
|
|
3
|
-
api_key =
|
5
|
+
api_key = ''
|
4
6
|
|
5
7
|
weather = OWMO::Weather.new api_key
|
6
8
|
|
7
9
|
# Kelvin
|
8
|
-
puts weather.get :current, city_name:
|
10
|
+
puts weather.get :current, city_name: 'London,UK'
|
9
11
|
|
10
12
|
# Imperial
|
11
|
-
puts weather.get :current, city_name:
|
13
|
+
puts weather.get :current, city_name: 'London,UK', units: :imperial
|
12
14
|
|
13
15
|
# Metric
|
14
|
-
puts weather.get :current, city_name:
|
16
|
+
puts weather.get :current, city_name: 'London,UK', units: :metric
|
data/examples/sinatra_example.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'owmo'
|
2
4
|
require 'sinatra' # Need to install, not included in gemspec
|
3
5
|
require 'uri'
|
4
6
|
|
5
|
-
|
6
7
|
get '/current/:name' do
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
api_key = '<API Key>'
|
9
|
+
weather = OWMO::Weather.new api_key
|
10
|
+
weather.get :current, city_name: params[:name], mode: :html
|
10
11
|
end
|
@@ -1,66 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'json'
|
2
4
|
|
3
5
|
module CoreExtensions
|
4
6
|
module Net
|
5
7
|
module HTTPResponse
|
6
8
|
module WeatherResponse
|
7
|
-
|
8
|
-
|
9
|
-
Returns the weather
|
10
|
-
=end
|
9
|
+
# rdoc
|
10
|
+
# Returns the weather
|
11
11
|
def weather
|
12
12
|
parse_weather
|
13
13
|
@weather
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
Returns the response code
|
18
|
-
=end
|
16
|
+
# rdoc
|
17
|
+
# Returns the response code
|
19
18
|
def weather_code
|
20
19
|
parse_weather
|
21
|
-
return (weather['cod'] ||
|
20
|
+
return (weather['cod'] || '200').to_i if weather.is_a? Hash
|
21
|
+
|
22
22
|
200
|
23
23
|
end
|
24
24
|
|
25
|
-
|
26
|
-
Returns the response message
|
27
|
-
=end
|
25
|
+
# rdoc
|
26
|
+
# Returns the response message
|
28
27
|
def weather_message
|
29
28
|
parse_weather
|
30
29
|
return weather['message'] if weather.is_a? Hash
|
31
|
-
|
30
|
+
|
31
|
+
'None'
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
Returns boolean if the response contains an error or not.
|
36
|
-
|
37
|
-
def has_error?
|
34
|
+
# rdoc
|
35
|
+
# Returns boolean if the response contains an error or not.
|
36
|
+
def error?
|
38
37
|
weather_code != 200
|
39
38
|
end
|
40
39
|
|
41
40
|
private
|
42
41
|
|
43
|
-
|
44
|
-
Sets the weather variable
|
45
|
-
=
|
46
|
-
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
=begin rdoc
|
51
|
-
Attempts to parse the body to JSON. This is so we don't have to continually
|
52
|
-
parse the raw JSON.
|
53
|
-
=end
|
54
|
-
def parse_weather
|
55
|
-
begin
|
56
|
-
# Try to parse the response and return a hash
|
57
|
-
@weather = JSON.parse(self.body)
|
58
|
-
rescue
|
59
|
-
# Return the body string if parsing fails (used for html and xml responses)
|
60
|
-
@weather = self.body
|
61
|
-
end
|
62
|
-
end
|
42
|
+
# rdoc
|
43
|
+
# Sets the weather variable
|
44
|
+
def weather=(weather)
|
45
|
+
@weather = weather if @weather.nil?
|
46
|
+
end
|
63
47
|
|
48
|
+
# rdoc
|
49
|
+
# Attempts to parse the body to JSON. This is so we don't have to continually
|
50
|
+
# parse the raw JSON.
|
51
|
+
def parse_weather
|
52
|
+
# Try to parse the response and return a hash
|
53
|
+
@weather = JSON.parse(body)
|
54
|
+
rescue StandardError
|
55
|
+
# Return the body string if parsing fails (used for html and xml responses)
|
56
|
+
@weather = body
|
57
|
+
end
|
64
58
|
end
|
65
59
|
end
|
66
60
|
end
|
data/lib/owmo/version.rb
CHANGED
data/lib/owmo/weather.rb
CHANGED
@@ -1,31 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'logger'
|
2
4
|
require 'net/http'
|
3
5
|
|
4
6
|
require 'core_extensions/net/http_response/weather_response'
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
Include some weather response info into Net::HTTPResponse
|
9
|
-
=end
|
8
|
+
# rdoc
|
9
|
+
# Include some weather response info into Net::HTTPResponse
|
10
10
|
Net::HTTPResponse.include CoreExtensions::Net::HTTPResponse::WeatherResponse
|
11
11
|
|
12
|
-
|
13
12
|
module OWMO
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
weather
|
22
|
-
puts weather.get :current, city_name: "London,uk"
|
23
|
-
=end
|
13
|
+
# rdoc
|
14
|
+
# A weather class for retrieving current and forecasted weather conditions.
|
15
|
+
# ==== Attributes
|
16
|
+
# * +api_key+ - {OpenWeatherMap.org API key}[http://openweathermap.org/appid]
|
17
|
+
# ==== Examples
|
18
|
+
# api_key = "<My API Key>"
|
19
|
+
# weather = OWMO::Weather.new api_key: api_key
|
20
|
+
# puts weather.get :current, city_name: "London,uk"
|
24
21
|
class Weather
|
25
|
-
|
26
|
-
|
27
|
-
Weather response error to handle errors received from OpenWeatherMap.orgs API
|
28
|
-
=end
|
22
|
+
# rdoc
|
23
|
+
# Weather response error to handle errors received from OpenWeatherMap.orgs API
|
29
24
|
class WeatherResponseError < StandardError
|
30
25
|
def initialize(response)
|
31
26
|
@response = response
|
@@ -33,62 +28,56 @@ Weather response error to handle errors received from OpenWeatherMap.orgs API
|
|
33
28
|
end
|
34
29
|
end
|
35
30
|
|
36
|
-
|
37
|
-
OpenWeatherMap.Org weather API key
|
38
|
-
=end
|
31
|
+
# rdoc
|
32
|
+
# OpenWeatherMap.Org weather API key
|
39
33
|
attr_reader :api_key
|
40
34
|
|
41
|
-
|
42
|
-
Access current or forecasted conditions by (required):
|
43
|
-
=
|
44
|
-
Paths = {
|
35
|
+
# rdoc
|
36
|
+
# Access current or forecasted conditions by (required):
|
37
|
+
PATHS = {
|
45
38
|
current: 'weather', # Current weather data
|
46
39
|
group: 'group', # Current weather w/multiple IDs
|
47
40
|
box: 'box/city', # Current weather w/in a rectangle box
|
48
41
|
circle: 'find', # Current weather w/in a circle
|
49
42
|
forecast5: 'forecast', # 5 day / 3 hour forecast
|
50
43
|
forecast16: 'forecast/daily' # 16 day / daily forecast
|
51
|
-
}
|
44
|
+
}.freeze
|
52
45
|
|
53
|
-
|
54
|
-
Geocode aliases
|
55
|
-
=
|
56
|
-
Geocode_Aliases = {
|
46
|
+
# rdoc
|
47
|
+
# Geocode aliases
|
48
|
+
GEOCODE_ALIASES = {
|
57
49
|
city_name: :q,
|
58
50
|
city_id: :id,
|
59
51
|
zip_code: :zip,
|
60
52
|
latitude: :lat,
|
61
53
|
longitude: :lon,
|
62
54
|
box: :bbox
|
63
|
-
}
|
64
|
-
|
65
|
-
|
66
|
-
Either yeild the class, or instanciate it.
|
67
|
-
==== Attributes
|
68
|
-
* +api_key+ - OpenWEatherMap.Org's weather API key
|
69
|
-
* +**kwargs+ - Any additional paramters
|
70
|
-
|
71
|
-
def initialize(api_key, **kwargs)
|
55
|
+
}.freeze
|
56
|
+
|
57
|
+
# rdoc
|
58
|
+
# Either yeild the class, or instanciate it.
|
59
|
+
# ==== Attributes
|
60
|
+
# * +api_key+ - OpenWEatherMap.Org's weather API key
|
61
|
+
# * +**kwargs+ - Any additional paramters
|
62
|
+
def initialize(api_key, **_kwargs)
|
72
63
|
@api_key = api_key
|
73
64
|
|
74
|
-
|
75
|
-
|
76
|
-
|
65
|
+
return unless block_given?
|
66
|
+
|
67
|
+
yield self
|
77
68
|
end
|
78
69
|
|
79
|
-
|
80
|
-
A weather class for retrieving current and forecasted weather conditions.
|
81
|
-
==== Attributes
|
82
|
-
* +path+ - OWMO::Wether.Path parameter
|
83
|
-
* +query+ - Hash of query options (Geocode, response format, units, etc.)
|
84
|
-
==== Examples
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
=end
|
89
|
-
public
|
90
|
-
def get(path, **query)
|
70
|
+
# rdoc
|
71
|
+
# A weather class for retrieving current and forecasted weather conditions.
|
72
|
+
# ==== Attributes
|
73
|
+
# * +path+ - OWMO::Wether.Path parameter
|
74
|
+
# * +query+ - Hash of query options (Geocode, response format, units, etc.)
|
75
|
+
# ==== Examples
|
76
|
+
# api_key = "<My API Key>"
|
77
|
+
# weather = OWMO::Weather.new api_key: api_key
|
78
|
+
# puts weather.get :current, city_name: "London,uk"
|
91
79
|
|
80
|
+
def get(path, **query)
|
92
81
|
# Format Geocode info
|
93
82
|
query = alias_geocodes(query)
|
94
83
|
|
@@ -96,7 +85,7 @@ A weather class for retrieving current and forecasted weather conditions.
|
|
96
85
|
query[:APPID] = api_key
|
97
86
|
|
98
87
|
# Create the uri
|
99
|
-
uri = format_uri(OWMO::URL,
|
88
|
+
uri = format_uri(OWMO::URL, PATHS[path], query)
|
100
89
|
|
101
90
|
# Get the weather data
|
102
91
|
GET(uri)
|
@@ -104,44 +93,39 @@ A weather class for retrieving current and forecasted weather conditions.
|
|
104
93
|
|
105
94
|
private
|
106
95
|
|
107
|
-
|
108
|
-
Retruns the geocode keys from specified query.
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
end
|
113
|
-
|
114
|
-
=begin rdoc
|
115
|
-
Aliases some geocode parameters to the correct ones, for example :city_name is
|
116
|
-
easier to read than :q
|
117
|
-
=end
|
118
|
-
def alias_geocodes(**query)
|
119
|
-
query_geocode_keys(query).each do |key|
|
120
|
-
query[Geocode_Aliases[key]] = query.delete(key)
|
121
|
-
end
|
122
|
-
query
|
123
|
-
end
|
96
|
+
# rdoc
|
97
|
+
# Retruns the geocode keys from specified query.
|
98
|
+
def query_geocode_keys(**query)
|
99
|
+
query.keys & GEOCODE_ALIASES.keys
|
100
|
+
end
|
124
101
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
102
|
+
# rdoc
|
103
|
+
# Aliases some geocode parameters to the correct ones, for example :city_name is
|
104
|
+
# easier to read than :q
|
105
|
+
def alias_geocodes(**query)
|
106
|
+
query_geocode_keys(query).each do |key|
|
107
|
+
query[GEOCODE_ALIASES[key]] = query.delete(key)
|
130
108
|
end
|
109
|
+
query
|
110
|
+
end
|
131
111
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
http.request(Net::HTTP::Get.new(uri))
|
138
|
-
end
|
139
|
-
|
140
|
-
# Check the response
|
141
|
-
raise WeatherResponseError.new(response) if response.has_error?
|
112
|
+
# rdoc
|
113
|
+
# Formats the url with the given url, path, and query
|
114
|
+
def format_uri(url, path, query)
|
115
|
+
URI "#{url}/#{path}?#{URI.encode_www_form(query).gsub('%2C', ',')}"
|
116
|
+
end
|
142
117
|
|
143
|
-
|
118
|
+
# rdoc
|
119
|
+
# Sends the GET request to OpenWeatherMap.org
|
120
|
+
def GET(uri)
|
121
|
+
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
|
122
|
+
http.request(Net::HTTP::Get.new(uri))
|
144
123
|
end
|
145
124
|
|
125
|
+
# Check the response
|
126
|
+
raise WeatherResponseError, response if response.error?
|
127
|
+
|
128
|
+
response.weather
|
129
|
+
end
|
146
130
|
end
|
147
131
|
end
|
data/lib/owmo.rb
CHANGED
@@ -1,36 +1,33 @@
|
|
1
|
-
|
2
|
-
require "owmo/weather"
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
3
|
+
require 'owmo/version'
|
4
|
+
require 'owmo/weather'
|
4
5
|
|
5
|
-
|
6
|
-
OMWO = OpenWeatherMap.org client for current and forecasted weather conditions.
|
7
|
-
=end
|
6
|
+
# rdoc
|
7
|
+
# OMWO = OpenWeatherMap.org client for current and forecasted weather conditions.
|
8
8
|
module OWMO
|
9
|
-
|
10
|
-
|
11
|
-
Openweathermap.org URL
|
12
|
-
=end
|
9
|
+
# rdoc
|
10
|
+
# Openweathermap.org URL
|
13
11
|
URL = 'http://api.openweathermap.org/data/2.5'
|
14
12
|
|
15
|
-
|
16
|
-
Yield a weather object for querying weather data
|
17
|
-
==== Attributes
|
18
|
-
* +api_key:+ - {OpenWeatherMap.org API key}[http://openweathermap.org/appid]
|
19
|
-
==== Examples
|
20
|
-
* Single request:
|
21
|
-
api_key = ''
|
22
|
-
OWMO::weather(api_key).get :current, city_name: "London,UK"
|
23
|
-
* Muliple requests:
|
24
|
-
api_key = ''
|
25
|
-
OWMO::weather(api_key) do |weather|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
Weather.new(api_key, params) do |weather|
|
13
|
+
# rdoc
|
14
|
+
# Yield a weather object for querying weather data
|
15
|
+
# ==== Attributes
|
16
|
+
# * +api_key:+ - {OpenWeatherMap.org API key}[http://openweathermap.org/appid]
|
17
|
+
# ==== Examples
|
18
|
+
# * Single request:
|
19
|
+
# api_key = ''
|
20
|
+
# OWMO::weather(api_key).get :current, city_name: "London,UK"
|
21
|
+
# * Muliple requests:
|
22
|
+
# api_key = ''
|
23
|
+
# OWMO::weather(api_key) do |weather|
|
24
|
+
# puts weather.get :current, city_name: "London,UK"
|
25
|
+
# puts weather.get :forecast5, city_name: "London,UK"
|
26
|
+
# puts weather.get :forecast16, city_name: "London,UK"
|
27
|
+
# end
|
28
|
+
|
29
|
+
def self.weather(api_key, **kwargs)
|
30
|
+
OWMO::Weather.new(api_key, **kwargs) do |weather|
|
34
31
|
if block_given?
|
35
32
|
yield weather
|
36
33
|
else
|
@@ -38,5 +35,4 @@ Yield a weather object for querying weather data
|
|
38
35
|
end
|
39
36
|
end
|
40
37
|
end
|
41
|
-
|
42
38
|
end
|
data/owmo.gemspec
CHANGED
@@ -1,27 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# coding: utf-8
|
2
|
-
|
3
|
+
|
4
|
+
lib = File.expand_path('lib', __dir__)
|
3
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
6
|
+
|
4
7
|
require 'owmo/version'
|
5
8
|
|
6
9
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
10
|
+
spec.name = 'owmo'
|
8
11
|
spec.version = OWMO::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
12
|
+
spec.authors = ['Robb Randall']
|
13
|
+
spec.email = ['robb.randall@gmail.com']
|
11
14
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
spec.homepage =
|
15
|
-
spec.license =
|
15
|
+
spec.summary = 'OpenWeatherMap.org client for current and forecasted weather conditions.'
|
16
|
+
spec.description = 'OpenWeatherMap.org client for current and forecasted weather conditions.'
|
17
|
+
spec.homepage = 'https://github.com/robb-randall/owmo'
|
18
|
+
spec.license = 'MIT'
|
16
19
|
|
17
20
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
21
|
f.match(%r{^(test|spec|features)/})
|
19
22
|
end
|
20
|
-
spec.bindir =
|
23
|
+
spec.bindir = 'exe'
|
21
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
-
spec.require_paths = [
|
25
|
+
spec.require_paths = ['lib']
|
23
26
|
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
+
spec.add_development_dependency 'bundler', '~> 2.x'
|
28
|
+
spec.add_development_dependency 'rake', '~> 13.x'
|
29
|
+
spec.add_development_dependency 'rspec', '~> 3.x'
|
27
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: owmo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Robb
|
7
|
+
- Robb Randall
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.x
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.x
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 13.x
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 13.x
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 3.x
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 3.x
|
55
55
|
description: OpenWeatherMap.org client for current and forecasted weather conditions.
|
56
56
|
email:
|
57
57
|
- robb.randall@gmail.com
|
@@ -59,6 +59,8 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
+
- ".github/workflows/ruby-publish-gem.yml"
|
63
|
+
- ".github/workflows/ruby.yml"
|
62
64
|
- ".gitignore"
|
63
65
|
- ".rspec"
|
64
66
|
- ".travis.yml"
|
@@ -104,8 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
106
|
- !ruby/object:Gem::Version
|
105
107
|
version: '0'
|
106
108
|
requirements: []
|
107
|
-
|
108
|
-
rubygems_version: 2.4.5.2
|
109
|
+
rubygems_version: 3.4.1
|
109
110
|
signing_key:
|
110
111
|
specification_version: 4
|
111
112
|
summary: OpenWeatherMap.org client for current and forecasted weather conditions.
|