bing 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,16 @@
1
+ === 0.2.0 / 2011-08-05
2
+ * 4 minor enhancement(s):
3
+
4
+ * Added ability for user to specify api version.
5
+ * Namespacing better, no more mixins, and added rest resource superclass.
6
+ * Only add core extensions if they are not already defined.
7
+ * Refined the rest resource and added more coverage.
8
+
9
+ * 2 unknown:
10
+
11
+ * Added tests for bing rest resource and various comments.
12
+ * Namespaced request object in favor of mixin.
13
+
1
14
  === 0.1.1 / 2011-07-25
2
15
  * 5 unknown:
3
16
 
data/Manifest.txt CHANGED
@@ -7,15 +7,16 @@ Rakefile
7
7
  lib/bing.rb
8
8
  lib/bing/core_ext.rb
9
9
  lib/bing/errors.rb
10
- lib/bing/formatting_helper.rb
11
10
  lib/bing/location.rb
12
11
  lib/bing/request.rb
12
+ lib/bing/rest_resource.rb
13
13
  lib/bing/route.rb
14
14
  lib/bing/route/itinerary.rb
15
15
  test/helper.rb
16
16
  test/test_bing.rb
17
17
  test/test_bing_location.rb
18
+ test/test_bing_request.rb
19
+ test/test_bing_rest_resource.rb
18
20
  test/test_bing_route.rb
19
21
  test/test_bing_route_itinerary.rb
20
22
  test/test_core_ext.rb
21
- test/test_request.rb
data/lib/bing/core_ext.rb CHANGED
@@ -1,46 +1,59 @@
1
- # core extensions to ruby
2
- class Object
1
+ # core extensions to ruby.
3
2
 
4
- def blank?
5
- respond_to?(:empty?) ? empty? : !self
3
+ unless respond_to? :blank?
4
+ class Object
5
+ def blank?
6
+ respond_to?(:empty?) ? empty? : !self
7
+ end
6
8
  end
9
+ end
10
+
7
11
 
8
- def to_param
9
- to_s
12
+ unless respond_to? :to_param
13
+ class Object
14
+ def to_param
15
+ to_s
16
+ end
10
17
  end
18
+ end
11
19
 
12
- def to_query key
13
- require 'cgi' unless defined?(CGI) && defined?(CGI::escape)
14
- _key = CGI.escape(key.to_s.camelize(:lower)).gsub(/%(5B|5D)/n) {
15
- [$1].pack('H*')
16
- }
17
- value = CGI.escape(to_param.to_s)
18
20
 
19
- "#{_key}=#{value}"
20
- end
21
+ unless respond_to? :to_lower_camelized_query
22
+ class Object
23
+ def to_lower_camelized_query key
24
+ require 'cgi' unless defined?(CGI) && defined?(CGI::escape)
25
+ _key = CGI.escape(key.to_s.camelize(:lower)).gsub(/%(5B|5D)/n) {
26
+ [$1].pack('H*')
27
+ }
28
+ value = CGI.escape(to_param.to_s)
21
29
 
30
+ "#{_key}=#{value}"
31
+ end
32
+ end
22
33
  end
23
34
 
24
- class Hash
25
35
 
26
- def to_param namespace = nil
27
- collect do |key, value|
28
- value.to_query(namespace ? "#{namespace}[#{key}]" : key)
29
- end.sort * '&'
36
+ unless {}.respond_to? :to_lower_camelized_param
37
+ class Hash
38
+ def to_lower_camelized_param namespace = nil
39
+ collect do |key, value|
40
+ value.to_lower_camelized_query(namespace ? "#{namespace}[#{key}]" : key)
41
+ end.sort * '&'
42
+ end
30
43
  end
31
-
32
44
  end
33
45
 
34
- class String
35
46
 
36
- def camelize first_letter = :upper
37
- case first_letter
38
- when :upper then
39
- self.gsub(/\/(.?)/) {"::#{$1.upcase}"}.gsub(/(?:^|_)(.)/) {$1.upcase}
40
- when :lower then
41
- self[0].chr.downcase + camelize()[1..-1]
47
+ unless ''.respond_to? :camelize
48
+ class String
49
+ def camelize first_letter = :upper
50
+ case first_letter
51
+ when :upper then
52
+ self.gsub(/\/(.?)/) {"::#{$1.upcase}"}.gsub(/(?:^|_)(.)/) {$1.upcase}
53
+ when :lower then
54
+ self[0].chr.downcase + camelize()[1..-1]
55
+ end
42
56
  end
43
57
  end
44
-
45
58
  end
46
59
 
data/lib/bing/errors.rb CHANGED
@@ -1,55 +1,58 @@
1
- ##
2
- # DO NOT use these classes. They are too generic.
1
+ module Bing
3
2
 
4
- class ServiceError < StandardError
5
- def status() 500 end
6
- end
3
+ ##
4
+ # DO NOT use these classes. They are too generic.
7
5
 
8
- class ResourceMissing < StandardError
9
- def status() 502 end
6
+ class ServiceError < StandardError
7
+ def status() 500 end
8
+ end
10
9
 
11
- def message() 'Resource is empty or nil.' end
12
- end
10
+ class ResourceMissing < StandardError
11
+ def status() 502 end
13
12
 
14
- ##
15
- # Raised when we get an invalid response from an underlying server
13
+ def message() 'Resource is empty or nil.' end
14
+ end
16
15
 
17
- class BadGateway < ServiceError
16
+ ##
17
+ # Raised when we get an invalid response from an underlying server
18
18
 
19
- def self.parse_error text, uri = nil
20
- error = new "parse error#{uri ? " from #{uri}" : nil} - #{text.inspect}"
21
- error.text = text
22
- error.uri = uri
23
- error
24
- end
19
+ class BadGateway < ServiceError
25
20
 
26
- def self.bad_response code, uri, server_message=nil
27
- server_message = " with message #{server_message}" if server_message
28
- error = new "#{uri} returned #{code}#{server_message}"
29
- error.code = code
30
- error.uri = uri
31
- error
32
- end
21
+ def self.parse_error text, uri = nil
22
+ error = new "parse error#{uri ? " from #{uri}" : nil} - #{text.inspect}"
23
+ error.text = text
24
+ error.uri = uri
25
+ error
26
+ end
33
27
 
34
- ##
35
- # Status code from underlying server
28
+ def self.bad_response code, uri, server_message=nil
29
+ server_message = " with message #{server_message}" if server_message
30
+ error = new "#{uri} returned #{code}#{server_message}"
31
+ error.code = code
32
+ error.uri = uri
33
+ error
34
+ end
36
35
 
37
- attr_accessor :code
36
+ ##
37
+ # Status code from underlying server
38
38
 
39
- ##
40
- # Text we were unable to parse
39
+ attr_accessor :code
41
40
 
42
- attr_accessor :text
41
+ ##
42
+ # Text we were unable to parse
43
43
 
44
- ##
45
- # URI for this request
44
+ attr_accessor :text
46
45
 
47
- attr_accessor :uri
46
+ ##
47
+ # URI for this request
48
48
 
49
- def status() 502 end
50
- end
49
+ attr_accessor :uri
51
50
 
52
- class ItineraryResourceMissing < ResourceMissing; end
53
- class LocationResourceMissing < ResourceMissing; end
54
- class RouteResourceMissing < ResourceMissing; end
51
+ def status() 502 end
52
+ end
53
+
54
+ class ItineraryResourceMissing < ResourceMissing; end
55
+ class LocationResourceMissing < ResourceMissing; end
56
+ class RouteResourceMissing < ResourceMissing; end
55
57
 
58
+ end
data/lib/bing/location.rb CHANGED
@@ -1,36 +1,30 @@
1
- require 'bing'
1
+ require 'bing/rest_resource'
2
2
 
3
3
  ##
4
4
  # Responsible for obtaining a location based off of data passed in.
5
- # Most common method is to do:
6
- #
7
- # Bing::Location.find :query => '123 Address City State'
8
5
 
9
- class Bing::Location
10
-
11
- ##
12
- # Path to location resource.
13
-
14
- PATH = '/REST/v1/Locations'
6
+ class Bing::Location < Bing::RestResource
15
7
 
16
8
  ##
17
9
  # Will find locations based off of +query+ and return an array of
18
- # Bing::Location objects.
10
+ # Bing::Location objects. Will support any param that bing supports.
11
+ #
12
+ # === Example
13
+ #
14
+ # Bing::Location.find :query => '123 Address City State'
19
15
 
20
16
  def self.find opts
21
- uri = Bing.config[:map_uri].merge(
22
- "#{PATH}?key=#{Bing.config[:api_key]}&#{opts.to_param}"
23
- )
17
+ map_find opts.to_lower_camelized_param
18
+ end
24
19
 
25
- body = JSON.parse get(uri).body
20
+ ##
21
+ # Path to route resource.
26
22
 
27
- body['resourceSets'].first['resources'].map do |resource|
28
- new resource
29
- end.compact
23
+ def self.path
24
+ super '/Locations'
30
25
  end
31
26
 
32
27
  attr_reader :address
33
- attr_reader :bounding_box
34
28
  attr_reader :canonical_description
35
29
  attr_reader :coordinates
36
30
  attr_reader :city
@@ -42,7 +36,7 @@ class Bing::Location
42
36
  attr_reader :zip
43
37
 
44
38
  def initialize resource
45
- raise LocationResourceMissing if resource.blank?
39
+ raise Bing::LocationResourceMissing if resource.blank?
46
40
 
47
41
  @confidence = resource['confidence']
48
42
  @entity_type = resource['entityType']
data/lib/bing/request.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  ##
2
2
  # Responsible for making requests to Bing. Uses persistent HTTP connections.
3
3
 
4
- module Bing::Request
4
+ class Bing::Request
5
5
 
6
6
  HTTP = Net::HTTP::Persistent.new
7
7
  USER_AGENT = "Bing Client Version: #{Bing::VERSION}"
@@ -10,10 +10,10 @@ module Bing::Request
10
10
  ##
11
11
  # Perform a get request and ensure that the response.code == 20\d,
12
12
  # otherwise raise a BadGateway.
13
- def get uri
13
+ def self.get uri
14
14
  response = HTTP.request uri
15
15
 
16
- raise BadGateway.bad_response(response.code, uri) unless
16
+ raise Bing::BadGateway.bad_response(response.code, uri) unless
17
17
  response.code =~ /20\d/
18
18
 
19
19
  response
@@ -0,0 +1,51 @@
1
+ require 'bing'
2
+
3
+ class Bing::RestResource
4
+
5
+ ##
6
+ # Base Bing Rest route.
7
+
8
+ BASE_PATH = "/REST/#{Bing.config[:api_version]}"
9
+
10
+ def self._find uri
11
+ body = JSON.parse Bing::Request.get(uri).body
12
+
13
+ body['resourceSets'].first['resources'].map do |resource|
14
+ new resource
15
+ end.compact
16
+ end
17
+
18
+ def self.map_uri params
19
+ Bing.config[:map_uri].merge(
20
+ "#{path}?key=#{Bing.config[:api_key]}&#{params}"
21
+ )
22
+ end
23
+
24
+ def self.map_find params
25
+ _find map_uri params
26
+ end
27
+
28
+ def self.path subclass_path = nil
29
+ "#{BASE_PATH}#{subclass_path}"
30
+ end
31
+
32
+ ##
33
+ # The map's bounding box.
34
+
35
+ attr_reader :bounding_box
36
+
37
+ ##
38
+ # Decipher bounding box from bbox in Bing response.
39
+
40
+ def bbox box
41
+ south, west, north, east = *box
42
+ {
43
+ :north => north,
44
+ :east => east,
45
+ :south => south,
46
+ :west => west,
47
+ }
48
+ end
49
+
50
+ end
51
+
@@ -8,7 +8,7 @@ class Bing::Route::Itinerary
8
8
  attr_reader :travel_mode
9
9
 
10
10
  def initialize resource
11
- raise ItineraryResourceMissing if resource.blank?
11
+ raise Bing::ItineraryResourceMissing if resource.blank?
12
12
 
13
13
  @distance = resource['travelDistance']
14
14
  @duration = resource['travelDuration']
data/lib/bing/route.rb CHANGED
@@ -1,11 +1,6 @@
1
- require 'bing'
1
+ require 'bing/rest_resource'
2
2
 
3
- class Bing::Route
4
-
5
- ##
6
- # Path to route resource.
7
-
8
- PATH = '/REST/v1/Routes'
3
+ class Bing::Route < Bing::RestResource
9
4
 
10
5
  ##
11
6
  # === Description
@@ -35,19 +30,18 @@ class Bing::Route
35
30
 
36
31
  def self.find opts
37
32
  waypoints = format_waypoints opts.delete :waypoints
33
+ params = [opts.to_lower_camelized_param, waypoints].join '&'
38
34
 
