simplegeo 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,16 +1,18 @@
1
- = sg-ruby
1
+ = simplegeo
2
2
 
3
3
  A SimpleGeo Ruby client.
4
4
 
5
5
  For the specific documentation on APIs (and the full list of parameters) see:
6
6
 
7
- http://help.simplegeo.com/faqs/api-documentation/endpoints
7
+ * http://simplegeo.com/docs/api-endpoints
8
+ * http://simplegeo.com/docs/clients-code-libraries/ruby
9
+ * http://simplegeo.com/docs/tutorials/ruby
8
10
 
9
11
  == Installation
10
12
 
11
13
  Open the Terminal or other UNIX shell and type:
12
14
 
13
- sudo gem install sg-ruby
15
+ sudo gem install simplegeo
14
16
 
15
17
  == Examples
16
18
 
@@ -19,94 +21,6 @@ Start by requiring SimpleGeo and setting your authentication credentials:
19
21
  require 'simple_geo'
20
22
  SimpleGeo::Client.set_credentials('token', 'secret')
21
23
 
22
- === Getting a record
23
-
24
- record = SimpleGeo::Client.get_record('com.simplegeo.global.geonames', '5373629')
25
-
26
- === Getting multiple records
27
-
28
- records = SimpleGeo::Client.get_records('com.simplegeo.global.geonames', ['1234', '5678'])
29
-
30
- === Adding a record
31
-
32
- record = SimpleGeo::Record.new({
33
- :id => '1234',
34
- :created => Time.now,
35
- :lat => 37.759650000000001,
36
- :lon => -122.42608,
37
- :layer => 'com.example.testlayer',
38
- :properties => {
39
- :test_property => 'foobar'
40
- }
41
- })
42
- SimpleGeo::Client.add_record(record)
43
-
44
- === Updating a record
45
-
46
- record = SimpleGeo::Client.get_record('com.example.testlayer', '1234')
47
- record.lat = 40.714269
48
- record.lon = -74.005973
49
- SimpleGeo::Client.add_record(record)
50
-
51
- === Adding / updating multiple records
52
-
53
- records = [
54
- SimpleGeo::Record.new({
55
- :id => '1234',
56
- :created => Time.now,
57
- :lat => 37.759650000000001,
58
- :lon => -122.42608,
59
- :layer => 'com.example.testlayer',
60
- :properties => {
61
- :test_property => 'foobar'
62
- }
63
- }),
64
- SimpleGeo::Record.new({
65
- :id => '5678',
66
- :created => Time.now,
67
- :lat => 37.755470000000003,
68
- :lon => -122.420646,
69
- :layer => 'com.example.testlayer',
70
- :properties => {
71
- :mad_prop => 'baz'
72
- }
73
- })
74
- ]
75
- SimpleGeo::Client.add_records('com.example.testlayer', records)
76
-
77
- === Deleting a record
78
-
79
- SimpleGeo::Client.delete_record('1234')
80
-
81
- === Getting a record's history
82
-
83
- history = SimpleGeo::Client.get_history('com.example.testlayer', '1234')
84
-
85
- === Getting nearby records
86
-
87
- See http://help.simplegeo.com/faqs/api-documentation/endpoints for other optional params
88
-
89
- # by lat, lon
90
- records = SimpleGeo::Client.get_nearby_records('com.example.testlayer',
91
- :lat => 37.759650000000001,
92
- :lon => -122.42608)
93
-
94
- # by geohash
95
- records = SimpleGeo::Client.get_nearby_records('com.example.testlayer',
96
- :geohash => '9q8yy1ujcsfm')
97
-
98
- === Getting a nearby address for a lat and lon
99
-
100
- nearby_address = SimpleGeo::Client.get_nearby_address(37.759650000000001, -122.42608)
101
-
102
- === Getting SpotRank density information
103
-
104
- # by day
105
- density_info = SimpleGeo::Client.get_density(37.75965, -122.42608, 'sat')
106
-
107
- # by hour
108
- density_info = SimpleGeo::Client.get_density(37.75965, -122.42608, 'sat', '16' )
109
-
110
24
  === Other APIs
111
25
 
112
26
  For more examples see: spec/client_spec.rb
@@ -110,6 +110,17 @@ module SimpleGeo
110
110
  HashUtils.recursively_symbolize_keys geojson_hash
111
111
  end
112
112
 
113
+ def get_context_by_address(address)
114
+ address = URI.escape(address, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
115
+ geojson_hash = get Endpoint.context_by_address(address)
116
+ HashUtils.recursively_symbolize_keys geojson_hash
117
+ end
118
+
119
+ def get_context_ip(ip)
120
+ geojson_hash = get Endpoint.context_ip(ip)
121
+ HashUtils.recursively_symbolize_keys geojson_hash
122
+ end
123
+
113
124
  # Required
114
125
  # lat - The latitude of the point
115
126
  # lon - The longitude of the point
@@ -129,6 +140,17 @@ module SimpleGeo
129
140
  HashUtils.recursively_symbolize_keys geojson_hash
130
141
  end
131
142
 
143
+ def get_places_by_address(address, options={})
144
+ address = URI.escape(address, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
145
+ geojson_hash = get Endpoint.places_by_address(address, options)
146
+ HashUtils.recursively_symbolize_keys geojson_hash
147
+ end
148
+
149
+ def get_places_by_ip(ip='ip', options={})
150
+ geojson_hash = get Endpoint.places_by_ip(ip, options)
151
+ HashUtils.recursively_symbolize_keys geojson_hash
152
+ end
153
+
132
154
  def get_density(lat, lon, day, hour=nil)
133
155
  geojson_hash = get Endpoint.density(lat, lon, day, hour)
134
156
  geojson_hash = HashUtils.recursively_symbolize_keys(geojson_hash)
@@ -40,15 +40,48 @@ module SimpleGeo
40
40
  endpoint_url "context/#{lat},#{lon}.json", '1.0'
41
41
  end
42
42
 
43
+ def context_by_address(address)
44
+ endpoint_url "context/address.json?address=#{address}", '1.0'
45
+ end
46
+
47
+ def context_ip(ip)
48
+ endpoint_url "context/#{ip}.json", '1.0'
49
+ end
50
+
43
51
  def places(lat, lon, options)
44
52
  if options.empty?
45
53
  endpoint_url "places/#{lat},#{lon}.json", '1.0'
46
54
  else
47
- params = ""
55
+ params = []
56
+ options.each do |k,v|
57
+ params << "#{k}=#{v}"
58
+ end
59
+ endpoint_url "places/#{lat},#{lon}.json?#{params.join("&")}", '1.0'
60
+ end
61
+ end
62
+
63
+ def places_by_address(address, options)
64
+ if options.empty?
65
+ endpoint_url "places/address.json?address=#{address}", '1.0'
66
+ else
67
+ params = []
68
+ params << "address=#{address}"
69
+ options.each do |k,v|
70
+ params << "#{k}=#{v}"
71
+ end
72
+ endpoint_url "places/address.json?#{params.join("&")}", '1.0'
73
+ end
74
+ end
75
+
76
+ def places_by_ip(ip, options)
77
+ if options.empty?
78
+ endpoint_url "places/#{ip}.json", '1.0'
79
+ else
80
+ params = []
48
81
  options.each do |k,v|
49
- params << "#{k}=#{v}&"
82
+ params << "#{k}=#{v}"
50
83
  end
51
- endpoint_url "places/#{lat},#{lon}.json?#{params.chop!}", '1.0'
84
+ endpoint_url "places/#{ip}.json?#{params.join("&")}", '1.0'
52
85
  end
53
86
  end
54
87
 
data/simplegeo.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{simplegeo}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brian Ryckbost", "Andrew Mager"]
12
- s.date = %q{2011-01-12}
12
+ s.date = %q{2011-02-09}
13
13
  s.email = %q{andrew@simplegeo.com}
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE",
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplegeo
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease:
4
+ hash: 21
5
+ prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Brian Ryckbost
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-01-12 00:00:00 -08:00
19
+ date: 2011-02-09 00:00:00 -08:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  requirements: []
151
151
 
152
152
  rubyforge_project:
153
- rubygems_version: 1.4.2
153
+ rubygems_version: 1.3.7
154
154
  signing_key:
155
155
  specification_version: 3
156
156
  summary: A SimpleGeo Ruby Client