open-weather 0.9.1 → 0.9.2

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.
data/README.md CHANGED
@@ -25,11 +25,17 @@ Add the following to your **Gemfile**
25
25
  # get current weather by geocode. (lat, lon)
26
26
  OpenWeather::Current.geocode(9.94, 76.26)
27
27
 
28
+ # get the current weather in degrees celsius
29
+ OpenWeather::Current.city("Cochin, IN", units: 'metric')
30
+
28
31
  # weather forecast APIs
29
32
 
30
33
  # get weather forecast by city name
31
34
  OpenWeather::Forecast.city("Cochin, IN")
32
35
 
36
+ # get weather forecast by city name in fahrenheit
37
+ OpenWeather::Forecast.city("Cochin, IN", units: 'imperial')
38
+
33
39
  # get weather forecast by city id
34
40
  OpenWeather::Forecast.city_id("1273874")
35
41
 
@@ -1,5 +1,5 @@
1
- require 'httparty'
2
- require 'addressable/uri'
1
+ require 'net/http'
2
+ require 'json'
3
3
 
4
4
  module OpenWeather
5
5
  class Base
@@ -24,7 +24,7 @@ module OpenWeather
24
24
  private
25
25
 
26
26
  def extract_options!(options)
27
- valid_options = [:lat, :lon, :city, :country, :id]
27
+ valid_options = [:lat, :lon, :city, :country, :id, :units]
28
28
  options.keys.each { |k| options.delete(k) unless valid_options.include?(k) }
29
29
 
30
30
  if options[:city] || options[:country]
@@ -37,16 +37,16 @@ module OpenWeather
37
37
  end
38
38
 
39
39
  def parse_response
40
- @weather_info = @response
40
+ @weather_info = JSON.parse(@response)
41
41
  @status = @weather_info["cod"]
42
42
  @message = @weather_info["message"] unless @status
43
43
  @weather_info
44
44
  end
45
45
 
46
46
  def send_request(request)
47
- uri = Addressable::URI.parse(request.url)
48
- uri.query_values = request.options
49
- HTTParty.get(uri.to_s)
47
+ uri = URI(request.url)
48
+ uri.query = URI.encode_www_form(request.options)
49
+ Net::HTTP.get(uri)
50
50
  end
51
51
  end
52
52
  end
@@ -1,3 +1,3 @@
1
1
  module OpenWeather
2
- VERSION = "0.9.1"
2
+ VERSION = "0.9.2"
3
3
  end
@@ -14,7 +14,5 @@ Gem::Specification.new do |gem|
14
14
  gem.executables = gem.files.grep(/^bin/).map{ |f| File.basename(f) }
15
15
  gem.require_paths = ["lib"]
16
16
  gem.add_development_dependency "rspec"
17
-
18
- gem.add_runtime_dependency 'httparty'
19
- gem.add_runtime_dependency 'addressable'
17
+ gem.add_runtime_dependency 'json'
20
18
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  # success response
4
- #
4
+ #
5
5
  # {"coord"=>{"lon"=>76.26, "lat"=>9.94},
6
6
  # "sys"=>
7
7
  # {"message"=>0.1938,
@@ -31,14 +31,6 @@ require 'spec_helper'
31
31
  #
32
32
  # {"message"=>"Error: Not found city", "cod"=>"404"}
33
33
 
34
- describe 'Connection Error' do
35
- it 'return error when the network is unreachable' do
36
- response = OpenWeather::Current.city('Cochin, In')
37
- response['cod'].should eq(200)
38
- end
39
- end
40
-
41
-
42
34
  describe 'Open weather Current API' do
43
35
  context '.city' do
44
36
  it 'return current weather for cochi' do
@@ -75,6 +67,19 @@ describe 'Open weather Current API' do
75
67
  response['cod'].should eq("404")
76
68
  end
77
69
  end
70
+
71
+ context 'units option' do
72
+ it 'returns the current temperature in requested units' do
73
+ response = OpenWeather::Current.city('Cochin, In', units: 'metric')
74
+ temp_metric = response['main']['temp']
75
+
76
+ response = OpenWeather::Current.city('Cochin, In', units: 'imperial')
77
+ temp_imperial = response['main']['temp']
78
+ farenheit_to_celsius = ((temp_imperial - 32) / 1.8000)
79
+
80
+ expect(farenheit_to_celsius).to be_within(0.01).of(temp_metric)
81
+ end
82
+ end
78
83
  end
79
84
 
80
85
  describe 'Open weather Forecast API' do
@@ -113,4 +118,17 @@ describe 'Open weather Forecast API' do
113
118
  response['cod'].to_s.should eq("404")
114
119
  end
115
120
  end
116
- end
121
+
122
+ context 'units option' do
123
+ it 'returns the forecast in requested units' do
124
+ response = OpenWeather::Forecast.city('Cochin, In', units: 'metric')
125
+ temp_metric = response['list'].first['main']['temp']
126
+
127
+ response = OpenWeather::Forecast.city('Cochin, In', units: 'imperial')
128
+ temp_imperial = response['list'].first['main']['temp']
129
+ farenheit_to_celsius = ((temp_imperial - 32) / 1.8000)
130
+
131
+ expect(farenheit_to_celsius).to be_within(0.01).of(temp_metric)
132
+ end
133
+ end
134
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: open-weather
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-01-18 00:00:00.000000000 Z
13
+ date: 2014-07-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
@@ -29,23 +29,7 @@ dependencies:
29
29
  - !ruby/object:Gem::Version
30
30
  version: '0'
31
31
  - !ruby/object:Gem::Dependency
32
- name: httparty
33
- requirement: !ruby/object:Gem::Requirement
34
- none: false
35
- requirements:
36
- - - ! '>='
37
- - !ruby/object:Gem::Version
38
- version: '0'
39
- type: :runtime
40
- prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ! '>='
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- - !ruby/object:Gem::Dependency
48
- name: addressable
32
+ name: json
49
33
  requirement: !ruby/object:Gem::Requirement
50
34
  none: false
51
35
  requirements: