geeo_code 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source :gemcutter
2
+
3
+ gem "yajl-ruby"
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
data/geeo_code.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path("../lib/geeo_code/version", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "geeo_code"
6
+ s.version = GeeoCode::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Luke van der Hoeven"]
9
+ s.email = ["hungerandthirst@gmail.com"]
10
+ s.homepage = "http://rubygems.org/gems/geeo_code"
11
+ s.summary = "Quick gem to do google geocoding based on the json/xml api (v3)."
12
+ s.description = "This gem is has a simple, singular purpose to wrap itself warmly around google's
13
+ geocoding apis and give you back cleanly parsed hashes of the data. Maybe, one day, this will
14
+ send back Ruby objects rather than simple hashes, but this does the trick for now."
15
+
16
+ s.required_rubygems_version = ">= 1.3.6"
17
+ s.rubyforge_project = "geeo_code"
18
+
19
+ s.add_development_dependency "bundler", ">= 1.0.3"
20
+
21
+ s.files = `git ls-files`.split("\n")
22
+ s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
23
+ s.require_path = 'lib'
24
+
25
+ require 'bundler'
26
+ Gem::Specification.new do |s|
27
+ s.add_bundler_dependencies
28
+ end
29
+ end
@@ -0,0 +1,3 @@
1
+ class GeeoCode
2
+ VERSION = "0.0.1"
3
+ end
data/lib/geeo_code.rb ADDED
@@ -0,0 +1,57 @@
1
+ require 'yajl'
2
+ require 'open-uri'
3
+ require 'cgi'
4
+
5
+ require 'geeo_code/version'
6
+
7
+ class GeeoCode
8
+ GOOGLE_ENDPOINT = "http://maps.googleapis.com/maps/api/geocode/".freeze
9
+
10
+ VALID_OPTIONS = [:proxy, :sensor, :format]
11
+
12
+ attr_accessor *VALID_OPTIONS
13
+
14
+ def initialize( options={} )
15
+ options.map {|k,v| send("#{k}=".to_sym, v)}
16
+ end
17
+
18
+ def configure
19
+ yield self
20
+ end
21
+
22
+ def reverse(address)
23
+ begin
24
+ url = URI.parse("#{GOOGLE_ENDPOINT}#{format}?address=#{CGI::escape(address)}&sensor=#{sensor}")
25
+ content = open(url, :proxy => proxy)
26
+ doc = Yajl::Parser.parse(content, :symbolize_keys => true)
27
+
28
+ address = {}
29
+ geometry = {}
30
+ match_type = "none"
31
+ # puts doc
32
+
33
+ if doc[:status] == "OK"
34
+ results = doc[:results].first
35
+
36
+ data = results[:address_components]
37
+ data.each do |piece|
38
+ address[:street_number] = piece[:short_name] if piece[:types].include? "street_number"
39
+ address[:street_name] = piece[:short_name] if piece[:types].include? "route"
40
+ address[:city] = piece[:short_name] if piece[:types].include? "locality"
41
+ address[:state] = piece[:short_name] if piece[:types].include? "administrative_area_level_1"
42
+ address[:zip_code] = piece[:short_name] if piece[:types].include? "postal_code"
43
+ end
44
+
45
+ geometry = results[:geometry]
46
+ lat_lang = results[:geometry][:location]
47
+ match_type = results[:partial_match] ? "partial" : "exact"
48
+
49
+ end
50
+
51
+ return {:address => address, :geometry => geometry, :match_type => match_type}
52
+ rescue Object => err
53
+ msg = "Error! #{err.message}"
54
+ puts msg
55
+ end
56
+ end
57
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: geeo_code
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Luke van der Hoeven
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-11-09 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: bundler
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 0
30
+ - 3
31
+ version: 1.0.3
32
+ type: :development
33
+ prerelease: false
34
+ version_requirements: *id001
35
+ description: |-
36
+ This gem is has a simple, singular purpose to wrap itself warmly around google's
37
+ geocoding apis and give you back cleanly parsed hashes of the data. Maybe, one day, this will
38
+ send back Ruby objects rather than simple hashes, but this does the trick for now.
39
+ email:
40
+ - hungerandthirst@gmail.com
41
+ executables: []
42
+
43
+ extensions: []
44
+
45
+ extra_rdoc_files: []
46
+
47
+ files:
48
+ - .gitignore
49
+ - Gemfile
50
+ - Rakefile
51
+ - geeo_code.gemspec
52
+ - lib/geeo_code.rb
53
+ - lib/geeo_code/version.rb
54
+ has_rdoc: true
55
+ homepage: http://rubygems.org/gems/geeo_code
56
+ licenses: []
57
+
58
+ post_install_message:
59
+ rdoc_options: []
60
+
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ segments:
69
+ - 0
70
+ version: "0"
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ segments:
77
+ - 1
78
+ - 3
79
+ - 6
80
+ version: 1.3.6
81
+ requirements: []
82
+
83
+ rubyforge_project: geeo_code
84
+ rubygems_version: 1.3.7
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: Quick gem to do google geocoding based on the json/xml api (v3).
88
+ test_files: []
89
+