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 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, :weather => :zip_code)
123
+ data = Weather.get_results_by_ip('99.156.82.20', :key => <KEY>, :weather => :zip_code)
124
124
  ```
125
125
 
126
- The third parameter in the function is to define what fields from the location object are passed as what parameter. In this case, the original function is:
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')
@@ -1,3 +1,3 @@
1
1
  module ApiObject
2
- VERSION = "0.4.1"
2
+ VERSION = "0.5.1"
3
3
  end
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, key, arguments = {}
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.1
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: &74590500 !ruby/object:Gem::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: *74590500
24
+ version_requirements: *74735810
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &74590190 !ruby/object:Gem::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: *74590190
35
+ version_requirements: *74735560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: minitest
38
- requirement: &74589880 !ruby/object:Gem::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: *74589880
46
+ version_requirements: *74735340
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activesupport
49
- requirement: &74589580 !ruby/object:Gem::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: *74589580
57
+ version_requirements: *74735110
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: nori
60
- requirement: &74589270 !ruby/object:Gem::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: *74589270
68
+ version_requirements: *74734810
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rest-client
71
- requirement: &74589020 !ruby/object:Gem::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: *74589020
79
+ version_requirements: *74734530
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: geo_ip
82
- requirement: &74588820 !ruby/object:Gem::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: *74588820
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: