open-weather-api 0.0.6 → 0.0.7

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
  SHA1:
3
- metadata.gz: 81a5a0437a5df3681e01d999042349f65a262edd
4
- data.tar.gz: 58658dab6c7aae11b3946d73de3f61aabf3c32e0
3
+ metadata.gz: 436fa2c7c481014d726c6b5fbe94b0cbc77cf507
4
+ data.tar.gz: e2708147d1b78d1cea762a791b4fef81444dfd3b
5
5
  SHA512:
6
- metadata.gz: 81e3fcf7f66b33d7b64af4ba6d3ddab30b80c63cdfa37c31150b2bbff313c3c9aea6071ddb728ab09592acebb4da15db9346fd8283d9791717216b2a28de8a4c
7
- data.tar.gz: d64654935917d1ef3342685b77edf356d14ea6f490e8a1da4e983736fe595cad4a9a26840b01fa7ef2948f6be66f40fb20b186b859e3ad665d4aecdd7060b1d1
6
+ metadata.gz: 9201525c0082f3923197a37d7d865904dcd02e14e2140a23b3ddbd638e77ecd65abc44829917458559f6725db900b6537382a8fdd8857bd979b9c948db568306
7
+ data.tar.gz: 8e657d1ec3e72cf57bec4a0c8dad89b34d1a7a756e2b4663fe66c21691fd3f78a85412ac1e542ea1fd8d54769a9d0470187c0e7f5c2e1255d5729a78e28b18e1
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
- --color
1
+ --color
2
2
  --format Fuubar
@@ -1,9 +1,9 @@
1
- # Contributing
2
-
3
- 1. Fork it ( [https://gitlab.com/wikiti-random-stuff/open-weather-api/fork/new](https://gitlab.com/wikiti-random-stuff/open-weather-api/fork/new) )
4
- 2. Create your feature branch (`git checkout -b my-new-feature`)
5
- 3. Commit your changes (`git commit -am 'Add some feature'`)
6
- - Feel free to add yourself to *README.md*'s authors :smile:.
7
- 4. Run tests (`rake test`)
8
- 5. Push to the branch (`git push origin my-new-feature`)
9
- 6. Create new Merge Request
1
+ # Contributing
2
+
3
+ 1. Fork it ( [https://gitlab.com/wikiti-random-stuff/open-weather-api/fork/new](https://gitlab.com/wikiti-random-stuff/open-weather-api/fork/new) )
4
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
5
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
6
+ - Feel free to add yourself to *README.md*'s authors :smile:.
7
+ 4. Run tests (`rake test`)
8
+ 5. Push to the branch (`git push origin my-new-feature`)
9
+ 6. Create new Merge Request
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source "http://rubygems.org"
2
-
1
+ source "http://rubygems.org"
2
+
3
3
  gemspec
@@ -1,57 +1,57 @@
1
- module OpenWeatherAPI
2
- class API
3
-
4
- VERSION = "2.5"
5
-
6
- attr_accessor :api_key, :default_language, :default_country_code, :default_units
7
-
8
- def initialize(options = {})
9
- @api_key = options[:api_key] || options['api_key']
10
- @default_language = options[:default_language] || options['default_language'] || 'en'
11
- @default_country_code = options[:default_country_code] || options['default_country_code']
12
- @default_units = options[:default_units] || options['default_units'] || 'metric'
13
- end
14
-
15
- def current(**args, &block)
16
- fetch_current.execute(**args, &block)
17
- end
18
-
19
- def forecast(type = :hourly, **args, &block)
20
- raise "Invalid '#type' forecast type" unless valid_forecast_type?(type)
21
-
22
- self.send("fetch_forecast_#{type}").execute(**args, &block)
23
- end
24
-
25
- def raw(path = "/", **args, &block)
26
- fetch_raw.execute(path, **args, &block)
27
- end
28
-
29
- def icon_url(icon_code)
30
- "http://openweathermap.org/img/w/#{icon_code}.png"
31
- end
32
-
33
- private
34
-
35
- VALID_FORECAST_TYPES = [:hourly, :daily]
36
-
37
- def valid_forecast_type?(type)
38
- VALID_FORECAST_TYPES.include? type.to_sym
39
- end
40
-
41
- def fetch_raw
42
- @current ||= Resources::Raw.new self
43
- end
44
-
45
- def fetch_current
46
- @current ||= Resources::Current.new self
47
- end
48
-
49
- def fetch_forecast_hourly
50
- @forecast_hourly ||= Resources::ForecastHourly.new self
51
- end
52
-
53
- def fetch_forecast_daily
54
- @forecast_daily ||= Resources::ForecastHourly.new self
55
- end
56
- end
1
+ module OpenWeatherAPI
2
+ class API
3
+
4
+ VERSION = "2.5"
5
+
6
+ attr_accessor :api_key, :default_language, :default_country_code, :default_units
7
+
8
+ def initialize(options = {})
9
+ @api_key = options[:api_key] || options['api_key']
10
+ @default_language = options[:default_language] || options['default_language'] || 'en'
11
+ @default_country_code = options[:default_country_code] || options['default_country_code']
12
+ @default_units = options[:default_units] || options['default_units'] || 'metric'
13
+ end
14
+
15
+ def current(**args, &block)
16
+ fetch_current.execute(**args, &block)
17
+ end
18
+
19
+ def forecast(type = :hourly, **args, &block)
20
+ raise "Invalid '#type' forecast type" unless valid_forecast_type?(type)
21
+
22
+ self.send("fetch_forecast_#{type}").execute(**args, &block)
23
+ end
24
+
25
+ def raw(path = "/", **args, &block)
26
+ fetch_raw.execute(path, **args, &block)
27
+ end
28
+
29
+ def icon_url(icon_code)
30
+ "http://openweathermap.org/img/w/#{icon_code}.png"
31
+ end
32
+
33
+ private
34
+
35
+ VALID_FORECAST_TYPES = [:hourly, :daily]
36
+
37
+ def valid_forecast_type?(type)
38
+ VALID_FORECAST_TYPES.include? type.to_sym
39
+ end
40
+
41
+ def fetch_raw
42
+ @current ||= Resources::Raw.new self
43
+ end
44
+
45
+ def fetch_current
46
+ @current ||= Resources::Current.new self
47
+ end
48
+
49
+ def fetch_forecast_hourly
50
+ @forecast_hourly ||= Resources::ForecastHourly.new self
51
+ end
52
+
53
+ def fetch_forecast_daily
54
+ @forecast_daily ||= Resources::ForecastHourly.new self
55
+ end
56
+ end
57
57
  end
@@ -1,9 +1,9 @@
1
- module OpenWeatherAPI
2
- def self.configure(&block)
3
- raise ArgumentError, 'No block was given.' unless block
4
-
5
- api = Rails.configuration.open_weather_api = OpenWeatherAPI::API.new
6
- block.call(api)
7
- api
8
- end
1
+ module OpenWeatherAPI
2
+ def self.configure(&block)
3
+ raise ArgumentError, 'No block was given.' unless block
4
+
5
+ api = Rails.configuration.open_weather_api = OpenWeatherAPI::API.new
6
+ block.call(api)
7
+ api
8
+ end
9
9
  end
@@ -1,67 +1,67 @@
1
- module OpenWeatherAPI
2
- module Resources
3
- class Base
4
-
5
- attr_reader :api_obj
6
-
7
- def initialize(api_obj)
8
- @api_obj = api_obj
9
- end
10
-
11
- def execute(**hash, &block)
12
- @parameters = hash
13
- setup_indifferent_access(@parameters)
14
-
15
- # Let's use json
16
- response = RestClient.send :get, base_url, params: build_params(@parameters)
17
- raise "Invalid response." unless response.code == 200
18
-
19
- # Handle the response format
20
- response = self.send "handle_response_#{mode}", response
21
-
22
- # Handle the block
23
- return block.call(response) if block_given?
24
- response
25
- end
26
-
27
- private
28
-
29
- def mode
30
- (@parameters[:mode] || :json).to_s.to_sym
31
- end
32
-
33
- def handle_response_raw(response)
34
- response
35
- end
36
-
37
- def handle_response_json(response)
38
- json = JSON.parse(response.body)
39
- setup_indifferent_access(json)
40
- end
41
-
42
- def handle_response_xml(response)
43
- response.body
44
- end
45
-
46
- def handle_response_html(response)
47
- response.body
48
- end
49
-
50
- def base_url
51
- "http://api.openweathermap.org/data/#{API::VERSION || '2.5'}/"
52
- end
53
-
54
- def setup_indifferent_access(sub_hash)
55
- sub_hash.default_proc = proc{|h, k| h.key?(k.to_s) ? h[k.to_s] : nil}
56
- sub_hash.each { |k, v| setup_indifferent_access(v) if v.is_a?(Hash) }
57
- end
58
-
59
- def build_params(parameters = {})
60
- {
61
- APPID: @api_obj.api_key,
62
- lang: @api_obj.default_language
63
- }.merge(parameters)
64
- end
65
- end
66
- end
1
+ module OpenWeatherAPI
2
+ module Resources
3
+ class Base
4
+
5
+ attr_reader :api_obj
6
+
7
+ def initialize(api_obj)
8
+ @api_obj = api_obj
9
+ end
10
+
11
+ def execute(**hash, &block)
12
+ @parameters = hash
13
+ setup_indifferent_access(@parameters)
14
+
15
+ # Let's use json
16
+ response = RestClient.send :get, base_url, params: build_params(@parameters)
17
+ raise "Invalid response." unless response.code == 200
18
+
19
+ # Handle the response format
20
+ response = self.send "handle_response_#{mode}", response
21
+
22
+ # Handle the block
23
+ return block.call(response) if block_given?
24
+ response
25
+ end
26
+
27
+ private
28
+
29
+ def mode
30
+ (@parameters[:mode] || :json).to_s.to_sym
31
+ end
32
+
33
+ def handle_response_raw(response)
34
+ response
35
+ end
36
+
37
+ def handle_response_json(response)
38
+ json = JSON.parse(response.body)
39
+ setup_indifferent_access(json)
40
+ end
41
+
42
+ def handle_response_xml(response)
43
+ response.body
44
+ end
45
+
46
+ def handle_response_html(response)
47
+ response.body
48
+ end
49
+
50
+ def base_url
51
+ "http://api.openweathermap.org/data/#{API::VERSION || '2.5'}/"
52
+ end
53
+
54
+ def setup_indifferent_access(sub_hash)
55
+ sub_hash.default_proc = proc{|h, k| h.key?(k.to_s) ? h[k.to_s] : nil}
56
+ sub_hash.each { |k, v| setup_indifferent_access(v) if v.is_a?(Hash) }
57
+ end
58
+
59
+ def build_params(parameters = {})
60
+ {
61
+ APPID: @api_obj.api_key,
62
+ lang: @api_obj.default_language
63
+ }.merge(parameters)
64
+ end
65
+ end
66
+ end
67
67
  end
@@ -1,45 +1,45 @@
1
- module OpenWeatherAPI
2
- module Resources
3
- class Current < Base
4
-
5
- def base_url
6
- return super + 'group/' if city_id.multiple?
7
- return super + 'weather/' if [city, city_id, geolocation, zipcode].any? { |h| h.can? }
8
- return super + 'box/city/' if bbox.can?
9
- return super + 'find/' if circle.can?
10
- end
11
-
12
- def build_params(parameters = {})
13
- super [city, city_id, geolocation, zipcode, bbox, circle].each{ |h| break h.handle if h.can? }
14
- end
15
-
16
- # Simple handlers
17
- def city
18
- Handlers::City.new @api_obj, @parameters
19
- end
20
-
21
- def city_id
22
- Handlers::CityID.new @api_obj, @parameters
23
- end
24
-
25
- def geolocation
26
- Handlers::Geolocation.new @api_obj, @parameters
27
- end
28
-
29
- def zipcode
30
- Handlers::Zipcode.new @api_obj, @parameters
31
- end
32
-
33
- # Other handlers
34
- # ------------------
35
- def bbox
36
- Handlers::BoundingBox.new @api_obj, @parameters
37
- end
38
-
39
- def circle
40
- Handlers::Circle.new @api_obj, @parameters
41
- end
42
-
43
- end
44
- end
1
+ module OpenWeatherAPI
2
+ module Resources
3
+ class Current < Base
4
+
5
+ def base_url
6
+ return super + 'group/' if city_id.multiple?
7
+ return super + 'weather/' if [city, city_id, geolocation, zipcode].any? { |h| h.can? }
8
+ return super + 'box/city/' if bbox.can?
9
+ return super + 'find/' if circle.can?
10
+ end
11
+
12
+ def build_params(parameters = {})
13
+ super [city, city_id, geolocation, zipcode, bbox, circle].each{ |h| break h.handle if h.can? }
14
+ end
15
+
16
+ # Simple handlers
17
+ def city
18
+ Handlers::City.new @api_obj, @parameters
19
+ end
20
+
21
+ def city_id
22
+ Handlers::CityID.new @api_obj, @parameters
23
+ end
24
+
25
+ def geolocation
26
+ Handlers::Geolocation.new @api_obj, @parameters
27
+ end
28
+
29
+ def zipcode
30
+ Handlers::Zipcode.new @api_obj, @parameters
31
+ end
32
+
33
+ # Other handlers
34
+ # ------------------
35
+ def bbox
36
+ Handlers::BoundingBox.new @api_obj, @parameters
37
+ end
38
+
39
+ def circle
40
+ Handlers::Circle.new @api_obj, @parameters
41
+ end
42
+
43
+ end
44
+ end
45
45
  end
@@ -1,19 +1,19 @@
1
- module OpenWeatherAPI
2
- module Resources
3
- class ForecastDaily < ForecastHourly
4
-
5
- def base_url
6
- return super + 'daily/'
7
- end
8
-
9
- def build_params(parameters = {})
10
- parameters.merge!(cnt: days)
11
- super(parameters)
12
- end
13
-
14
- def days
15
- @parameters[:days] || @parameters[:n_days] || @parameters[:cnt] || @parameters[:count]
16
- end
17
- end
18
- end
1
+ module OpenWeatherAPI
2
+ module Resources
3
+ class ForecastDaily < ForecastHourly
4
+
5
+ def base_url
6
+ return super + 'daily/'
7
+ end
8
+
9
+ def build_params(parameters = {})
10
+ parameters.merge!(cnt: days)
11
+ super(parameters)
12
+ end
13
+
14
+ def days
15
+ @parameters[:days] || @parameters[:n_days] || @parameters[:cnt] || @parameters[:count]
16
+ end
17
+ end
18
+ end
19
19
  end
@@ -1,28 +1,28 @@
1
- module OpenWeatherAPI
2
- module Resources
3
- class ForecastHourly < Base
4
-
5
- def base_url
6
- return super + 'forecast/'
7
- end
8
-
9
- def build_params(parameters = {})
10
- super [city, city_id, geolocation].each{ |h| break h.handle if h.can? }
11
- end
12
-
13
- # Simple handlers
14
- def city
15
- Handlers::City.new @api_obj, @parameters
16
- end
17
-
18
- def city_id
19
- Handlers::CityID.new @api_obj, @parameters
20
- end
21
-
22
- def geolocation
23
- Handlers::Geolocation.new @api_obj, @parameters
24
- end
25
-
26
- end
27
- end
1
+ module OpenWeatherAPI
2
+ module Resources
3
+ class ForecastHourly < Base
4
+
5
+ def base_url
6
+ return super + 'forecast/'
7
+ end
8
+
9
+ def build_params(parameters = {})
10
+ super [city, city_id, geolocation].each{ |h| break h.handle if h.can? }
11
+ end
12
+
13
+ # Simple handlers
14
+ def city
15
+ Handlers::City.new @api_obj, @parameters
16
+ end
17
+
18
+ def city_id
19
+ Handlers::CityID.new @api_obj, @parameters
20
+ end
21
+
22
+ def geolocation
23
+ Handlers::Geolocation.new @api_obj, @parameters
24
+ end
25
+
26
+ end
27
+ end
28
28
  end