mojodna-fireeagle 0.7.0.1 → 0.8.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/config/requirements.rb +2 -2
- data/lib/fireeagle/client.rb +14 -14
- data/lib/fireeagle/location.rb +17 -2
- data/lib/fireeagle/response.rb +1 -1
- data/lib/fireeagle/user.rb +6 -2
- data/lib/fireeagle/version.rb +2 -2
- data/lib/fireeagle.rb +3 -2
- data/spec/fireeagle_location_spec.rb +7 -1
- data/spec/fireeagle_response_spec.rb +1 -1
- data/spec/fireeagle_spec.rb +46 -7
- data/spec/spec_helper.rb +26 -98
- metadata +3 -3
data/History.txt
CHANGED
data/config/requirements.rb
CHANGED
@@ -2,7 +2,7 @@ require 'fileutils'
|
|
2
2
|
include FileUtils
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
|
-
%w[rake hoe newgem rubigen oauth
|
5
|
+
%w[rake hoe newgem rubigen oauth geo_ruby].each do |req_gem|
|
6
6
|
begin
|
7
7
|
require req_gem
|
8
8
|
rescue LoadError
|
@@ -15,4 +15,4 @@ end
|
|
15
15
|
|
16
16
|
$:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
|
17
17
|
|
18
|
-
require 'fireeagle'
|
18
|
+
require 'fireeagle'
|
data/lib/fireeagle/client.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
module FireEagle
|
2
2
|
class Client
|
3
3
|
# TODO add access_token=() and request_token=() methods that check whether the tokens are usable
|
4
4
|
|
@@ -114,7 +114,7 @@ class FireEagle
|
|
114
114
|
"#{FireEagle::MOBILE_AUTH_URL}#{@app_id}"
|
115
115
|
end
|
116
116
|
|
117
|
-
# The URL the user must access to authorize this token.
|
117
|
+
# The URL the user must access to authorize this token. get_request_token must be called first. For use by web-based and desktop-based applications.
|
118
118
|
def authorization_url
|
119
119
|
raise FireEagle::ArgumentError, "call #get_request_token first" if @request_token.nil?
|
120
120
|
request_token.authorize_url
|
@@ -154,7 +154,7 @@ class FireEagle
|
|
154
154
|
# * <tt>plazes_id</tt>
|
155
155
|
def lookup(params)
|
156
156
|
raise FireEagle::ArgumentError, "OAuth Access Token Required" unless @access_token
|
157
|
-
response = get(FireEagle::LOOKUP_API_PATH
|
157
|
+
response = get(FireEagle::LOOKUP_API_PATH, :params => params)
|
158
158
|
FireEagle::Response.new(response.body).locations
|
159
159
|
end
|
160
160
|
|
@@ -186,14 +186,14 @@ class FireEagle
|
|
186
186
|
def update(location = {})
|
187
187
|
raise FireEagle::ArgumentError, "OAuth Access Token Required" unless @access_token
|
188
188
|
location = sanitize_location_hash(location)
|
189
|
-
response = post(FireEagle::UPDATE_API_PATH
|
189
|
+
response = post(FireEagle::UPDATE_API_PATH, :params => location)
|
190
190
|
FireEagle::Response.new(response.body)
|
191
191
|
end
|
192
192
|
|
193
193
|
# Returns the Location of a User.
|
194
194
|
def user
|
195
195
|
raise FireEagle::ArgumentError, "OAuth Access Token Required" unless @access_token
|
196
|
-
response = get(FireEagle::USER_API_PATH
|
196
|
+
response = get(FireEagle::USER_API_PATH)
|
197
197
|
FireEagle::Response.new(response.body).users.first
|
198
198
|
end
|
199
199
|
alias_method :location, :user
|
@@ -203,13 +203,13 @@ class FireEagle
|
|
203
203
|
#
|
204
204
|
# == Optional parameters:
|
205
205
|
#
|
206
|
-
# <tt>count</tt> Number of users to return per page. (default: 10)
|
207
|
-
# <tt>start</tt> The page number at which to start returning the list of users. Pages are 0-indexed, each page contains the per_page number of users. (default: 0)
|
208
206
|
# <tt>time</tt> The time to start looking at recent updates from. Value is flexible, supported forms are 'now', 'yesterday', '12:00', '13:00', '1:00pm' and '2008-03-12 12:34:56'. (default: 'now')
|
209
|
-
|
207
|
+
# <tt>count</tt> Number of users to return per page. (default: 10)
|
208
|
+
# <tt>start</tt> The page number at which to start returning the list of users.
|
209
|
+
def recent(time = 'now', count = 10, start = 1)
|
210
210
|
raise FireEagle::ArgumentError, "OAuth Access Token Required" unless @access_token
|
211
211
|
params = { :count => count, :start => start, :time => time }
|
212
|
-
response = get(FireEagle::RECENT_API_PATH
|
212
|
+
response = get(FireEagle::RECENT_API_PATH, :params => params)
|
213
213
|
FireEagle::Response.new(response.body).users
|
214
214
|
end
|
215
215
|
|
@@ -233,11 +233,11 @@ class FireEagle
|
|
233
233
|
# * <tt>upcoming_venue_id</tt>
|
234
234
|
# * <tt>yahoo_local_id</tt>
|
235
235
|
# * <tt>plazes_id</tt>
|
236
|
-
def within(location = {}, count = 10, start =
|
236
|
+
def within(location = {}, count = 10, start = 1)
|
237
237
|
raise FireEagle::ArgumentError, "OAuth Access Token Required" unless @access_token
|
238
238
|
location = sanitize_location_hash(location)
|
239
239
|
params = { :count => count, :start => start }.merge(location)
|
240
|
-
response = get(FireEagle::WITHIN_API_PATH
|
240
|
+
response = get(FireEagle::WITHIN_API_PATH, :params => params)
|
241
241
|
FireEagle::Response.new(response.body).users
|
242
242
|
end
|
243
243
|
|
@@ -265,17 +265,17 @@ class FireEagle
|
|
265
265
|
def request(method, url, options) #:nodoc:
|
266
266
|
response = case method
|
267
267
|
when :post
|
268
|
-
access_token.request(:post, url, options[:params])
|
268
|
+
access_token.request(:post, "#{url}.#{format}", options[:params])
|
269
269
|
when :get
|
270
270
|
qs = options[:params].collect { |k,v| "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}" }.join("&") if options[:params]
|
271
|
-
access_token.request(:get, "#{url}?#{qs}")
|
271
|
+
access_token.request(:get, "#{url}.#{format}?#{qs}")
|
272
272
|
else
|
273
273
|
raise ArgumentError, "method #{method} not supported"
|
274
274
|
end
|
275
275
|
|
276
276
|
case response.code
|
277
|
+
when '404'; then raise FireEagle::FireEagleException, "Not Found"
|
277
278
|
when '500'; then raise FireEagle::FireEagleException, "Internal Server Error"
|
278
|
-
when '400'; then raise FireEagle::FireEagleException, "Method Not Implemented Yet"
|
279
279
|
else response
|
280
280
|
end
|
281
281
|
end
|
data/lib/fireeagle/location.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#Describes a location
|
2
|
-
|
2
|
+
module FireEagle
|
3
3
|
class Location
|
4
4
|
|
5
5
|
#Initialize a Location from an XML response
|
@@ -49,6 +49,21 @@ class FireEagle
|
|
49
49
|
@lower_corner ||= @georss[0..1] rescue nil
|
50
50
|
end
|
51
51
|
|
52
|
+
# The actual query that the user used so that it can be geocoded by the
|
53
|
+
# consumer since the Yahoo! geocoder is a little flaky, especially when it
|
54
|
+
# comes to intersections etc.
|
55
|
+
#
|
56
|
+
# Turns something like this:
|
57
|
+
#
|
58
|
+
# <query> "q=333%20W%20Harbor%20Dr,%20San%20Diego,%20CA" </query>
|
59
|
+
#
|
60
|
+
# into
|
61
|
+
#
|
62
|
+
# 333 W Harbor Dr, San Diego, CA
|
63
|
+
def query
|
64
|
+
@query ||= CGI::unescape((@doc.at("/location/query").innerText).gsub('"', '').split('=')[1]).strip rescue nil
|
65
|
+
end
|
66
|
+
|
52
67
|
# The GeoRuby[http://georuby.rubyforge.org/] representation of this location
|
53
68
|
def geom
|
54
69
|
if @doc.at("/location//georss:box")
|
@@ -67,4 +82,4 @@ class FireEagle
|
|
67
82
|
end
|
68
83
|
|
69
84
|
end
|
70
|
-
end
|
85
|
+
end
|
data/lib/fireeagle/response.rb
CHANGED
data/lib/fireeagle/user.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
|
1
|
+
module FireEagle
|
2
2
|
class User
|
3
|
-
|
4
3
|
#Parses the XML response from FireEagle.
|
5
4
|
def initialize(doc)
|
6
5
|
doc = Hpricot(doc) unless doc.is_a?(Hpricot::Doc || Hpricot::Elem)
|
@@ -12,6 +11,11 @@ class FireEagle
|
|
12
11
|
@token ||= @doc.at("/user").attributes["token"] rescue nil
|
13
12
|
end
|
14
13
|
|
14
|
+
#The time at which this user was last located
|
15
|
+
def located_at
|
16
|
+
@located_at ||= Time.parse(@doc.at("/user").attributes["located-at"]) rescue nil
|
17
|
+
end
|
18
|
+
|
15
19
|
#FireEagle's "best guess" form this User's Location. This best guess is derived as the most accurate
|
16
20
|
#level of the hierarchy with a timestamp in the last half an hour <b>or</b> as the most accurate
|
17
21
|
#level of the hierarchy with the most recent timestamp.
|
data/lib/fireeagle/version.rb
CHANGED
data/lib/fireeagle.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require 'time'
|
2
2
|
require 'net/https'
|
3
3
|
require 'rubygems'
|
4
|
-
gem 'oauth', ">= 0.2.
|
4
|
+
gem 'oauth', ">= 0.2.4"
|
5
|
+
require 'oauth/helper'
|
5
6
|
require 'oauth/client/helper'
|
6
7
|
require 'oauth/request_proxy/net_http'
|
7
8
|
require 'hpricot'
|
8
9
|
require 'geo_ruby'
|
9
10
|
|
10
|
-
|
11
|
+
module FireEagle
|
11
12
|
API_SERVER = "https://fireeagle.yahooapis.com"
|
12
13
|
AUTH_SERVER = "https://fireeagle.yahoo.net"
|
13
14
|
REQUEST_TOKEN_PATH = "/oauth/request_token"
|
@@ -5,6 +5,8 @@ describe "FireEagle Location" do
|
|
5
5
|
before(:each) do
|
6
6
|
location = Hpricot.XML(XML_LOCATION_CHUNK)
|
7
7
|
@location = FireEagle::Location.new(location)
|
8
|
+
location_with_query = Hpricot.XML(XML_QUERY_LOCATION_CHUNK)
|
9
|
+
@location_with_query = FireEagle::Location.new(location_with_query)
|
8
10
|
end
|
9
11
|
|
10
12
|
it "should know if this is a best guess" do
|
@@ -35,6 +37,10 @@ describe "FireEagle Location" do
|
|
35
37
|
@location.to_s.should == @location.name
|
36
38
|
end
|
37
39
|
|
40
|
+
it "should return the actual query string" do
|
41
|
+
@location_with_query.query.should == "333 W Harbor Dr, San Diego, CA"
|
42
|
+
end
|
43
|
+
|
38
44
|
describe "GeoRuby support" do
|
39
45
|
|
40
46
|
it "should represent a bounding box as a GeoRuby Envelope" do
|
@@ -57,4 +63,4 @@ describe "FireEagle Location" do
|
|
57
63
|
|
58
64
|
end
|
59
65
|
|
60
|
-
end
|
66
|
+
end
|
@@ -57,7 +57,7 @@ describe "FireEagle Response" do
|
|
57
57
|
describe "error handling" do
|
58
58
|
|
59
59
|
it "should raise an exception when returned xml with a status of fail" do
|
60
|
-
lambda { FireEagle::Response.new(XML_ERROR_RESPONSE) }.should raise_error(FireEagle::FireEagleException)
|
60
|
+
lambda { FireEagle::Response.new(XML_ERROR_RESPONSE) }.should raise_error(FireEagle::FireEagleException, "Something bad happened")
|
61
61
|
end
|
62
62
|
|
63
63
|
end
|
data/spec/fireeagle_spec.rb
CHANGED
@@ -134,11 +134,12 @@ describe "FireEagle" do
|
|
134
134
|
end
|
135
135
|
|
136
136
|
describe "lookup method" do
|
137
|
-
|
138
137
|
before(:each) do
|
139
|
-
@client
|
140
|
-
|
141
|
-
|
138
|
+
@client = FireEagle::Client.new(:consumer_key => 'key', :consumer_secret => 'sekret', :access_token => 'toke', :access_token_secret => 'sekret')
|
139
|
+
response = stub('response', :body => XML_LOOKUP_RESPONSE)
|
140
|
+
fail_response = stub('fail response', :body => XML_FAIL_LOOKUP_RESPONSE)
|
141
|
+
@client.stub!(:request).with(:get, FireEagle::LOOKUP_API_PATH, :params => {:q => "30022"}).and_return(response)
|
142
|
+
@client.stub!(:request).with(:get, FireEagle::LOOKUP_API_PATH, :params => {:mnc => 12, :mcc => 502, :lac => 2051, :cellid => 39091}).and_return(fail_response)
|
142
143
|
end
|
143
144
|
|
144
145
|
it "should return an array of Locations" do
|
@@ -153,6 +154,11 @@ describe "FireEagle" do
|
|
153
154
|
@client.lookup(:q => "30022").first.name.should == "Alpharetta, GA 30022"
|
154
155
|
end
|
155
156
|
|
157
|
+
it "should raise an exception if the lookup failed" do
|
158
|
+
lambda {
|
159
|
+
@client.lookup(:mnc => 12, :mcc => 502, :lac => 2051, :cellid => 39091)
|
160
|
+
}.should raise_error(FireEagle::FireEagleException, "Place can't be identified.")
|
161
|
+
end
|
156
162
|
end
|
157
163
|
|
158
164
|
describe "within method" do
|
@@ -179,12 +185,45 @@ describe "FireEagle" do
|
|
179
185
|
end
|
180
186
|
|
181
187
|
it "should return an array of Users" do
|
182
|
-
@client.recent(
|
188
|
+
@client.recent('yesterday', 3, 1).should have(3).users
|
183
189
|
end
|
184
190
|
|
185
|
-
it "should
|
186
|
-
@client.recent(
|
191
|
+
it "should have an 'located_at' timestamp for each user" do
|
192
|
+
@client.recent('yesterday', 3, 1).first.located_at.should == Time.parse('2008-07-31T22:31:37+12:00')
|
187
193
|
end
|
188
194
|
end
|
189
195
|
|
196
|
+
describe "making a request" do
|
197
|
+
before do
|
198
|
+
@client = FireEagle::Client.new(:consumer_key => 'key', :consumer_secret => 'sekret', :access_token => 'toke', :access_token_secret => 'sekret')
|
199
|
+
@access_token = stub('access token')
|
200
|
+
@client.stub!(:access_token).and_return(@access_token)
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should not raise any exception when response is OK" do
|
204
|
+
response = stub('response', :code => '200', :body => XML_RECENT_RESPONSE)
|
205
|
+
@access_token.stub!(:request).and_return(response)
|
206
|
+
lambda { @client.recent }.should_not raise_error
|
207
|
+
end
|
208
|
+
|
209
|
+
it "should raise an exception when requesting to a resource that doesn't exist (404)" do
|
210
|
+
response = stub('response', :code => '404', :body => '')
|
211
|
+
@access_token.stub!(:request).and_return(response)
|
212
|
+
lambda { @client.recent }.should raise_error(FireEagle::FireEagleException, 'Not Found')
|
213
|
+
end
|
214
|
+
|
215
|
+
it "should raise an exception when requesting to a resource that hit an internal server error (500)" do
|
216
|
+
response = stub('response', :code => '500', :body => '')
|
217
|
+
@access_token.stub!(:request).and_return(response)
|
218
|
+
lambda { @client.recent }.should raise_error(FireEagle::FireEagleException, 'Internal Server Error')
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should raise an exception when response is apart from 200, 404 and 500" do
|
222
|
+
%w{401 403 405}.each do |code|
|
223
|
+
response = stub('response', :code => code, :body => XML_ERROR_RESPONSE)
|
224
|
+
@access_token.stub!(:request).and_return(response)
|
225
|
+
lambda { @client.recent }.should raise_error(FireEagle::FireEagleException, 'Something bad happened')
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
190
229
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,6 +5,7 @@ rescue LoadError
|
|
5
5
|
gem 'rspec'
|
6
6
|
require 'spec'
|
7
7
|
end
|
8
|
+
require 'time'
|
8
9
|
|
9
10
|
XML_ERROR_RESPONSE = <<-RESPONSE
|
10
11
|
<?xml version="1.0" encoding="utf-8"?>
|
@@ -73,6 +74,19 @@ XML_LOCATION_CHUNK = <<-RESPONSE
|
|
73
74
|
</location>
|
74
75
|
RESPONSE
|
75
76
|
|
77
|
+
XML_QUERY_LOCATION_CHUNK = <<-RESPONSE
|
78
|
+
<location best-guess="true">
|
79
|
+
<id>111541</id>
|
80
|
+
<georss:point>32.7093315125 -117.1650772095</georss:point>
|
81
|
+
<level>0</level>
|
82
|
+
<level-name>exact</level-name>
|
83
|
+
<located-at>2008-03-03T09:05:16-08:00</located-at>
|
84
|
+
<name>333 W Harbor Dr, San Diego, CA</name>
|
85
|
+
<query> "q=333%20W%20Harbor%20Dr,%20San%20Diego,%20CA" </query>
|
86
|
+
</location>
|
87
|
+
RESPONSE
|
88
|
+
|
89
|
+
|
76
90
|
XML_EXACT_LOCATION_CHUNK = <<-RESPONSE
|
77
91
|
<location>
|
78
92
|
<georss:point>38.5351715088 -121.7948684692</georss:box>
|
@@ -124,6 +138,13 @@ XML_LOOKUP_RESPONSE = <<-RESPONSE
|
|
124
138
|
</rsp>
|
125
139
|
RESPONSE
|
126
140
|
|
141
|
+
XML_FAIL_LOOKUP_RESPONSE = <<-RESPONSE
|
142
|
+
<?xml version="1.0" encoding="utf-8"?>
|
143
|
+
<rsp stat="fail">
|
144
|
+
<err msg="Place can't be identified." code="6"/>
|
145
|
+
</rsp>
|
146
|
+
RESPONSE
|
147
|
+
|
127
148
|
XML_WITHIN_RESPONSE = <<-RESPONSE
|
128
149
|
<?xml version="1.0" encoding="UTF-8"?>
|
129
150
|
<rsp stat="ok">
|
@@ -254,106 +275,13 @@ RESPONSE
|
|
254
275
|
|
255
276
|
XML_RECENT_RESPONSE = <<-RESPONSE
|
256
277
|
<?xml version="1.0" encoding="UTF-8"?>
|
257
|
-
<rsp
|
278
|
+
<rsp xmlns:georss="http://www.georss.org/georss" stat="ok">
|
258
279
|
<users>
|
259
|
-
<user token="
|
260
|
-
|
261
|
-
|
262
|
-
<id>111541</id>
|
263
|
-
<georss:point>32.7093315125 -117.1650772095</georss:point>
|
264
|
-
<level>0</level>
|
265
|
-
<level-name>exact</level-name>
|
266
|
-
<located-at>2008-03-03T09:05:16-08:00</located-at>
|
267
|
-
<name>333 W Harbor Dr, San Diego, CA</name>
|
268
|
-
</location>
|
269
|
-
<location best-guess="false">
|
270
|
-
<id>111551</id>
|
271
|
-
<georss:box>32.6916618347 -117.2174377441 32.744140625 -117.1458892822</georss:box>
|
272
|
-
<level>1</level>
|
273
|
-
<level-name>postal</level-name>
|
274
|
-
<located-at>2008-03-03T09:05:16-08:00</located-at>
|
275
|
-
<name>San Diego, CA 92101</name>
|
276
|
-
<place-id>NpiXqwmYA5viX3K3Ew</place-id>
|
277
|
-
<woeid>12796255</woeid>
|
278
|
-
</location>
|
279
|
-
<location best-guess="false">
|
280
|
-
<id>111561</id>
|
281
|
-
<georss:box>32.5349388123 -117.2884292603 33.1128082275 -116.9142913818</georss:box>
|
282
|
-
<level>3</level>
|
283
|
-
<level-name>city</level-name>
|
284
|
-
<located-at>2008-03-03T09:05:16-08:00</located-at>
|
285
|
-
<name>San Diego, CA</name>
|
286
|
-
<place-id>Nm4O.DebBZTYKUsu</place-id>
|
287
|
-
<woeid>2487889</woeid>
|
288
|
-
</location>
|
289
|
-
<location best-guess="false">
|
290
|
-
<id>111571</id>
|
291
|
-
<georss:box>32.5342788696 -124.4150238037 42.0093803406 -114.1308135986</georss:box>
|
292
|
-
<level>5</level>
|
293
|
-
<level-name>state</level-name>
|
294
|
-
<located-at>2008-03-03T09:05:16-08:00</located-at>
|
295
|
-
<name>California</name>
|
296
|
-
<place-id>SVrAMtCbAphCLAtP</place-id>
|
297
|
-
<woeid>2347563</woeid>
|
298
|
-
</location>
|
299
|
-
<location best-guess="false">
|
300
|
-
<id>111581</id>
|
301
|
-
<georss:box>18.9108390808 -167.2764129639 72.8960571289 -66.6879425049</georss:box>
|
302
|
-
<level>6</level>
|
303
|
-
<level-name>country</level-name>
|
304
|
-
<located-at>2008-03-03T09:05:16-08:00</located-at>
|
305
|
-
<name>United States</name>
|
306
|
-
<place-id>4KO02SibApitvSBieQ</place-id>
|
307
|
-
<woeid>23424977</woeid>
|
308
|
-
</location>
|
309
|
-
</location-hierarchy>
|
310
|
-
</user>
|
311
|
-
<user token="XMoZaTjZJiOQ">
|
312
|
-
<location-hierarchy>
|
313
|
-
<location best-guess="true">
|
314
|
-
<id>113221</id>
|
315
|
-
<georss:box>32.8155899048 -96.8162918091 32.8511695862 -96.7717132568</georss:box>
|
316
|
-
<level>1</level>
|
317
|
-
<level-name>postal</level-name>
|
318
|
-
<located-at>2008-03-03T10:24:24-08:00</located-at>
|
319
|
-
<name>Dallas, TX 75205</name>
|
320
|
-
<place-id>1KTPxFCYA5vlcics6A</place-id>
|
321
|
-
<woeid>12790441</woeid>
|
322
|
-
</location>
|
323
|
-
<location best-guess="false">
|
324
|
-
<id>113231</id>
|
325
|
-
<georss:box>32.6209487915 -96.9988708496 33.0258712769 -96.4660263062</georss:box>
|
326
|
-
<level>3</level>
|
327
|
-
<level-name>city</level-name>
|
328
|
-
<located-at>2008-03-03T10:24:24-08:00</located-at>
|
329
|
-
<name>Dallas, TX</name>
|
330
|
-
<place-id>bgWooz.bApRFBRNK</place-id>
|
331
|
-
<woeid>2388929</woeid>
|
332
|
-
</location>
|
333
|
-
<location best-guess="false">
|
334
|
-
<id>113241</id>
|
335
|
-
<georss:box>25.8372898102 -106.645652771 36.5006904602 -93.5079269409</georss:box>
|
336
|
-
<level>5</level>
|
337
|
-
<level-name>state</level-name>
|
338
|
-
<located-at>2008-03-03T10:24:24-08:00</located-at>
|
339
|
-
<name>Texas</name>
|
340
|
-
<place-id>b1Yi6qubApjz6jWW</place-id>
|
341
|
-
<woeid>2347602</woeid>
|
342
|
-
</location>
|
343
|
-
<location best-guess="false">
|
344
|
-
<id>113251</id>
|
345
|
-
<georss:box>18.9108390808 -167.2764129639 72.8960571289 -66.6879425049</georss:box>
|
346
|
-
<level>6</level>
|
347
|
-
<level-name>country</level-name>
|
348
|
-
<located-at>2008-03-03T10:24:24-08:00</located-at>
|
349
|
-
<name>United States</name>
|
350
|
-
<place-id>4KO02SibApitvSBieQ</place-id>
|
351
|
-
<woeid>23424977</woeid>
|
352
|
-
</location>
|
353
|
-
</location-hierarchy>
|
354
|
-
</user>
|
280
|
+
<user located-at="2008-07-31T22:31:37+12:00" token="5pyl1xip0uh6"/>
|
281
|
+
<user located-at="2008-07-31T21:49:03+12:00" token="i71yc3myixg3"/>
|
282
|
+
<user located-at="2008-07-30T21:40:54+12:00" token="q1jm8nubnpsi"/>
|
355
283
|
</users>
|
356
284
|
</rsp>
|
357
285
|
RESPONSE
|
358
286
|
|
359
|
-
require File.dirname(__FILE__) + '/../lib/fireeagle'
|
287
|
+
require File.dirname(__FILE__) + '/../lib/fireeagle'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mojodna-fireeagle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesse Newland
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.2.
|
22
|
+
version: 0.2.4
|
23
23
|
version:
|
24
24
|
- !ruby/object:Gem::Dependency
|
25
25
|
name: hpricot
|
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
96
|
requirements: []
|
97
97
|
|
98
98
|
rubyforge_project: fireeagle
|
99
|
-
rubygems_version: 1.0
|
99
|
+
rubygems_version: 1.2.0
|
100
100
|
signing_key:
|
101
101
|
specification_version: 2
|
102
102
|
summary: Ruby wrapper for Yahoo!'s FireEagle
|