api_object 0.4.1 → 0.5.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.
- data/README.md +2 -2
- data/lib/api_object/version.rb +1 -1
- data/lib/api_object.rb +7 -2
- data/test/unit/api_object_test.rb +15 -2
- metadata +15 -15
data/README.md
CHANGED
@@ -120,10 +120,10 @@ The [geo_ip gem](https://github.com/jeroenj/geo_ip) retrieves location as:
|
|
120
120
|
To get the data, call "get_results_by_ip" instead of "get_results":
|
121
121
|
|
122
122
|
```
|
123
|
-
data = Weather.get_results_by_ip('99.156.82.20', KEY
|
123
|
+
data = Weather.get_results_by_ip('99.156.82.20', :key => <KEY>, :weather => :zip_code)
|
124
124
|
```
|
125
125
|
|
126
|
-
The
|
126
|
+
The function takes parameters to define what fields from the location object are passed as what parameter. In this case, "zip_code" field is passed as "weather" parameter and the original function is:
|
127
127
|
|
128
128
|
```
|
129
129
|
data = Weather.get_results(:weather => '99.156.82.20')
|
data/lib/api_object/version.rb
CHANGED
data/lib/api_object.rb
CHANGED
@@ -16,13 +16,14 @@ module ActiveApi
|
|
16
16
|
self.url, self.action, self.key, self.mode, self.url_options, self.data_tags, self.object_name = [options[:url], options[:action], options[:key], options[:mode], (options[:url_options] || {}), ([*options[:data_tags]] || []), (options[:object_name] || self.to_s.downcase.gsub(/^(.+::)(.+)$/, '\2'))]
|
17
17
|
instance_eval do
|
18
18
|
|
19
|
-
def get_results_by_ip ip,
|
20
|
-
self.api_key = key
|
19
|
+
def get_results_by_ip ip, arguments = {}
|
20
|
+
self.api_key = arguments.delete(:key) if arguments[:key]
|
21
21
|
location = GeoIp.geolocation(ip)
|
22
22
|
raise unless location[:status_code] == "OK"
|
23
23
|
get_results [*arguments.keys].inject({}) { |opts, a| opts.merge(a.to_sym => location[arguments[a.to_sym]]) }
|
24
24
|
rescue
|
25
25
|
puts "WARNING: Cannot get results or location by ip. Verify that you have a valid key for the ipinfodb.com service"
|
26
|
+
return {}
|
26
27
|
end
|
27
28
|
|
28
29
|
def get_results options = {}
|
@@ -39,6 +40,10 @@ module ActiveApi
|
|
39
40
|
GeoIp.api_key = key
|
40
41
|
end
|
41
42
|
|
43
|
+
def api_key
|
44
|
+
GeoIp.api_key
|
45
|
+
end
|
46
|
+
|
42
47
|
def warning_invalid_url url
|
43
48
|
"The request url is #{url}, please, check if it's invalid of there is no connectivity." unless url.nil?
|
44
49
|
end
|
@@ -22,6 +22,7 @@ class ApiObjectTest < MiniTest::Unit::TestCase
|
|
22
22
|
@@weather_au = Weather.load_from_xml(File.read(@@weather_directory + '/austin.xml'))
|
23
23
|
@@ip_key = File.read(@@key_directory + "/ipinfodb_key.txt") rescue ENV['API_KEY']
|
24
24
|
IP = '99.156.82.20'
|
25
|
+
GeoIp.api_key = nil
|
25
26
|
|
26
27
|
@@muni_routes = Route.load_from_xml(File.read(@@bus_directory + "/muni_routes.xml"))
|
27
28
|
@@muni_F = Route.load_from_xml(File.read(@@bus_directory + "/muni_F.xml"))
|
@@ -58,12 +59,25 @@ class ApiObjectTest < MiniTest::Unit::TestCase
|
|
58
59
|
assert_equal(weather_au, @@weather_au)
|
59
60
|
end
|
60
61
|
|
62
|
+
|
61
63
|
def test_should_get_correct_weather_by_ip
|
62
64
|
unless @@ip_key.nil?
|
63
|
-
weather_au = Weather.new(Weather.get_results_by_ip(IP, @@ip_key, :weather => :zip_code))
|
65
|
+
weather_au = Weather.new(Weather.get_results_by_ip(IP, :key => @@ip_key, :weather => :zip_code))
|
64
66
|
assert_equal(weather_au, @@weather_au)
|
65
67
|
end
|
66
68
|
end
|
69
|
+
|
70
|
+
def test_should_get_correct_weather_with_key_preset
|
71
|
+
GeoIp.api_key = @@ip_key
|
72
|
+
weather_au = Weather.new(Weather.get_results_by_ip(IP, :weather => :zip_code))
|
73
|
+
assert_equal(weather_au, @@weather_au)
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_should_not_get_correct_weather_with_no_key
|
77
|
+
GeoIp.api_key = nil
|
78
|
+
weather_au = Weather.new(Weather.get_results_by_ip(IP, :weather => :zip_code))
|
79
|
+
assert_empty(weather_au)
|
80
|
+
end
|
67
81
|
|
68
82
|
def test_should_get_correct_bus_routes
|
69
83
|
routes = Route.get_results(:a => 'sf-muni', :command => 'routeList').map {|r| Route.new(r)}
|
@@ -84,7 +98,6 @@ class ApiObjectTest < MiniTest::Unit::TestCase
|
|
84
98
|
assert(routes.empty?, "Routes should be an empty object")
|
85
99
|
end
|
86
100
|
|
87
|
-
|
88
101
|
private
|
89
102
|
|
90
103
|
#ensure that the estimates of the first station include the sample
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api_object
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-06-13 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activemodel
|
16
|
-
requirement: &
|
16
|
+
requirement: &74735810 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *74735810
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &74735560 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *74735560
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &74735340 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *74735340
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activesupport
|
49
|
-
requirement: &
|
49
|
+
requirement: &74735110 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *74735110
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: nori
|
60
|
-
requirement: &
|
60
|
+
requirement: &74734810 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '1.1'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *74734810
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rest-client
|
71
|
-
requirement: &
|
71
|
+
requirement: &74734530 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '1.6'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *74734530
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: geo_ip
|
82
|
-
requirement: &
|
82
|
+
requirement: &74734330 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *74734330
|
91
91
|
description: An interface to load objects from external APIs provided in XML and JSON
|
92
92
|
formats
|
93
93
|
email:
|