yilp 0.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,16 @@
1
+ config/yilp_appid.yml
2
+ lib/yilp.rb
3
+ Rakefile
4
+ README.rdoc
5
+ spec/fixtures/places_sydney.xml
6
+ spec/fixtures/placetypes.xml
7
+ spec/fixtures/woid_1105779.xml
8
+ spec/fixtures/woid_1105779_ancestors.xml
9
+ spec/fixtures/woid_1105779_belongto.xml
10
+ spec/fixtures/woid_1105779_children.xml
11
+ spec/fixtures/woid_1105779_neighbors.xml
12
+ spec/fixtures/woid_1105779_parent.xml
13
+ spec/fixtures/woid_1105779_siblings.xml
14
+ spec/specs.html
15
+ spec/yilp_spec.rb
16
+ Manifest
@@ -0,0 +1,29 @@
1
+ In simple terms, the Service allows you to look up the unique identifier - called the Where on Earth ID, or WOEID - for
2
+ almost any named place on the Earth; it also allows you to resolve a WOEID you have received from a third party - such as
3
+ Fire Eagle™ or Upcoming - to the place it represents.
4
+
5
+ The API is accessed via HTTP GET; the following examples can be cut-and-paste into a web browser to view the results:
6
+
7
+ Find the WOEID of a significant landmark:
8
+ http://where.yahooapis.com/v1/places.q('sydney%20opera%20house')
9
+
10
+ Resolve a WOEID to a place:
11
+ http://where.yahooapis.com/v1/place/2507854
12
+
13
+ Find the WOEID of a specific place:
14
+ http://where.yahooapis.com/v1/places.q('northfield%20mn%20usa')
15
+
16
+ Obtain a range of WOEIDs that match a given place, ordered by the most likely:
17
+ http://where.yahooapis.com/v1/places.q('springfield');start=0;count=5
18
+
19
+ Find the parent of a given WOEID (and return a detailed record):
20
+ http://where.yahooapis.com/v1/place/638242/parent?select=long
21
+
22
+ Return the Placename for a given WOEID in a specific language (where it exists):
23
+ http://where.yahooapis.com/v1/places.q('usa')?lang=fr
24
+
25
+ To obtain the representation of a place in JSON format:
26
+ http://where.yahooapis.com/v1/place/2487956?format=json
27
+
28
+ To obtain a list of geographies that neighbor a specific WOEID:
29
+ http://where.yahooapis.com/v1/place/12795711/neighbors
@@ -0,0 +1,15 @@
1
+ require "rubygems"
2
+ require "rake"
3
+ require "echoe"
4
+
5
+ Echoe.new('yilp', '0.1') do |p|
6
+ p.description = "Ruby wrapper arround Yahoo Internet Location Platform"
7
+ # p.url = "http://github.com/sabman/yilp"
8
+ p.url = "http://yilp.rubyforge.org"
9
+ p.author = "Shoaib Burq & David Troy"
10
+ p.email = "shoaib@nomad-labs.com"
11
+ p.ignore_pattern = ["tmp/*", "script/*"]
12
+ p.development_dependencies = ["active_support"]
13
+ end
14
+
15
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
@@ -0,0 +1,12 @@
1
+ appid:
2
+ fallback:
3
+ RKxL3NrV34Fwy2Xx2IRhxKz_cy4ESJWC9QUyr45ZMdnj85FXjIGs.yrUdBTQyXWFZu8-
4
+
5
+ test:
6
+ RKxL3NrV34Fwy2Xx2IRhxKz_cy4ESJWC9QUyr45ZMdnj85FXjIGs.yrUdBTQyXWFZu8-
7
+
8
+ development:
9
+ RKxL3NrV34Fwy2Xx2IRhxKz_cy4ESJWC9QUyr45ZMdnj85FXjIGs.yrUdBTQyXWFZu8-
10
+
11
+ production:
12
+ RKxL3NrV34Fwy2Xx2IRhxKz_cy4ESJWC9QUyr45ZMdnj85FXjIGs.yrUdBTQyXWFZu8-
@@ -0,0 +1,58 @@
1
+ require 'rubygems'
2
+ require "open-uri"
3
+ require "active_support"
4
+ module YILP
5
+ class YILP
6
+ APP_ID = ENV["RAILS_ENV"].nil? ?
7
+ YAML::load_file("./config/yilp_appid.yml")["appid"]["fallback"] :
8
+ YAML::load_file("./config/yilp_appid.yml")["appid"][ENV["RAILS_ENV"]]
9
+
10
+ @@lang_hash = {
11
+ :French => 'fr',
12
+ :German => 'de',
13
+ :Italian => 'de',
14
+ :Dutch => 'nl',
15
+ :Greek => 'el',
16
+ :Spanish => 'es',
17
+ :Portuguese => 'pt',
18
+ :Arabic => 'ar',
19
+ :Hebrew => 'he',
20
+ :Russian => 'ru',
21
+ :Chinese => 'zh',
22
+ :Japanese => 'ja',
23
+ :Hindi => 'hi',
24
+ :Urdu => 'ur',
25
+ :Sanskrit => 'sa'
26
+ }
27
+
28
+ @@baseurl = "http://where.yahooapis.com/v1"
29
+
30
+ def self.find(query, options={})
31
+ if query.is_a?(Fixnum) # /place/{woeid}
32
+ valid_keys = [:neighbors, :parent, :ancestors, :belongtos, :siblings, :children]
33
+ options.assert_valid_keys(valid_keys)
34
+ url = "place/#{query}"
35
+ valid_keys.find { |k| url += "/#{k.to_s}" if options[k] }
36
+ url += "?appid=#{APP_ID}"
37
+ else # /places.q('query')
38
+ valid_keys = [:lang]
39
+ options.assert_valid_keys(valid_keys)
40
+ url = "places.q(#{URI.encode(query)})"
41
+ url += "?appid=#{APP_ID}"
42
+ url += "&lang=#{lang(options[:lang])}" if options[:lang]
43
+ end
44
+ Hash.from_xml(open("#{@@baseurl}/#{url}"))
45
+ end
46
+
47
+ def self.placetypes
48
+ # http://where.yahooapis.com/v1/placetypes?appid=RKxL3NrV34Fwy2Xx2IRhxKz_cy4ESJWC9QUyr45ZMdnj85FXjIGs.yrUdBTQyXWFZu8-
49
+ url = "placetypes?appid=#{APP_ID}"
50
+ Hash.from_xml(open("#{@@baseurl}/#{url}"))
51
+ end
52
+
53
+ def self.lang(lang)
54
+ language = @@lang_hash[lang.to_s.capitalize.to_sym]
55
+ end
56
+
57
+ end
58
+ end
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <places xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:start="0" yahoo:count="1" yahoo:total="1"><place yahoo:uri="http://where.yahooapis.com/v1/place/1105779" xml:lang="en"><woeid>1105779</woeid><placeTypeName code="7">Town</placeTypeName><name>Sydney</name><country type="Country" code="AU">Australia</country><admin1 type="State" code="AU-NSW">New South Wales</admin1><admin2></admin2><admin3></admin3><locality1>Sydney</locality1><locality2></locality2><postal></postal><centroid><latitude>-33.869629</latitude><longitude>151.206955</longitude></centroid><boundingBox><southWest><latitude>-34.18961</latitude><longitude>150.517166</longitude></southWest><northEast><latitude>-33.57814</latitude><longitude>151.342575</longitude></northEast></boundingBox></place></places>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <placeTypes xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:start="0" yahoo:count="32" yahoo:total="32"><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/0" xml:lang="en"><placeTypeName code="0">Undefined</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/1" xml:lang="en"><placeTypeName code="1">Geocoded Building</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/2" xml:lang="en"><placeTypeName code="2">Geocoded Segment</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/3" xml:lang="en"><placeTypeName code="3">Geocoded Nearby Building</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/4" xml:lang="en"><placeTypeName code="4">Geocoded Street</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/5" xml:lang="en"><placeTypeName code="5">Geocoded Intersection</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/6" xml:lang="en"><placeTypeName code="6">Street</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/7" xml:lang="en"><placeTypeName code="7">Town</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/8" xml:lang="en"><placeTypeName code="8">State</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/9" xml:lang="en"><placeTypeName code="9">County</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/10" xml:lang="en"><placeTypeName code="10">Local Admin</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/11" xml:lang="en"><placeTypeName code="11">Postal Code</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/12" xml:lang="en"><placeTypeName code="12">Country</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/13" xml:lang="en"><placeTypeName code="13">Island</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/14" xml:lang="en"><placeTypeName code="14">Airport</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/15" xml:lang="en"><placeTypeName code="15">Drainage</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/16" xml:lang="en"><placeTypeName code="16">Land Feature</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/17" xml:lang="en"><placeTypeName code="17">Miscellaneous</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/18" xml:lang="en"><placeTypeName code="18">Nationality</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/19" xml:lang="en"><placeTypeName code="19">Supername</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/20" xml:lang="en"><placeTypeName code="20">Point of Interest</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/21" xml:lang="en"><placeTypeName code="21">Region</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/22" xml:lang="en"><placeTypeName code="22">Suburb</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/23" xml:lang="en"><placeTypeName code="23">Sports Team</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/24" xml:lang="en"><placeTypeName code="24">Colloquial</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/25" xml:lang="en"><placeTypeName code="25">Zone</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/26" xml:lang="en"><placeTypeName code="26">Historical State</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/27" xml:lang="en"><placeTypeName code="27">Historical County</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/29" xml:lang="en"><placeTypeName code="29">Continent</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/31" xml:lang="en"><placeTypeName code="31">Time Zone</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/32" xml:lang="en"><placeTypeName code="32">Geocoded Nearby Intersection</placeTypeName></placeType><placeType yahoo:uri="http://where.yahooapis.com/v1/placetype/33" xml:lang="en"><placeTypeName code="33">Estate</placeTypeName></placeType></placeTypes>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <place xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:uri="http://where.yahooapis.com/v1/place/1105779" xml:lang="en"><woeid>1105779</woeid><placeTypeName code="7">Town</placeTypeName><name>Sydney</name><country type="Country" code="AU">Australia</country><admin1 type="State" code="AU-NSW">New South Wales</admin1><admin2></admin2><admin3></admin3><locality1>Sydney</locality1><locality2></locality2><postal></postal><centroid><latitude>-33.869629</latitude><longitude>151.206955</longitude></centroid><boundingBox><southWest><latitude>-34.18961</latitude><longitude>150.517166</longitude></southWest><northEast><latitude>-33.57814</latitude><longitude>151.342575</longitude></northEast></boundingBox></place>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <places xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:start="0" yahoo:count="3" yahoo:total="3"><place yahoo:uri="http://where.yahooapis.com/v1/place/2344700" xml:lang="en"><woeid>2344700</woeid><placeTypeName code="8">State</placeTypeName><name>New South Wales</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/23424748" xml:lang="en"><woeid>23424748</woeid><placeTypeName code="12">Country</placeTypeName><name>Australia</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/24865674" xml:lang="en"><woeid>24865674</woeid><placeTypeName code="29">Continent</placeTypeName><name>Pacific</name></place></places>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <places xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:start="0" yahoo:count="9" yahoo:total="9"><place yahoo:uri="http://where.yahooapis.com/v1/place/23509401" xml:lang="en"><woeid>23509401</woeid><placeTypeName code="24">Colloquial</placeTypeName><name>South Coast NSW</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/2344700" xml:lang="en"><woeid>2344700</woeid><placeTypeName code="8">State</placeTypeName><name>New South Wales</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/28350885" xml:lang="en"><woeid>28350885</woeid><placeTypeName code="31">Time Zone</placeTypeName><name>Australia/Sydney</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/23424748" xml:lang="en"><woeid>23424748</woeid><placeTypeName code="12">Country</placeTypeName><name>Australia</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/24865674" xml:lang="en"><woeid>24865674</woeid><placeTypeName code="29">Continent</placeTypeName><name>Pacific</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/28289417" xml:lang="en"><woeid>28289417</woeid><placeTypeName code="19">Supername</placeTypeName><name>Oceania</name></place></places>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <places xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:start="0" yahoo:count="10" yahoo:total="1450"><place yahoo:uri="http://where.yahooapis.com/v1/place/1093994" xml:lang="en"><woeid>1093994</woeid><placeTypeName code="22">Suburb</placeTypeName><name>Abbotsford</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1094076" xml:lang="en"><woeid>1094076</woeid><placeTypeName code="22">Suburb</placeTypeName><name>Annandale</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1094115" xml:lang="en"><woeid>1094115</woeid><placeTypeName code="22">Suburb</placeTypeName><name>Artarmon</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1094126" xml:lang="en"><woeid>1094126</woeid><placeTypeName code="22">Suburb</placeTypeName><name>Ashfield</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1094130" xml:lang="en"><woeid>1094130</woeid><placeTypeName code="22">Suburb</placeTypeName><name>Asquith</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1094146" xml:lang="en"><woeid>1094146</woeid><placeTypeName code="22">Suburb</placeTypeName><name>Avalon</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1094203" xml:lang="en"><woeid>1094203</woeid><placeTypeName code="22">Suburb</placeTypeName><name>Balgowlah</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1094215" xml:lang="en"><woeid>1094215</woeid><placeTypeName code="22">Suburb</placeTypeName><name>Balmain</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1094231" xml:lang="en"><woeid>1094231</woeid><placeTypeName code="22">Suburb</placeTypeName><name>Bangor</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1094233" xml:lang="en"><woeid>1094233</woeid><placeTypeName code="22">Suburb</placeTypeName><name>Banksmeadow</name></place></places>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <places xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:start="0" yahoo:count="10" yahoo:total="67"><place yahoo:uri="http://where.yahooapis.com/v1/place/55863721" xml:lang="en"><woeid>55863721</woeid><placeTypeName code="7">Town</placeTypeName><name>Macdonaldtown</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/22721293" xml:lang="en"><woeid>22721293</woeid><placeTypeName code="7">Town</placeTypeName><name>Pleasure Point</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/28585730" xml:lang="en"><woeid>28585730</woeid><placeTypeName code="7">Town</placeTypeName><name>Ku-Ring-Gai Chase</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/55864471" xml:lang="en"><woeid>55864471</woeid><placeTypeName code="7">Town</placeTypeName><name>Chisholm Centre</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1096314" xml:lang="en"><woeid>1096314</woeid><placeTypeName code="7">Town</placeTypeName><name>Holsworthy</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1101796" xml:lang="en"><woeid>1101796</woeid><placeTypeName code="7">Town</placeTypeName><name>Dural</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1096586" xml:lang="en"><woeid>1096586</woeid><placeTypeName code="7">Town</placeTypeName><name>Kenthurst</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/22721374" xml:lang="en"><woeid>22721374</woeid><placeTypeName code="7">Town</placeTypeName><name>Lucas Heights</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1094387" xml:lang="en"><woeid>1094387</woeid><placeTypeName code="7">Town</placeTypeName><name>Berrilee</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1101412" xml:lang="en"><woeid>1101412</woeid><placeTypeName code="7">Town</placeTypeName><name>Cowan</name></place></places>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <place xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:uri="http://where.yahooapis.com/v1/place/2344700" xml:lang="en"><woeid>2344700</woeid><placeTypeName code="8">State</placeTypeName><name>New South Wales</name></place>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <places xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:start="0" yahoo:count="3" yahoo:total="3"><place yahoo:uri="http://where.yahooapis.com/v1/place/1104584" xml:lang="en"><woeid>1104584</woeid><placeTypeName code="7">Town</placeTypeName><name>Newcastle</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1105779" xml:lang="en"><woeid>1105779</woeid><placeTypeName code="7">Town</placeTypeName><name>Sydney</name></place><place yahoo:uri="http://where.yahooapis.com/v1/place/1106771" xml:lang="en"><woeid>1106771</woeid><placeTypeName code="7">Town</placeTypeName><name>Wollongong</name></place></places>
@@ -0,0 +1,209 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <title>RSpec results</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <meta http-equiv="Expires" content="-1" />
10
+ <meta http-equiv="Pragma" content="no-cache" />
11
+ <style type="text/css">
12
+ body {
13
+ margin: 0;
14
+ padding: 0;
15
+ background: #fff;
16
+ font-size: 80%;
17
+ }
18
+ </style>
19
+ </head>
20
+ <body>
21
+ <div class="rspec-report">
22
+ <script type="text/javascript">
23
+ // <![CDATA[
24
+ function moveProgressBar(percentDone) {
25
+ document.getElementById("rspec-header").style.width = percentDone +"%";
26
+ }
27
+ function makeRed(element_id) {
28
+ document.getElementById(element_id).style.background = '#C40D0D';
29
+ document.getElementById(element_id).style.color = '#FFFFFF';
30
+ }
31
+
32
+ function makeYellow(element_id) {
33
+ if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
34
+ {
35
+ document.getElementById(element_id).style.background = '#FAF834';
36
+ document.getElementById(element_id).style.color = '#000000';
37
+ }
38
+ else
39
+ {
40
+ document.getElementById(element_id).style.background = '#FAF834';
41
+ document.getElementById(element_id).style.color = '#000000';
42
+ }
43
+ }
44
+
45
+ // ]]>
46
+ </script>
47
+ <style type="text/css">
48
+ #rspec-header {
49
+ background: #65C400; color: #fff;
50
+ }
51
+
52
+ .rspec-report h1 {
53
+ margin: 0px 10px 0px 10px;
54
+ padding: 10px;
55
+ font-family: "Lucida Grande", Helvetica, sans-serif;
56
+ font-size: 1.8em;
57
+ }
58
+
59
+ #summary {
60
+ margin: 0; padding: 5px 10px;
61
+ font-family: "Lucida Grande", Helvetica, sans-serif;
62
+ text-align: right;
63
+ position: absolute;
64
+ top: 0px;
65
+ right: 0px;
66
+ }
67
+
68
+ #summary p {
69
+ margin: 0 0 0 2px;
70
+ }
71
+
72
+ #summary #totals {
73
+ font-size: 1.2em;
74
+ }
75
+
76
+ .example_group {
77
+ margin: 0 10px 5px;
78
+ background: #fff;
79
+ }
80
+
81
+ dl {
82
+ margin: 0; padding: 0 0 5px;
83
+ font: normal 11px "Lucida Grande", Helvetica, sans-serif;
84
+ }
85
+
86
+ dt {
87
+ padding: 3px;
88
+ background: #65C400;
89
+ color: #fff;
90
+ font-weight: bold;
91
+ }
92
+
93
+ dd {
94
+ margin: 5px 0 5px 5px;
95
+ padding: 3px 3px 3px 18px;
96
+ }
97
+
98
+ dd.spec.passed {
99
+ border-left: 5px solid #65C400;
100
+ border-bottom: 1px solid #65C400;
101
+ background: #DBFFB4; color: #3D7700;
102
+ }
103
+
104
+ dd.spec.failed {
105
+ border-left: 5px solid #C20000;
106
+ border-bottom: 1px solid #C20000;
107
+ color: #C20000; background: #FFFBD3;
108
+ }
109
+
110
+ dd.spec.not_implemented {
111
+ border-left: 5px solid #FAF834;
112
+ border-bottom: 1px solid #FAF834;
113
+ background: #FCFB98; color: #131313;
114
+ }
115
+
116
+ dd.spec.pending_fixed {
117
+ border-left: 5px solid #0000C2;
118
+ border-bottom: 1px solid #0000C2;
119
+ color: #0000C2; background: #D3FBFF;
120
+ }
121
+
122
+ .backtrace {
123
+ color: #000;
124
+ font-size: 12px;
125
+ }
126
+
127
+ a {
128
+ color: #BE5C00;
129
+ }
130
+
131
+ /* Ruby code, style similar to vibrant ink */
132
+ .ruby {
133
+ font-size: 12px;
134
+ font-family: monospace;
135
+ color: white;
136
+ background-color: black;
137
+ padding: 0.1em 0 0.2em 0;
138
+ }
139
+
140
+ .ruby .keyword { color: #FF6600; }
141
+ .ruby .constant { color: #339999; }
142
+ .ruby .attribute { color: white; }
143
+ .ruby .global { color: white; }
144
+ .ruby .module { color: white; }
145
+ .ruby .class { color: white; }
146
+ .ruby .string { color: #66FF00; }
147
+ .ruby .ident { color: white; }
148
+ .ruby .method { color: #FFCC00; }
149
+ .ruby .number { color: white; }
150
+ .ruby .char { color: white; }
151
+ .ruby .comment { color: #9933CC; }
152
+ .ruby .symbol { color: white; }
153
+ .ruby .regex { color: #44B4CC; }
154
+ .ruby .punct { color: white; }
155
+ .ruby .escape { color: white; }
156
+ .ruby .interp { color: white; }
157
+ .ruby .expr { color: white; }
158
+
159
+ .ruby .offending { background-color: gray; }
160
+ .ruby .linenum {
161
+ width: 75px;
162
+ padding: 0.1em 1em 0.2em 0;
163
+ color: #000000;
164
+ background-color: #FFFBD3;
165
+ }
166
+
167
+ </style>
168
+
169
+ <div id="rspec-header">
170
+ <h1>RSpec Results</h1>
171
+
172
+ <div id="summary">
173
+ <p id="totals">&nbsp;</p>
174
+ <p id="duration">&nbsp;</p>
175
+ </div>
176
+ </div>
177
+
178
+ <div class="results">
179
+ <div class="example_group">
180
+ <dl>
181
+ <dt id="example_group_1">YILP</dt>
182
+ <script type="text/javascript">moveProgressBar('10.0');</script>
183
+ <dd class="spec passed"><span class="passed_spec_name">should accept a query string and return a valid hash</span></dd>
184
+ <script type="text/javascript">moveProgressBar('20.0');</script>
185
+ <dd class="spec passed"><span class="passed_spec_name">should accept a numeric WOEID and return a valid hash</span></dd>
186
+ <script type="text/javascript">moveProgressBar('30.0');</script>
187
+ <dd class="spec passed"><span class="passed_spec_name">should accept a numeric WOEID, a parent option and return a valid hash</span></dd>
188
+ <script type="text/javascript">moveProgressBar('40.0');</script>
189
+ <dd class="spec passed"><span class="passed_spec_name">should accept a numeric woeid, an ancestors hash and return a valid hash</span></dd>
190
+ <script type="text/javascript">moveProgressBar('50.0');</script>
191
+ <dd class="spec passed"><span class="passed_spec_name">should accept a neighbors option</span></dd>
192
+ <script type="text/javascript">moveProgressBar('60.0');</script>
193
+ <dd class="spec passed"><span class="passed_spec_name">should accept a valid WOEID and a belongtos option and return a valid hash of a collection of places that contain a place</span></dd>
194
+ <script type="text/javascript">moveProgressBar('70.0');</script>
195
+ <dd class="spec passed"><span class="passed_spec_name">should accept a valid WOEID and a siblings option and return a collection of places that are siblings of a place</span></dd>
196
+ <script type="text/javascript">moveProgressBar('80.0');</script>
197
+ <dd class="spec passed"><span class="passed_spec_name">should accept a valid WOEID and a children option and return a collection of places that are children of a place.</span></dd>
198
+ <script type="text/javascript">moveProgressBar('90.0');</script>
199
+ <dd class="spec passed"><span class="passed_spec_name">should return placetypes</span></dd>
200
+ <script type="text/javascript">moveProgressBar('100.0');</script>
201
+ <dd class="spec passed"><span class="passed_spec_name">should have valid key-value pairs for language</span></dd>
202
+ </dl>
203
+ </div>
204
+ <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>4.317402 seconds</strong>";</script>
205
+ <script type="text/javascript">document.getElementById('totals').innerHTML = "10 examples, 0 failures";</script>
206
+ </div>
207
+ </div>
208
+ </body>
209
+ </html>
@@ -0,0 +1,99 @@
1
+ require File.dirname(__FILE__) + '/../lib/yilp.rb'
2
+ require "pp"
3
+ include YILP
4
+
5
+ describe YILP do
6
+ before do
7
+ @h = Hash.new
8
+ @valid_place = 'sydney'
9
+ @valid_woid = 1105777
10
+ @invalid_woid = "12dsag@!"
11
+ @invalid_place = "21gdssf32"
12
+ end
13
+
14
+ after(:each) do
15
+ @h.should_not be(nil)
16
+ end
17
+
18
+ it "should find the yilp api keys in ./config/yilp_appid.yml" do
19
+ @h = YILP::YILP::APP_ID
20
+ @h = YILP::YILP.find(@valid_place)
21
+ end
22
+
23
+ it "should accept a query string and return a valid hash" do
24
+ @h = YILP::YILP.find(@valid_place)
25
+ end
26
+
27
+ # /place/{woeid}
28
+ it "should accept a numeric WOEID and return a valid hash" do
29
+ @h = YILP::YILP.find(@valid_woid)
30
+ end
31
+
32
+ # /place/{woeid}/parent
33
+ it "should accept a numeric WOEID, a parent option and return a valid hash" do
34
+ @h = YILP::YILP.find(@valid_woid, :parent => true)
35
+ end
36
+
37
+ # /place/{woeid}/ancestors
38
+ it "should accept a numeric woeid, an ancestors hash and return a valid hash" do
39
+ @h = YILP::YILP.find(@valid_woid, :ancestors => true)
40
+ end
41
+
42
+ # /place/{woeid}/neighbors
43
+ it "should accept a neighbors option" do
44
+ @h = YILP::YILP.find(@valid_woid, :neighbors => true)
45
+ end
46
+
47
+ # /place/{woeid}/belongtos
48
+ it "should accept a valid WOEID and a belongtos option and return a valid hash of a collection of places that contain a place" do
49
+ @h = YILP::YILP.find(@valid_woid, :belongtos => true)
50
+ @h["places"]["place"].should_not be(nil)
51
+ end
52
+
53
+ # /place/{woeid}/siblings TODO: siblings may need a spec
54
+ it "should accept a valid WOEID and a siblings option and return a collection of places that are siblings of a place" do
55
+ @h = YILP::YILP.find(@valid_woid, :siblings => true)
56
+ @h["places"]["place"].should_not be(nil)
57
+ end
58
+
59
+ # /place/{woeid}/children
60
+ it "should accept a valid WOEID and a children option and return a collection of places that are children of a place." do
61
+ @h = YILP::YILP.find(@valid_woid, :children => true)
62
+ @h["places"]["place"].should_not be(nil)
63
+ end
64
+
65
+ # /placetypes
66
+ it "should return placetypes" do
67
+ @placetypes = YILP::YILP.placetypes
68
+ @placetypes.should_not be(nil)
69
+ @placetypes["place_types"]["place_type"].should_not be(nil)
70
+ end
71
+
72
+ it "should deal with internationalized placenames" do
73
+ @h = YILP::YILP.find('Moscow', :lang => :German)
74
+ @h["places"]["place"]["name"].should eql("Moskau")
75
+ @h = YILP::YILP.find('USA', :lang => :French)
76
+ @h["places"]["place"]["name"].should eql("États-Unis")
77
+ end
78
+
79
+ # http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes
80
+ #TODO: it "should accept a valid lang option and return"
81
+
82
+ it "should have valid key-value pairs for language" do
83
+ YILP::YILP.lang(:French).should eql('fr')
84
+ YILP::YILP.lang(:German).should eql('de')
85
+ YILP::YILP.lang(:Italian).should eql('de')
86
+ YILP::YILP.lang(:Dutch).should eql('nl')
87
+ YILP::YILP.lang(:Greek).should eql('el')
88
+ YILP::YILP.lang(:Spanish).should eql('es')
89
+ YILP::YILP.lang(:Portuguese).should eql('pt')
90
+ YILP::YILP.lang(:Arabic).should eql('ar')
91
+ YILP::YILP.lang(:Hebrew).should eql('he')
92
+ YILP::YILP.lang(:Russian).should eql('ru')
93
+ YILP::YILP.lang(:Chinese).should eql('zh')
94
+ YILP::YILP.lang(:Japanese).should eql('ja')
95
+ YILP::YILP.lang(:Hindi).should eql('hi')
96
+ YILP::YILP.lang(:Urdu).should eql('ur')
97
+ YILP::YILP.lang(:Sanskrit).should eql('sa')
98
+ end
99
+ end
@@ -0,0 +1,34 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{yilp}
5
+ s.version = "0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Shoaib Burq & David Troy"]
9
+ s.date = %q{2009-04-13}
10
+ s.description = %q{Ruby wrapper arround Yahoo Internet Location Platform}
11
+ s.email = %q{shoaib@nomad-labs.com}
12
+ s.extra_rdoc_files = ["lib/yilp.rb", "README.rdoc"]
13
+ s.files = ["config/yilp_appid.yml", "lib/yilp.rb", "Rakefile", "README.rdoc", "spec/fixtures/places_sydney.xml", "spec/fixtures/placetypes.xml", "spec/fixtures/woid_1105779.xml", "spec/fixtures/woid_1105779_ancestors.xml", "spec/fixtures/woid_1105779_belongto.xml", "spec/fixtures/woid_1105779_children.xml", "spec/fixtures/woid_1105779_neighbors.xml", "spec/fixtures/woid_1105779_parent.xml", "spec/fixtures/woid_1105779_siblings.xml", "spec/specs.html", "spec/yilp_spec.rb", "Manifest", "yilp.gemspec"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://yilp.rubyforge.org}
16
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Yilp", "--main", "README.rdoc"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = %q{yilp}
19
+ s.rubygems_version = %q{1.3.1}
20
+ s.summary = %q{Ruby wrapper arround Yahoo Internet Location Platform}
21
+
22
+ if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
+ s.specification_version = 2
25
+
26
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
+ s.add_development_dependency(%q<active_support>, [">= 0"])
28
+ else
29
+ s.add_dependency(%q<active_support>, [">= 0"])
30
+ end
31
+ else
32
+ s.add_dependency(%q<active_support>, [">= 0"])
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yilp
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - Shoaib Burq & David Troy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-04-13 00:00:00 +10:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: active_support
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ description: Ruby wrapper arround Yahoo Internet Location Platform
26
+ email: shoaib@nomad-labs.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - lib/yilp.rb
33
+ - README.rdoc
34
+ files:
35
+ - config/yilp_appid.yml
36
+ - lib/yilp.rb
37
+ - Rakefile
38
+ - README.rdoc
39
+ - spec/fixtures/places_sydney.xml
40
+ - spec/fixtures/placetypes.xml
41
+ - spec/fixtures/woid_1105779.xml
42
+ - spec/fixtures/woid_1105779_ancestors.xml
43
+ - spec/fixtures/woid_1105779_belongto.xml
44
+ - spec/fixtures/woid_1105779_children.xml
45
+ - spec/fixtures/woid_1105779_neighbors.xml
46
+ - spec/fixtures/woid_1105779_parent.xml
47
+ - spec/fixtures/woid_1105779_siblings.xml
48
+ - spec/specs.html
49
+ - spec/yilp_spec.rb
50
+ - Manifest
51
+ - yilp.gemspec
52
+ has_rdoc: true
53
+ homepage: http://yilp.rubyforge.org
54
+ post_install_message:
55
+ rdoc_options:
56
+ - --line-numbers
57
+ - --inline-source
58
+ - --title
59
+ - Yilp
60
+ - --main
61
+ - README.rdoc
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: "0"
69
+ version:
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: "1.2"
75
+ version:
76
+ requirements: []
77
+
78
+ rubyforge_project: yilp
79
+ rubygems_version: 1.3.1
80
+ signing_key:
81
+ specification_version: 2
82
+ summary: Ruby wrapper arround Yahoo Internet Location Platform
83
+ test_files: []
84
+