graticule 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/CHANGELOG.txt +4 -0
  2. data/Manifest.txt +9 -0
  3. data/Rakefile +69 -0
  4. data/lib/graticule.rb +2 -0
  5. data/lib/graticule/cli.rb +6 -4
  6. data/lib/graticule/geocoder/base.rb +112 -0
  7. data/lib/graticule/geocoder/geocoder_us.rb +1 -1
  8. data/lib/graticule/geocoder/google.rb +5 -5
  9. data/lib/graticule/geocoder/host_ip.rb +9 -18
  10. data/lib/graticule/geocoder/local_search_maps.rb +4 -4
  11. data/lib/graticule/geocoder/meta_carta.rb +1 -6
  12. data/lib/graticule/geocoder/rest.rb +6 -98
  13. data/lib/graticule/geocoder/yahoo.rb +1 -13
  14. data/lib/graticule/version.rb +1 -1
  15. data/site/index.html +114 -0
  16. data/site/plugin.html +82 -0
  17. data/site/stylesheets/style.css +73 -0
  18. data/test/config.yml.default +36 -0
  19. data/test/fixtures/responses/geocoder_us/success.xml +13 -5
  20. data/test/fixtures/responses/geocoder_us/unknown.xml +1 -1
  21. data/test/fixtures/responses/google/badkey.xml +1 -10
  22. data/test/fixtures/responses/google/missing_address.xml +1 -10
  23. data/test/fixtures/responses/google/partial.xml +1 -0
  24. data/test/fixtures/responses/google/success.xml +1 -37
  25. data/test/fixtures/responses/google/unavailable.xml +1 -10
  26. data/test/fixtures/responses/google/unknown_address.xml +1 -10
  27. data/test/fixtures/responses/host_ip/private.txt +1 -1
  28. data/test/fixtures/responses/host_ip/success.txt +1 -1
  29. data/test/fixtures/responses/host_ip/unknown.txt +1 -1
  30. data/test/fixtures/responses/local_search_maps/empty.txt +1 -0
  31. data/test/fixtures/responses/local_search_maps/not_found.txt +1 -0
  32. data/test/fixtures/responses/local_search_maps/success.txt +1 -1
  33. data/test/fixtures/responses/meta_carta/bad_address.xml +15 -7
  34. data/test/fixtures/responses/meta_carta/success.xml +29 -21
  35. data/test/fixtures/responses/yahoo/success.xml +2 -2
  36. data/test/fixtures/responses/yahoo/unknown_address.xml +6 -6
  37. data/test/mocks/uri.rb +3 -2
  38. data/test/unit/graticule/geocoder/google_test.rb +14 -0
  39. data/test/unit/graticule/geocoder/host_ip_test.rb +1 -0
  40. data/test/unit/graticule/geocoder/meta_carta_test.rb +1 -1
  41. data/test/unit/graticule/location_test.rb +1 -1
  42. metadata +10 -3
  43. data/test/unit/graticule/cli_test.rb +0 -26
@@ -1,10 +1 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <kml xmlns="http://earth.google.com/kml/2.0">
3
- <Response>
4
- <name>1600</name>
5
- <Status>
6
- <code>602</code>
7
- <request>geocode</request>
8
- </Status>
9
- </Response>
10
- </kml>
1
+ <?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.1"><Response><name>1600</name><Status><code>602</code><request>geocode</request></Status></Response></kml>
@@ -1,4 +1,4 @@
1
1
  Country: (Private Address) (XX)
2
2
  City: (Private Address)
3
3
  Latitude:
4
- Longitude:
4
+ Longitude:
@@ -1,4 +1,4 @@
1
1
  Country: UNITED STATES (US)
2
2
  City: Mountain View, CA
3
3
  Latitude: 37.402
4
- Longitude: -122.078
4
+ Longitude: -122.078
@@ -1,4 +1,4 @@
1
1
  Country: (Unknown Country?) (XX)
2
2
  City: (Unknown City?)
3
3
  Latitude:
4
- Longitude:
4
+ Longitude:
@@ -0,0 +1 @@
1
+ alert('Please provide a location');
@@ -0,0 +1 @@
1
+ alert('location not found');
@@ -1 +1 @@
1
- map.centerAndZoom(new GPoint(-0.130427, 51.510036), 4);
1
+ map.centerAndZoom(new GPoint(-0.130427, 51.510036), 4);
@@ -1,9 +1,17 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+
2
3
  <!DOCTYPE Locations SYSTEM "Locations.dtd">
3
- <Locations xmlns:gml="http://www.opengis.net/gml" CreatedBy="MetaCarta GeoParser v3.5.0-labs-alpha" CreatedOn="Sat Jun 17 02:05:42 2006" ConvertedFromBinaryFormat="False" InputByteLength="0">
4
- <ViewBox>
5
- <gml:Box srsName="epsg:4326">
6
- <gml:coordinates>-90.000000,-180.000000 90.000000,180.000000</gml:coordinates>
7
- </gml:Box>
8
- </ViewBox>
4
+
5
+ <Locations
6
+ xmlns:gml="http://www.opengis.net/gml"
7
+ CreatedBy="MetaCarta GeoParser v3.7.0-labs"
8
+ CreatedOn="Wed Apr 25 22:12:33 2007"
9
+ ConvertedFromBinaryFormat="0"
10
+ InputByteLength="0">
11
+ <ViewBox>
12
+
13
+ <gml:Box srsName="epsg:4326">
14
+ <gml:coordinates>-180.000000,-90.000000 180.000000,90.000000</gml:coordinates>
15
+ </gml:Box>
16
+ </ViewBox>
9
17
  </Locations>
@@ -1,23 +1,31 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+
2
3
  <!DOCTYPE Locations SYSTEM "Locations.dtd">
3
- <Locations xmlns:gml="http://www.opengis.net/gml" CreatedBy="MetaCarta GeoParser v3.5.0-labs-alpha" CreatedOn="Thu Jun 15 23:56:50 2006" ConvertedFromBinaryFormat="False" InputByteLength="0">
4
- <ViewBox>
5
- <gml:Box srsName="epsg:4326">
6
- <gml:coordinates>26.238611,37.293889 40.438611,51.493889</gml:coordinates>
7
- </gml:Box>
8
- </ViewBox>
9
- <Location Name="Baghdad" Type="PPLC" Population="5672516" Hierarchy="Iraq/Baghdad/Baghdad">
10
- <ViewBox>
11
- <gml:Box srsName="epsg:4326">
12
- <gml:coordinates>26.238611,37.293889 40.438611,51.493889</gml:coordinates>
13
- </gml:Box>
14
- </ViewBox>
15
- <RemainingQuery/>
16
- <Confidence>0.195185</Confidence>
17
- <Centroid>
18
- <gml:Point>
19
- <gml:coordinates>44.393889,33.338611</gml:coordinates>
20
- </gml:Point>
21
- </Centroid>
22
- </Location>
4
+
5
+ <Locations
6
+ xmlns:gml="http://www.opengis.net/gml"
7
+ CreatedBy="MetaCarta GeoParser v3.7.0-labs"
8
+ CreatedOn="Wed Apr 25 22:12:33 2007"
9
+ ConvertedFromBinaryFormat="0"
10
+ InputByteLength="0">
11
+ <ViewBox>
12
+
13
+ <gml:Box srsName="epsg:4326">
14
+ <gml:coordinates>43.593900,32.538600 45.193900,34.138600</gml:coordinates>
15
+ </gml:Box>
16
+ </ViewBox>
17
+ <Location
18
+
19
+ Name="Baghdad"
20
+ Type=""
21
+ Population="-1"
22
+ Hierarchy="">
23
+ <ViewBox>
24
+ <gml:Box srsName="epsg:4326">
25
+ <gml:coordinates>43.593900,32.538600 45.193900,34.138600</gml:coordinates>
26
+ </gml:Box>
27
+ </ViewBox>
28
+ <RemainingQuery></RemainingQuery>
29
+ <Confidence>0.566875</Confidence> <Centroid><gml:Point><gml:coordinates>44.393900000000002,33.3386</gml:coordinates></gml:Point></Centroid>
30
+ </Location>
23
31
  </Locations>
@@ -1,3 +1,3 @@
1
1
  <?xml version="1.0"?>
2
- <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:maps" xsi:schemaLocation="urn:yahoo:maps http://api.local.yahoo.com/MapsService/V1/GeocodeResponse.xsd"><Result precision="address"><Latitude>37.416384</Latitude><Longitude>-122.024853</Longitude><Address>701 FIRST AVE</Address><City>SUNNYVALE</City><State>CA</State><Zip>94089-1019</Zip><Country>US</Country></Result></ResultSet>
3
- <!-- ws01.search.re2.yahoo.com compressed/chunked Sun Oct 15 18:23:09 PDT 2006 -->
2
+ <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:maps" xsi:schemaLocation="urn:yahoo:maps http://api.local.yahoo.com/MapsService/V1/GeocodeResponse.xsd"><Result precision="address" warning="The exact location could not be found, here is the closest match: 701 First Ave, Sunnyvale, CA 94089"><Latitude>37.416384</Latitude><Longitude>-122.024853</Longitude><Address>701 FIRST AVE</Address><City>SUNNYVALE</City><State>CA</State><Zip>94089-1019</Zip><Country>US</Country></Result></ResultSet>
3
+ <!-- ws06.search.re2.yahoo.com uncompressed/chunked Wed Apr 25 15:13:01 PDT 2007 -->
@@ -1,6 +1,6 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Error xmlns="urn:yahoo:api">
3
- The following errors were detected:
4
- <Message>unable to parse location</Message>
5
- </Error>
6
- <!-- ws02.search.scd.yahoo.com uncompressed/chunked Thu Jun 8 15:53:20 PDT 2006 -->
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Error xmlns="urn:yahoo:api">
3
+ The following errors were detected:
4
+ <Message>unable to parse location</Message>
5
+ </Error>
6
+ <!-- ws05.search.re2.yahoo.com uncompressed/chunked Wed Apr 25 15:13:01 PDT 2007 -->
data/test/mocks/uri.rb CHANGED
@@ -40,11 +40,12 @@ class URI::HTTP # :nodoc:
40
40
 
41
41
  alias original_open open
42
42
 
43
- def open
43
+ def open(*args)
44
44
  self.class.uris << self.to_s
45
45
  io = StringIO.new(self.class.responses.shift)
46
46
  OpenURI::Meta.init(io)
47
- yield io
47
+ yield io if block_given?
48
+ io
48
49
  end
49
50
 
50
51
  end
@@ -24,6 +24,20 @@ module Graticule
24
24
  )
25
25
  assert_equal location, @geocoder.locate('1600 Amphitheatre Parkway, Mountain View, CA')
26
26
  end
27
+
28
+ def test_partial
29
+ return unless prepare_response(:partial)
30
+
31
+ location = Location.new(
32
+ :locality => "San Francisco",
33
+ :region => "CA",
34
+ :country => "US",
35
+ :longitude => -122.418333,
36
+ :latitude => 37.775000
37
+ )
38
+
39
+ assert_equal location, @geocoder.locate('sf ca')
40
+ end
27
41
 
28
42
  def test_bad_key
29
43
  return unless prepare_response(:badkey)
@@ -28,6 +28,7 @@ module Graticule
28
28
  prepare_response :private
29
29
  assert_raises(AddressError) { @geocoder.locate('127.0.0.1') }
30
30
  end
31
+
31
32
  private
32
33
 
33
34
  def prepare_response(id = :success)
@@ -14,7 +14,7 @@ module Graticule
14
14
  def test_locate
15
15
  prepare_response(:success)
16
16
 
17
- expected = Location.new :latitude => 44.393889, :longitude => 33.338611
17
+ expected = Location.new :latitude => 44.3939, :longitude => 33.3386
18
18
 
19
19
  assert_equal expected, @geocoder.locate('baghdad')
20
20
  assert_equal true, URI::HTTP.responses.empty?
@@ -29,7 +29,7 @@ module Graticule
29
29
  assert_equal Location.new, Location.new
30
30
 
31
31
  attrs = {:latitude => 100.5389, :longitude => -147.5893, :street => '123 A Street',
32
- :locality => 'Somewhere', :region => 'NO', :postal_code => '12345', :country => 'USA', :precision => :address}
32
+ :locality => 'Somewhere', :region => 'NO', :postal_code => '12345', :country => 'USA'}
33
33
 
34
34
  assert_equal Location.new(attrs), Location.new(attrs)
35
35
  attrs.each do |k,v|
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: graticule
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.2
7
- date: 2007-03-27 00:00:00 -04:00
6
+ version: 0.2.3
7
+ date: 2007-04-27 00:00:00 -04:00
8
8
  summary: API for using all the popular geocoding services.
9
9
  require_paths:
10
10
  - lib
@@ -43,6 +43,7 @@ files:
43
43
  - lib/graticule/distance/spherical.rb
44
44
  - lib/graticule/distance/vincenty.rb
45
45
  - lib/graticule/geocoder.rb
46
+ - lib/graticule/geocoder/base.rb
46
47
  - lib/graticule/geocoder/bogus.rb
47
48
  - lib/graticule/geocoder/geocoder_ca.rb
48
49
  - lib/graticule/geocoder/geocoder_us.rb
@@ -55,11 +56,16 @@ files:
55
56
  - lib/graticule/geocoder/yahoo.rb
56
57
  - lib/graticule/location.rb
57
58
  - lib/graticule/version.rb
59
+ - site/index.html
60
+ - site/plugin.html
61
+ - site/stylesheets/style.css
62
+ - test/config.yml.default
58
63
  - test/fixtures/responses/geocoder_us/success.xml
59
64
  - test/fixtures/responses/geocoder_us/unknown.xml
60
65
  - test/fixtures/responses/google/badkey.xml
61
66
  - test/fixtures/responses/google/limit.xml
62
67
  - test/fixtures/responses/google/missing_address.xml
68
+ - test/fixtures/responses/google/partial.xml
63
69
  - test/fixtures/responses/google/server_error.xml
64
70
  - test/fixtures/responses/google/success.xml
65
71
  - test/fixtures/responses/google/unavailable.xml
@@ -67,6 +73,8 @@ files:
67
73
  - test/fixtures/responses/host_ip/private.txt
68
74
  - test/fixtures/responses/host_ip/success.txt
69
75
  - test/fixtures/responses/host_ip/unknown.txt
76
+ - test/fixtures/responses/local_search_maps/empty.txt
77
+ - test/fixtures/responses/local_search_maps/not_found.txt
70
78
  - test/fixtures/responses/local_search_maps/success.txt
71
79
  - test/fixtures/responses/meta_carta/bad_address.xml
72
80
  - test/fixtures/responses/meta_carta/multiple.xml
@@ -91,7 +99,6 @@ files:
91
99
  - test/unit/graticule/geocoder_test.rb
92
100
  - test/unit/graticule/location_test.rb
93
101
  test_files:
94
- - test/unit/graticule/cli_test.rb
95
102
  - test/unit/graticule/distance_test.rb
96
103
  - test/unit/graticule/geocoder_test.rb
97
104
  - test/unit/graticule/location_test.rb
@@ -1,26 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../test_helper'
2
- require 'graticule/cli'
3
-
4
- module Graticule
5
- class CliTest < Test::Unit::TestCase
6
-
7
- def setup
8
- URI::HTTP.responses = []
9
- URI::HTTP.uris = []
10
- end
11
-
12
- def test_start
13
- prepare_response(:success)
14
- Kernel.expects(:puts)
15
- Kernel.stubs(:puts)
16
- result = Graticule::Cli.start ['-s', 'yahoo', '-a', 'YahooDemo', 'Saugatuck,', 'MI']
17
- end
18
-
19
- protected
20
-
21
- def prepare_response(id)
22
- URI::HTTP.responses << response('yahoo', id)
23
- end
24
-
25
- end
26
- end