39
- uri = Bing.config[:map_uri].merge(
40
- "#{PATH}?key=#{Bing.config[:api_key]}&#{opts.to_param}&#{waypoints}"
41
- )
35
+ map_find params
36
+ end
42
37
 
43
- body = JSON.parse get(uri).body
38
+ ##
39
+ # Path to route resource.
44
40
 
45
- body['resourceSets'].first['resources'].map do |resource|
46
- new resource
47
- end.compact
41
+ def self.path
42
+ super '/Routes'
48
43
  end
49
44
 
50
- attr_reader :bounding_box
51
45
  attr_reader :distance_unit
52
46
  attr_reader :duration_unit
53
47
  attr_reader :ending_coordinates
@@ -58,7 +52,7 @@ class Bing::Route
58
52
  attr_reader :type
59
53
 
60
54
  def initialize resource
61
- raise RouteResourceMissing if resource.blank?
55
+ raise Bing::RouteResourceMissing if resource.blank?
62
56
 
63
57
  @distance_unit = resource['distanceUnit']
64
58
  @duration_unit = resource['durationUnit']
data/lib/bing.rb CHANGED
@@ -5,12 +5,13 @@ require 'json'
5
5
 
6
6
  module Bing
7
7
 
8
- VERSION = '0.1.1'
8
+ VERSION = '0.2.0'
9
9
 
10
10
  DEFAULTS = {
11
- :api_key => 'AtsQ7PXwSqL266EUdxMYj3b4-H5A6ubkf8DwH-B4k3rVmmPycUrhmH-lZKHeWXm-',
12
- :api_uri => URI.parse('http://api.bing.net'),
13
- :map_uri => URI.parse('http://dev.virtualearth.net'),
11
+ :api_key => 'AtsQ7PXwSqL266EUdxMYj3b4-H5A6ubkf8DwH-B4k3rVmmPycUrhmH-lZKHeWXm-',
12
+ :api_uri => URI.parse('http://api.bing.net'),
13
+ :api_version => 'v1',
14
+ :map_uri => URI.parse('http://dev.virtualearth.net'),
14
15
  }
15
16
 
16
17
  class << self
@@ -30,9 +31,5 @@ end
30
31
 
31
32
  require 'bing/core_ext'
32
33
  require 'bing/errors'
33
- require 'bing/formatting_helper'
34
34
  require 'bing/request'
35
35
 
36
- include Bing::FormattingHelper
37
- # TODO figure out how to allow user defined request object.
38
- include Bing::Request
@@ -2,6 +2,8 @@ require 'helper'
2
2
 
3
3
  class TestBingLocation < MiniTest::Unit::TestCase
4
4
 
5
+ BL = Bing::Location
6
+
5
7
  def test_cls_find_successful
6
8
  body = {
7
9
  'resourceSets' => [
@@ -11,21 +13,25 @@ class TestBingLocation < MiniTest::Unit::TestCase
11
13
  ]
12
14
  }.to_json
13
15
 
14
- mock_map_request 200, '/REST/v1/Locations', body
16
+ mock_map_request 200, BL.path, body
15
17
 
16
- locs = Bing::Location.find :query => '123'
18
+ locs = BL.find :query => '123'
17
19
 
18
20
  assert_equal 'full name', locs.first.full_name
19
21
  end
20
22
 
21
23
  def test_cls_find_failure
22
- mock_map_request 400, '/REST/v1/Locations', '{}'
24
+ mock_map_request 400, BL.path, '{}'
23
25
 
24
- assert_raises BadGateway do
25
- Bing::Location.find :query => '123'
26
+ assert_raises Bing::BadGateway do
27
+ BL.find :query => '123'
26
28
  end
27
29
  end
28
30
 
31
+ def test_cls_path
32
+ assert_match %r[Locations], BL.path
33
+ end
34
+
29
35
  def test_initialize_with_coordinates
30
36
  resource = {
31
37
  'point' => {
@@ -33,7 +39,7 @@ class TestBingLocation < MiniTest::Unit::TestCase
33
39
  }
34
40
  }
35
41
 
36
- bl = Bing::Location.new resource
42
+ bl = BL.new resource
37
43
 
38
44
  assert_equal [123, 456], bl.coordinates
39
45
  end
@@ -49,7 +55,7 @@ class TestBingLocation < MiniTest::Unit::TestCase
49
55
  }
50
56
  }
51
57
 
52
- bl = Bing::Location.new resource
58
+ bl = BL.new resource
53
59
 
54
60
  assert_equal 'address', bl.address
55
61
  assert_equal 'city', bl.city
@@ -61,7 +67,7 @@ class TestBingLocation < MiniTest::Unit::TestCase
61
67
  def test_initialize_with_confidence
62
68
  resource = { 'confidence' => 'High' }
63
69
 
64
- bl = Bing::Location.new resource
70
+ bl = BL.new resource
65
71
 
66
72
  assert_equal 'High', bl.confidence
67
73
  end
@@ -69,7 +75,7 @@ class TestBingLocation < MiniTest::Unit::TestCase
69
75
  def test_initialize_with_bbox
70
76
  resource = { 'bbox' => %w[south west north east] }
71
77
 
72
- bl = Bing::Location.new resource
78
+ bl = BL.new resource
73
79
 
74
80
  assert_equal 'north', bl.bounding_box[:north]
75
81
  assert_equal 'east', bl.bounding_box[:east]
@@ -80,7 +86,7 @@ class TestBingLocation < MiniTest::Unit::TestCase
80
86
  def test_initialize_with_entity_type
81
87
  resource = { 'entityType' => 'Postal' }
82
88
 
83
- bl = Bing::Location.new resource
89
+ bl = BL.new resource
84
90
 
85
91
  assert_equal 'Postal', bl.entity_type
86
92
  end
@@ -88,14 +94,14 @@ class TestBingLocation < MiniTest::Unit::TestCase
88
94
  def test_initialize_with_full_name
89
95
  resource = { 'name' => '123 street, ca' }
90
96
 
91
- bl = Bing::Location.new resource
97
+ bl = BL.new resource
92
98
 
93
99
  assert_equal '123 street, ca', bl.full_name
94
100
  end
95
101
 
96
102
  def test_initialize_without_resource_raises
97
- assert_raises LocationResourceMissing do
98
- Bing::Location.new nil
103
+ assert_raises Bing::LocationResourceMissing do
104
+ BL.new nil
99
105
  end
100
106
  end
101
107
 
@@ -9,15 +9,15 @@ class TestRequest < MiniTest::Unit::TestCase
9
9
  def test_get_failure
10
10
  stub_request(:any, "http://example.com").to_return(:status => 500)
11
11
 
12
- assert_raises BadGateway do
13
- get @uri
12
+ assert_raises Bing::BadGateway do
13
+ Bing::Request.get @uri
14
14
  end
15
15
  end
16
16
 
17
17
  def test_get_success
18
18
  stub_request(:any, "http://example.com").to_return(:status => 200)
19
19
 
20
- response = get @uri
20
+ response = Bing::Request.get @uri
21
21
 
22
22
  assert_equal '200', response.code
23
23
  end
@@ -0,0 +1,66 @@
1
+ require 'helper'
2
+
3
+ class Bing::RestResource
4
+ def initialize *args
5
+ end
6
+ end
7
+
8
+ class TestBingRestResource < MiniTest::Unit::TestCase
9
+
10
+ BRR = Bing::RestResource # so cold
11
+
12
+ def test_base_path
13
+ assert_equal '/REST/v1', BRR::BASE_PATH
14
+ end
15
+
16
+ def test_cls__find
17
+ stub_request(:any, /.*/).to_return(:status => 200, :body => body)
18
+
19
+ assert_resource BRR._find URI.parse 'http://example.com'
20
+ end
21
+
22
+ def test_map_uri
23
+ assert_match %r[.*virtualearth.*REST.*key.*dunkey],
24
+ BRR.map_uri('dunkey').to_s
25
+ end
26
+
27
+ def test_map_find
28
+ mock_map_request 200, BRR.path, body
29
+
30
+ assert_resource BRR.map_find 'dunkey'
31
+ end
32
+
33
+ def test_path
34
+ assert_equal "#{BRR::BASE_PATH}", BRR.path
35
+ assert_equal "#{BRR::BASE_PATH}/chunky", BRR.path('/chunky')
36
+ end
37
+
38
+ def test_bbox
39
+ box = %w[south west north east]
40
+ bbox = BRR.new.bbox box
41
+
42
+ assert_equal 'north', bbox[:north]
43
+ assert_equal 'east', bbox[:east]
44
+ assert_equal 'south', bbox[:south]
45
+ assert_equal 'west', bbox[:west]
46
+ end
47
+
48
+ private
49
+
50
+ def assert_resource found
51
+ assert_kind_of Array, found
52
+ assert_equal BRR.new.class, found.first.class
53
+ end
54
+
55
+ def body
56
+ {
57
+ 'resourceSets' => [
58
+ 'resources' => [
59
+ {'name' => 'full name'}
60
+ ]
61
+ ]
62
+ }.to_json
63
+ end
64
+
65
+ end
66
+
@@ -8,6 +8,8 @@ end
8
8
 
9
9
  class TestBingRoute < MiniTest::Unit::TestCase
10
10
 
11
+ BR = Bing::Route
12
+
11
13
  def test_cls_find
12
14
  body = {
13
15
  'resourceSets' => [
@@ -17,29 +19,33 @@ class TestBingRoute < MiniTest::Unit::TestCase
17
19
  ]
18
20
  }.to_json
19
21
 
20
- mock_map_request 200, '/REST/v1/Routes', body
22
+ mock_map_request 200, BR.path, body
21
23
 
22
- route = Bing::Route.find :waypoints => ['start', 'end']
24
+ route = BR.find :waypoints => ['start', 'end']
23
25
  end
24
26
 
25
27
  def test_cls_format_waypoints
26
28
  waypoints = ['start', 'end']
27
29
 
28
30
  assert_equal 'waypoint.0=start&waypoint.1=end',
29
- Bing::Route.format_waypoints(waypoints)
31
+ BR.format_waypoints(waypoints)
30
32
 
31
33
  waypoints = ["4.9, -1.2", "1.2, 2.2"]
32
34
 
33
35
  assert_equal 'waypoint.0=4.9%2C+-1.2&waypoint.1=1.2%2C+2.2',
34
- Bing::Route.format_waypoints(waypoints)
36
+ BR.format_waypoints(waypoints)
37
+
38
+ assert_equal nil, BR.format_waypoints(nil)
39
+ end
35
40
 
36
- assert_equal nil, Bing::Route.format_waypoints(nil)
41
+ def test_cls_path
42
+ assert_match %r[Route], BR.path
37
43
  end
38
44
 
39
45
  def test_initialize_with_bbox
40
46
  resource = { 'bbox' => %w[south west north east] }
41
47
 
42
- bl = Bing::Route.new resource
48
+ bl = BR.new resource
43
49
 
44
50
  assert_equal 'north', bl.bounding_box[:north]
45
51
  assert_equal 'east', bl.bounding_box[:east]
@@ -50,7 +56,7 @@ class TestBingRoute < MiniTest::Unit::TestCase
50
56
  def test_initialize_with_distance_unit
51
57
  resource = { 'distanceUnit' => 'miles' }
52
58
 
53
- br = Bing::Route.new resource
59
+ br = BR.new resource
54
60
 
55
61
  assert_equal 'miles', br.distance_unit
56
62
  end
@@ -58,7 +64,7 @@ class TestBingRoute < MiniTest::Unit::TestCase
58
64
  def test_initialize_with_duration_unit
59
65
  resource = { 'durationUnit' => 'sec' }
60
66
 
61
- br = Bing::Route.new resource
67
+ br = BR.new resource
62
68
 
63
69
  assert_equal 'sec', br.duration_unit
64
70
  end
@@ -70,7 +76,7 @@ class TestBingRoute < MiniTest::Unit::TestCase
70
76
  }]
71
77
  }
72
78
 
73
- br = Bing::Route.new resource
79
+ br = BR.new resource
74
80
 
75
81
  assert_equal [1,2], br.ending_coordinates
76
82
  end
@@ -85,7 +91,7 @@ class TestBingRoute < MiniTest::Unit::TestCase
85
91
  }]
86
92
  }
87
93
 
88
- br = Bing::Route.new resource
94
+ br = BR.new resource
89
95
 
90
96
  assert_equal 1, br.itinerary.first.distance
91
97
  assert_equal 2, br.itinerary.last.distance
@@ -98,7 +104,7 @@ class TestBingRoute < MiniTest::Unit::TestCase
98
104
  }]
99
105
  }
100
106
 
101
- br = Bing::Route.new resource
107
+ br = BR.new resource
102
108
 
103
109
  assert_equal [1,2], br.starting_coordinates
104
110
  end
@@ -106,7 +112,7 @@ class TestBingRoute < MiniTest::Unit::TestCase
106
112
  def test_initialize_with_total_distance
107
113
  resource = { 'travelDistance' => 117.406223 }
108
114
 
109
- br = Bing::Route.new resource
115
+ br = BR.new resource
110
116
 
111
117
  assert_equal 117.406223, br.total_distance
112
118
  end
@@ -114,7 +120,7 @@ class TestBingRoute < MiniTest::Unit::TestCase
114
120
  def test_initialize_with_total_duration
115
121
  resource = { 'travelDuration' => 11723 }
116
122
 
117
- br = Bing::Route.new resource
123
+ br = BR.new resource
118
124
 
119
125
  assert_equal 11723, br.total_duration
120
126
  end
@@ -126,14 +132,14 @@ class TestBingRoute < MiniTest::Unit::TestCase
126
132
  }]
127
133
  }
128
134
 
129
- br = Bing::Route.new resource
135
+ br = BR.new resource
130
136
 
131
137
  assert_equal 'type', br.type
132
138
  end
133
139
 
134
140
  def test_initialize_without_resource_raises
135
- assert_raises RouteResourceMissing do
136
- Bing::Route.new nil
141
+ assert_raises Bing::RouteResourceMissing do
142
+ BR.new nil
137
143
  end
138
144
  end
139
145
 
@@ -51,7 +51,7 @@ class TestBingRouteItinerary < MiniTest::Unit::TestCase
51
51
  end
52
52
 
53
53
  def test_initialize_without_resource_raises
54
- assert_raises ItineraryResourceMissing do
54
+ assert_raises Bing::ItineraryResourceMissing do
55
55
  Bing::Route::Itinerary.new nil
56
56
  end
57
57
  end
@@ -10,10 +10,10 @@ class TestCoreExt < MiniTest::Unit::TestCase
10
10
 
11
11
  def test_to_param
12
12
  query = {:hi_mom => true}
13
- assert_equal 'hiMom=true', query.to_param
13
+ assert_equal 'hiMom=true', query.to_lower_camelized_param
14
14
 
15
15
  query[:yep] = false
16
- assert_equal 'hiMom=true&yep=false', query.to_param
16
+ assert_equal 'hiMom=true&yep=false', query.to_lower_camelized_param
17
17
  end
18
18
 
19
19
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bing
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Adam Avilla
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-03 00:00:00 Z
18
+ date: 2011-08-05 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: net-http-persistent
@@ -140,18 +140,19 @@ files:
140
140
  - lib/bing.rb
141
141
  - lib/bing/core_ext.rb
142
142
  - lib/bing/errors.rb
143
- - lib/bing/formatting_helper.rb
144
143
  - lib/bing/location.rb
145
144
  - lib/bing/request.rb
145
+ - lib/bing/rest_resource.rb
146
146
  - lib/bing/route.rb
147
147
  - lib/bing/route/itinerary.rb
148
148
  - test/helper.rb
149
149
  - test/test_bing.rb
150
150
  - test/test_bing_location.rb
151
+ - test/test_bing_request.rb
152
+ - test/test_bing_rest_resource.rb
151
153
  - test/test_bing_route.rb
152
154
  - test/test_bing_route_itinerary.rb
153
155
  - test/test_core_ext.rb
154
- - test/test_request.rb
155
156
  - .gemtest
156
157
  homepage: https://github.com/hekaldama/bing
157
158
  licenses: []
@@ -190,7 +191,8 @@ summary: Bing api client library that exposes all of Bing's api features.
190
191
  test_files:
191
192
  - test/test_bing.rb
192
193
  - test/test_bing_location.rb
194
+ - test/test_bing_rest_resource.rb
193
195
  - test/test_core_ext.rb
194
196
  - test/test_bing_route.rb
195
197
  - test/test_bing_route_itinerary.rb
196
- - test/test_request.rb
198
+ - test/test_bing_request.rb
@@ -1,21 +0,0 @@
1
- ##
2
- # Responsible for consolidating response formatting logic shared
3
- # amongst resources.
4
-
5
- module Bing::FormattingHelper
6
-
7
- ##
8
- # Decipher bounding box from bbox in Bing response.
9
-
10
- def bbox box
11
- south, west, north, east = *box
12
- {
13
- :north => north,
14
- :east => east,
15
- :south => south,
16
- :west => west,
17
- }
18
- end
19
-
20
- end
21
-