owmo 1.0.0 → 1.0.1

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
  SHA1:
3
- metadata.gz: 76cf3aad7eed6385b91969ab9e129367ce8e7b40
4
- data.tar.gz: 4604435004a67f5e01bba1c0c789b1823351bafc
3
+ metadata.gz: 0ce70a84df088217ce4682019a4815dcab4b1db1
4
+ data.tar.gz: bde9b9055267c9c7d7a623e87ea579c27fbca1d6
5
5
  SHA512:
6
- metadata.gz: 6a5c8504dde37e3b907e57cfa71cec9f3e8a9c1008ba38421d90be8b4131d67de3bf478af4f79650a3d69d18079ae3355e584a584b7973892cfad72ed1980e17
7
- data.tar.gz: 67ab4aa60a944b7141ba01e85b47454600c72042ac4fa4536501182fd252c36eaebeabe6b24298c46746b3793ce7c967f84a1047fd709b50d8a80c295045f599
6
+ metadata.gz: 6d8853935c1daa9c82f76c8b5fd9e4971db71d09f714b489207af6bed0e0ab99c96e1c5aabad7b5a370df8b50179fa4ec060cf70baefa367b56ae728604e0c51
7
+ data.tar.gz: df115d83e3e1307a5b9aeadc2b026480c5f7bb91d5337743e04d739c49e45c68f086f3bb25473dec0e2e5f2b8601764860e5dfd571bd0de905793c5452bc50af
data/.gitignore CHANGED
@@ -15,3 +15,4 @@
15
15
  *.gem
16
16
  test.rb
17
17
  scratch.rb
18
+ api_key.txt
data/README.md CHANGED
@@ -22,7 +22,7 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- You'll need and API key from OpenWeatherMap.org (http://openweathermap.org/appid).
25
+ You'll need and API key from [OpenWeatherMap.org](http://openweathermap.org/appid).
26
26
 
27
27
  Compelete examples can be found under owmo/examples.
28
28
 
@@ -45,18 +45,23 @@ end
45
45
  ```
46
46
  ----
47
47
  ### Weather Information
48
- #### Current weather data (http://openweathermap.org/current)
48
+ #### [Current weather data](http://openweathermap.org/current)
49
49
  ```ruby
50
50
  puts weather.get :current, city_name: "London,UK"
51
51
  ```
52
- #### 5 day weather forecast (http://openweathermap.org/forecast5)
52
+ [Full example](https://github.com/robb-randall/owmo/blob/master/examples/current.rb)
53
+
54
+ #### [5 day weather forecast](http://openweathermap.org/forecast5)
53
55
  ```ruby
54
56
  puts weather.get :forecast5, city_name: "London,UK"
55
57
  ```
56
- #### 16 day weather forecast (http://openweathermap.org/forecast16)
58
+ [Full example](https://github.com/robb-randall/owmo/blob/master/examples/forecast5.rb)
59
+
60
+ #### [16 day weather forecast](http://openweathermap.org/forecast16)
57
61
  ```ruby
58
62
  puts weather.get :forecast16, city_name: "London,UK"
59
63
  ```
64
+ [Full example](https://github.com/robb-randall/owmo/blob/master/examples/forecast16.rb)
60
65
 
61
66
  ----
62
67
  ### Query parameters
@@ -78,6 +83,7 @@ puts weather.get :current, zip_code: 90210
78
83
  # Geocode by Coordinance
79
84
  puts weather.get :current, lon: -118.41, lat: 34.09
80
85
  ```
86
+ [Full example](https://github.com/robb-randall/owmo/blob/master/examples/query_geocode.rb)
81
87
 
82
88
  #### Mode
83
89
  ```ruby
@@ -91,6 +97,7 @@ puts weather.get :current, city_name: "London,UK", mode: :xml
91
97
  # Response in HTML format
92
98
  puts weather.get :current, city_name: "London,UK", mode: :html
93
99
  ```
100
+ [Full example](https://github.com/robb-randall/owmo/blob/master/examples/query_mode.rb)
94
101
 
95
102
  #### Units
96
103
  ```ruby
@@ -103,6 +110,7 @@ puts weather.get :current, city_name: "London,UK", units: :imperial
103
110
  # Metric
104
111
  puts weather.get :current, city_name: "London,UK", units: :metric
105
112
  ```
113
+ [Full example](https://github.com/robb-randall/owmo/blob/master/examples/query_units.rb)
106
114
 
107
115
  #### All
108
116
  ```ruby
@@ -115,6 +123,26 @@ query = {
115
123
 
116
124
  puts weather.get :current, query
117
125
  ```
126
+ [Full example](https://github.com/robb-randall/owmo/blob/master/examples/query_all.rb)
127
+
128
+ ----
129
+ ### Wroking example using Sinatra
130
+
131
+ ```ruby
132
+ require 'owmo'
133
+ require 'sinatra' # Need to install, not included in gemspec
134
+ require 'uri'
135
+
136
+ get '/current/:name' do
137
+ api_key = '<API Key>'
138
+ weather = OWMO::Weather.new api_key
139
+ weather.get :current, city_name: params[:name], mode: :html
140
+ end
141
+ ```
142
+
143
+ Then navigate to: http://localhost:4567/current/London,UK
144
+
145
+ [Full example](https://github.com/robb-randall/owmo/blob/master/examples/sinatra_example.rb)
118
146
 
119
147
  ----
120
148
  ## Development
@@ -0,0 +1,10 @@
1
+ require 'owmo'
2
+ require 'sinatra' # Need to install, not included in gemspec
3
+ require 'uri'
4
+
5
+
6
+ get '/current/:name' do
7
+ api_key = '<API Key>'
8
+ weather = OWMO::Weather.new api_key
9
+ weather.get :current, city_name: params[:name], mode: :html
10
+ end
@@ -39,6 +39,14 @@ Returns the response message
39
39
  ""
40
40
  end # weather_message
41
41
 
42
+ =begin rdoc
43
+ Returns boolean if the response contains an error or not.
44
+ =end
45
+ public
46
+ def has_error?
47
+ weather_code != 200
48
+ end # has_error?
49
+
42
50
  =begin rdoc
43
51
  Attempts to parse the body to JSON. This is so we don't have to continually
44
52
  parse the raw JSON.
@@ -25,8 +25,7 @@ Yield a weather object for querying weather data
25
25
  =end
26
26
  public
27
27
  def self.weather(api_key, **params)
28
- weather = Weather.new api_key, params
29
- yield weather
28
+ yield Weather.new api_key, params
30
29
  end # weather
31
30
 
32
31
  end # OWMO
@@ -1,4 +1,6 @@
1
1
  require 'core_extensions/net/http_response/weather_response'
2
+ require 'owmo/api/exceptions'
3
+
2
4
  require 'net/http'
3
5
  require 'uri'
4
6
 
@@ -9,20 +11,12 @@ Include some weather response info into Net::HTTPResponse
9
11
  Net::HTTPResponse.include CoreExtensions::Net::HTTPResponse::WeatherResponse
10
12
 
11
13
  module OWMO
14
+
12
15
  =begin rdoc
13
16
  Net module Mixins
14
17
  =end
15
18
  module API
16
-
17
- =begin rdoc
18
- Weather response error to handle errors received from OpenWeatherMap.orgs API
19
- =end
20
- class WeatherResponseError < StandardError
21
- def initialize(response)
22
- @response = response
23
- super("ERROR #{@response.weather_code}: #{@response.weather_message}")
24
- end # initialize
25
- end # WeatherResponseError
19
+ include ApiExceptions
26
20
 
27
21
  =begin rdoc
28
22
  Sends the GET request to OpenWeatherMap.org, and returns the response
@@ -39,7 +33,7 @@ Sends the GET request to OpenWeatherMap.org, and returns the response
39
33
  end # response
40
34
 
41
35
  # Check the response
42
- raise OWMO::API::WeatherResponseError.new(response) unless response.weather_code == 200
36
+ raise OWMO::API::WeatherResponseError.new(response) if response.has_error?
43
37
 
44
38
  return response.weather
45
39
 
@@ -0,0 +1,14 @@
1
+
2
+ module ApiExceptions
3
+
4
+ =begin rdoc
5
+ Weather response error to handle errors received from OpenWeatherMap.orgs API
6
+ =end
7
+ class WeatherResponseError < StandardError
8
+ def initialize(response)
9
+ @response = response
10
+ super("ERROR #{@response.weather_code}: #{@response.weather_message}")
11
+ end # initialize
12
+ end # WeatherResponseError
13
+
14
+ end # ApiExceptions
@@ -3,6 +3,6 @@ module OWMO
3
3
  =begin rdoc
4
4
  Gem Version
5
5
  =end
6
- VERSION = "1.0.0"
6
+ VERSION = "1.0.1"
7
7
 
8
8
  end # OWMO
@@ -1,3 +1,5 @@
1
+ require 'owmo/weather/exceptions'
2
+
1
3
  require 'set'
2
4
  require 'uri'
3
5
 
@@ -15,6 +17,7 @@ A weather class for retrieving current and forecasted weather conditions.
15
17
 
16
18
  =end
17
19
  class Weather
20
+ include WeatherExceptions
18
21
 
19
22
  attr_reader :api_key, :Paths, :Geocodes
20
23
 
@@ -64,23 +67,6 @@ Access current or forecasted conditions by (required):
64
67
  }
65
68
  }
66
69
 
67
- =begin rdoc
68
- Invalid path specified
69
- =end
70
- class InvalidPathSpecified < StandardError
71
- def initialize(path=nil)
72
- @path = path
73
- super("Invalid path specified: Got: '#{@path}', expected one of: #{Paths.keys}")
74
- end # initialize
75
- end # NoGeocodeSpecified
76
-
77
- =begin rdoc
78
- Missing Geocode from query
79
- =end
80
- class MissingGeocodes < StandardError
81
- end # MissingGeocodes
82
-
83
-
84
70
  def initialize(api_key, **kwargs) #:notnew:
85
71
  @api_key = api_key
86
72
  end # initialize
@@ -0,0 +1,20 @@
1
+
2
+ module WeatherExceptions
3
+
4
+ =begin rdoc
5
+ Invalid path specified
6
+ =end
7
+ class InvalidPathSpecified < StandardError
8
+ def initialize(path=nil)
9
+ @path = path
10
+ super("Invalid path specified: Got: '#{@path}', expected one of: #{Paths.keys}")
11
+ end # initialize
12
+ end # NoGeocodeSpecified
13
+
14
+ =begin rdoc
15
+ Missing Geocode from query
16
+ =end
17
+ class MissingGeocodes < StandardError
18
+ end # MissingGeocodes
19
+
20
+ end # WeatherExceptions
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: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robb
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-18 00:00:00.000000000 Z
11
+ date: 2017-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -76,12 +76,15 @@ files:
76
76
  - examples/query_geocode.rb
77
77
  - examples/query_mode.rb
78
78
  - examples/query_units.rb
79
+ - examples/sinatra_example.rb
79
80
  - lib/core_extensions/core_extensions.rb
80
81
  - lib/core_extensions/net/http_response/weather_response.rb
81
82
  - lib/owmo.rb
82
83
  - lib/owmo/api.rb
84
+ - lib/owmo/api/exceptions.rb
83
85
  - lib/owmo/version.rb
84
86
  - lib/owmo/weather.rb
87
+ - lib/owmo/weather/exceptions.rb
85
88
  - owmo.gemspec
86
89
  homepage: https://github.com/robb-randall/owmo
87
90
  licenses: