api_object 0.4.1 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
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: