yahoo_weatherman 1.2.0 → 1.2.1

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.
@@ -0,0 +1,28 @@
1
+ require 'cgi'
2
+
3
+ module Weatherman
4
+ class WoeidLookup
5
+
6
+ def initialize(app_id)
7
+ @app_id = app_id
8
+ end
9
+
10
+ def get_woeid(location)
11
+ raw = get query_string(location)
12
+ Nokogiri::HTML(raw).at_xpath('.//woeid').content
13
+ rescue
14
+ nil
15
+ end
16
+
17
+ private
18
+
19
+ def query_string(location)
20
+ "http://where.yahooapis.com/v1/places.q('#{::CGI.escape(location)}')?appid=#{@app_id}"
21
+ end
22
+
23
+ def get(url)
24
+ open(url).read
25
+ end
26
+
27
+ end
28
+ end
@@ -13,7 +13,7 @@ require 'yahoo_weatherman/response'
13
13
 
14
14
  module Weatherman
15
15
 
16
- VERSION = '1.2.0'
16
+ VERSION = '1.2.1'
17
17
 
18
18
  URI = 'http://weather.yahooapis.com/forecastrss'
19
19
 
@@ -0,0 +1,81 @@
1
+ require 'spec_helper'
2
+ Dir[File.dirname(__FILE__) + '/directory/*.rb'].each {|file| require file }
3
+
4
+ describe Weatherman::WoeidLookup do
5
+ describe "example with test_api_id and 66061" do
6
+ before do
7
+ @app_id = 'test_api_id'
8
+ @location = '66061'
9
+ @lookup = Weatherman::WoeidLookup.new(@app_id)
10
+
11
+ xml_result = WoeidHelper.open_test_file('woeid_result_that_returns_12786745')
12
+ WoeidHelper.register_this_woeid_lookup_result(xml_result, @app_id, @location)
13
+ end
14
+
15
+ it "should retrieve the woeid" do
16
+ response = @lookup.get_woeid(@location)
17
+ response.should == "12786745"
18
+ end
19
+ end
20
+
21
+ describe "example with another_api and 90210" do
22
+ before do
23
+ @app_id = 'another_api'
24
+ @location = '90210'
25
+ @lookup = Weatherman::WoeidLookup.new(@app_id)
26
+
27
+ xml_result = WoeidHelper.open_test_file('woeid_result_that_returns_4729347')
28
+ WoeidHelper.register_this_woeid_lookup_result(xml_result, @app_id, @location)
29
+ end
30
+
31
+ it "should retrieve the woeid" do
32
+ response = @lookup.get_woeid(@location)
33
+ response.should == "4729347"
34
+ end
35
+ end
36
+
37
+ describe "invalid api key" do
38
+ before do
39
+ @app_id = 'invalid_api'
40
+ @location = '12345'
41
+ @lookup = Weatherman::WoeidLookup.new(@app_id)
42
+
43
+ xml_result = WoeidHelper.open_test_file('woeid_result_for_invalid_app_id')
44
+ WoeidHelper.register_this_woeid_lookup_result(xml_result, @app_id, @location)
45
+ end
46
+
47
+ it "should return nil" do
48
+ response = @lookup.get_woeid(@location)
49
+ response.should == nil
50
+ end
51
+ end
52
+
53
+ describe "failed net request" do
54
+ before do
55
+ @app_id = 'net_failure'
56
+ @location = '78902'
57
+ @lookup = Weatherman::WoeidLookup.new(@app_id)
58
+ WoeidHelper.register_this_woeid_lookup_to_fail @app_id, @location
59
+ end
60
+
61
+ it "should return nil" do
62
+ response = @lookup.get_woeid(@location)
63
+ response.should == nil
64
+ end
65
+ end
66
+
67
+ describe "request with spaces" do
68
+ before do
69
+ @app_id = 'test_api_id'
70
+ @lookup = Weatherman::WoeidLookup.new(@app_id)
71
+
72
+ xml_result = WoeidHelper.open_test_file('woeid_result_that_returns_12786745')
73
+ WoeidHelper.register_this_woeid_lookup_result(xml_result, @app_id, "San+Francisco%2C+CA")
74
+ end
75
+
76
+ it "should retrieve the woeid" do
77
+ response = @lookup.get_woeid("San Francisco, CA")
78
+ response.should == "12786745"
79
+ end
80
+ end
81
+ end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "yahoo_weatherman"
3
- gem.version = "1.2.0"
3
+ gem.version = "1.2.1"
4
4
  gem.authors = ["Dalto Curvelano Junior"]
5
5
  gem.description = "A ruby wrapper to the Yahoo! Weather feed with i18n support."
6
6
  gem.summary = "A ruby wrapper to the Yahoo! Weather feed with i18n support."
@@ -9,6 +9,7 @@ Gem::Specification.new do |gem|
9
9
  "lib/yahoo_weatherman/image.rb",
10
10
  "lib/yahoo_weatherman/response.rb",
11
11
  "lib/yahoo_weatherman/i18n.rb",
12
+ "lib/yahoo_weatherman/woeid_lookup.rb",
12
13
  "lib/yahoo_weatherman.rb",
13
14
  "i18n/pt-br.yml",
14
15
  "i18n/ru.yml",
@@ -17,7 +18,8 @@ Gem::Specification.new do |gem|
17
18
  "spec/spec_helper.rb",
18
19
  "spec/yahoo_weatherman/response_spec.rb",
19
20
  "spec/yahoo_weatherman/yahoo_weatherman_spec.rb",
20
- "spec/yahoo_weatherman/i18n_spec.rb"
21
+ "spec/yahoo_weatherman/i18n_spec.rb",
22
+ "spec/yahoo_weatherman/woeid_lookup_spec.rb"
21
23
  ]
22
24
  gem.homepage = "http://github.com/dlt/yahoo_weatherman"
23
25
  gem.add_dependency "nokogiri"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yahoo_weatherman
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-18 00:00:00.000000000 Z
12
+ date: 2012-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -69,6 +69,7 @@ files:
69
69
  - lib/yahoo_weatherman/image.rb
70
70
  - lib/yahoo_weatherman/response.rb
71
71
  - lib/yahoo_weatherman/i18n.rb
72
+ - lib/yahoo_weatherman/woeid_lookup.rb
72
73
  - lib/yahoo_weatherman.rb
73
74
  - i18n/pt-br.yml
74
75
  - i18n/ru.yml
@@ -78,6 +79,7 @@ files:
78
79
  - spec/yahoo_weatherman/response_spec.rb
79
80
  - spec/yahoo_weatherman/yahoo_weatherman_spec.rb
80
81
  - spec/yahoo_weatherman/i18n_spec.rb
82
+ - spec/yahoo_weatherman/woeid_lookup_spec.rb
81
83
  homepage: http://github.com/dlt/yahoo_weatherman
82
84
  licenses: []
83
85
  post_install_message: