here_places 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ca349103c0d8faa2555209ea0c87aa79b169338f
4
+ data.tar.gz: 7b1a4f99310c45b27ba527a1350e91ddecb14edb
5
+ SHA512:
6
+ metadata.gz: 7bb67e78d3b28612e9405c211dab28896b8d9b290d7d0cac98a41882d3292dc3e33230df0109b2bc9a201935fc7ef6379ea5c340005b79c88d9ad8e9df3de8e4
7
+ data.tar.gz: e62fcce6f18998fc3ed8a87478c12a0f59417021a479027c3f37efc48ec609640c5f0872f51b5f5c1dbbf99aec3facea31486485a639af8193cda0fa9260d016
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![wercker status](https://app.wercker.com/status/81bd9481a9248f8faadc499fe46321b1/s "wercker status")](https://app.wercker.com/project/bykey/81bd9481a9248f8faadc499fe46321b1)
2
+
1
3
  # HerePlaces
2
4
  A wafer-thin Ruby wrapper for accessing Nokia's Here Maps Places API.
3
5
  Read more about the official API here: <http://developer.here.net/>
@@ -13,7 +15,7 @@ And then execute:
13
15
 
14
16
  $ bundle
15
17
 
16
- Or install it yourself as:
18
+ Or install it with:
17
19
 
18
20
  $ gem install here_places
19
21
 
@@ -27,12 +29,19 @@ To start using the APIs, register for a Nokia Developer Account <http://develope
27
29
 
28
30
  * * *
29
31
 
32
+ ### Set up the API creds
33
+
34
+ ```ruby
35
+ HerePlaces.set_keys(:app_id, :app_code)
36
+ ```
37
+
30
38
  ### Discover API
31
39
 
32
40
  #### Searching <http://developer.here.net/docs/places/topics/resource-search.html>
33
41
 
34
42
  The search resource represent sets of places that match a user's search term in a specific location context (such as near a given location, around a user's current position or on the currently visible map).
35
43
 
44
+ ```ruby
36
45
  require 'here_places'
37
46
  app_id = "YOUR_APP_ID"
38
47
  app_code = "YOUR_APP_CODE"
@@ -40,14 +49,16 @@ The search resource represent sets of places that match a user's search term in
40
49
  q: 'Cafe',
41
50
  at: '40.74917,-73.98529',
42
51
  }
43
- api = HerePlaces::Discover.new(app_id, app_code)
52
+ api = HerePlaces::Discover.new
44
53
  a = api.search(data)
54
+ ```
45
55
 
46
56
  #### Exploring <http://developer.here.net/docs/places/topics/resource-explore.html>
47
57
 
48
58
  The explore resource represent sets of popular places within a specific location context. The explore resource allows users to explore places without typing search queries. An explore resource's location context might be an explicitly given location or implicitly defined by a user's current position or the currently visible map. Optionally, the places may be restricted to a given set of categories.
49
59
  `at` and `in` parameter are mutually exclusive and can't be passed at the same time
50
60
 
61
+ ```ruby
51
62
  require 'here_places'
52
63
  app_id = "YOUR_APP_ID"
53
64
  app_code = "YOUR_APP_CODE"
@@ -55,13 +66,15 @@ The explore resource represent sets of popular places within a specific location
55
66
  cat: 'natural-geographical',
56
67
  at: '40.74917,-73.98529',
57
68
  }
58
- api = HerePlaces::Discover.new(app_id, app_code)
69
+ api = HerePlaces::Discover.new
59
70
  a = api.explore(data)
71
+ ```
60
72
 
61
73
  #### Here <http://developer.here.net/docs/places/topics/resource-discover-here.html>
62
74
 
63
75
  The discover here resource represent sets of places within a specific location context. The Discover Here resource allows users to request places near to a given point, based on a location precision parameter which must be provided. If the precision is high, the places around that point are returned in order of proximity. Otherwise, a set of recommended places in the area is returned.
64
76
 
77
+ ```ruby
65
78
  require 'here_places'
66
79
  app_id = "YOUR_APP_ID"
67
80
  app_code = "YOUR_APP_CODE"
@@ -69,37 +82,19 @@ The discover here resource represent sets of places within a specific location c
69
82
  cat: 'natural-geographical',
70
83
  at: '40.7063,-73.9971;u=0',
71
84
  }
72
- api = HerePlaces::Discover.new(app_id, app_code)
85
+ api = HerePlaces::Discover.new
73
86
  a = api.here(data)
87
+ ```
74
88
 
75
89
  * * *
76
90
 
77
- ### Places
78
-
79
- #### The Place Resource <http://developer.here.net/docs/places/topics/resource-discover-here.html>
80
-
81
- The place resource represent places on earth.
82
- Examples for places include:
83
- Places of (public) interest (POI)
84
- Addresses of buildings (Locations)
85
- Named areas and regions
86
- Each place is referenced by an identifier, called a placeId.
87
-
88
- require 'here_places'
89
- app_id = "YOUR_APP_ID"
90
- app_code = "YOUR_APP_CODE"
91
- id = '840dr5rs-5c0f37fabdc643938dd4f47db00d4ae8'
92
- api = HerePlaces::Place.new(app_id, app_code)
93
- a = api.places(id)
94
-
95
- * * *
96
-
97
91
  ### Suggestions
98
92
 
99
93
  #### The Search Suggestion Resource <http://developer.here.net/docs/places/topics/resource-suggest.html>
100
94
 
101
95
  The search suggestions resource represents lists of suggested search terms related to a given (partial) search term and location context.
102
96
 
97
+ ```ruby
103
98
  require 'here_places'
104
99
  app_id = "YOUR_APP_ID"
105
100
  app_code = "YOUR_APP_CODE"
@@ -107,8 +102,9 @@ The search suggestions resource represents lists of suggested search terms relat
107
102
  q: 'restaur',
108
103
  at: '40.7063,-73.9971',
109
104
  }
110
- api = HerePlaces::Suggest.new(app_id, app_code)
105
+ api = HerePlaces::Suggest.new
111
106
  a = api.suggest(data)
107
+ ```
112
108
 
113
109
  * * *
114
110
 
@@ -118,14 +114,16 @@ The search suggestions resource represents lists of suggested search terms relat
118
114
 
119
115
  The category graph resource represents sets of locally relevant categories that are organized in a graph-like hierarchy. The category graph may change at any point in the future and may be different depending on the location of the request. A set of permanent, top-level, categories can be found [here](http://developer.here.net/docs/places/topics/categories.html).
120
116
 
117
+ ```ruby
121
118
  require 'here_places'
122
119
  app_id = "YOUR_APP_ID"
123
120
  app_code = "YOUR_APP_CODE"
124
121
  data = {
125
122
  at: '40.7063,-73.9971',
126
123
  }
127
- api = HerePlaces::Category.new(app_id, app_code)
124
+ api = HerePlaces::Category.new
128
125
  a = api.places(data)
126
+ ```
129
127
 
130
128
  * * *
131
129
 
@@ -160,4 +158,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
160
158
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
161
159
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
162
160
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
163
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
161
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/here_places.gemspec CHANGED
@@ -5,7 +5,7 @@ require 'here_places/version'
5
5
 
6
6
  Gem::Specification.new do |gem|
7
7
  gem.name = "here_places"
8
- gem.version = HerePlaces::VERSION
8
+ gem.version = HerePlaces::VERSION
9
9
  gem.authors = ["Prem Pillai"]
10
10
  gem.email = ["prem.pillai@gmail.com"]
11
11
  gem.description = %q{A wafer-thin Ruby Wrapper for Nokia's Here Places API}
@@ -17,7 +17,8 @@ Gem::Specification.new do |gem|
17
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features|helper)/})
19
19
  gem.require_paths = ["lib"]
20
- gem.add_development_dependency 'rspec', '~>2.1'
21
- gem.add_development_dependency 'fakeweb', '~>1.3'
22
- gem.add_dependency 'faraday', '~>0.8.4'
23
- end
20
+ gem.add_dependency 'faraday', '~>0.9.1'
21
+ gem.add_development_dependency 'rspec', '~>3.1'
22
+ gem.add_development_dependency 'vcr', '~>2.9'
23
+ gem.add_development_dependency 'webmock', '~>1.21'
24
+ end
data/lib/here_places.rb CHANGED
@@ -4,7 +4,6 @@ require_relative './here_places/base'
4
4
  require_relative './here_places/category'
5
5
  require_relative './here_places/discover'
6
6
  require_relative './here_places/error'
7
- require_relative './here_places/place'
8
7
  require_relative './here_places/suggest'
9
8
 
10
9
  # /discover/search?q=...&[at=...]
@@ -12,4 +11,22 @@ require_relative './here_places/suggest'
12
11
  # /discover/here?[at=...]
13
12
  # /places/{placeId}
14
13
  # /suggest?q=...&[at=...]
15
- # /categories/places?[at=...]
14
+ # /categories/places?[at=...]
15
+
16
+ module HerePlaces
17
+ BASE_URL = 'http://places.nlp.nokia.com/'.freeze
18
+ API_PREFIX = 'places/v1'.freeze
19
+
20
+ def self.set_keys(app_id, app_code)
21
+ @app_id = app_id
22
+ @app_code = app_code
23
+ end
24
+
25
+ def self.app_id
26
+ @app_id
27
+ end
28
+
29
+ def self.app_code
30
+ @app_code
31
+ end
32
+ end
@@ -1,41 +1,42 @@
1
1
  module HerePlaces
2
2
  class Base
3
- @@base_url = 'http://places.nlp.nokia.com/'
4
- @@api_prefix = 'places/v1'
5
-
6
3
  attr_reader :conn
7
4
 
8
- def initialize(app_id, app_code, log=false)
9
- @app_id = app_id
10
- @app_code = app_code
5
+ def initialize(log=false)
11
6
  @log = log
12
- setup()
13
- end
14
-
15
- def setup
16
- @conn = Faraday.new(:url => @@base_url) do |faraday|
17
- faraday.request :url_encoded
18
- faraday.response :logger if @log
19
- faraday.adapter Faraday.default_adapter
20
- end
21
7
  end
22
8
 
23
- def api(url_fragment, data={})
24
- result = @conn.get do |req|
9
+ protected
10
+
11
+ def call_api(url_fragment, payload={})
12
+ result = connection.get do |req|
25
13
  req.url url_fragment
26
- req.params['app_id'] = @app_id
27
- req.params['app_code'] = @app_code
28
- data.each do |key,value|
14
+ req.params['app_code'] = HerePlaces.app_code
15
+ req.params['app_id'] = HerePlaces.app_id
16
+ payload.each do |key,value|
29
17
  req.params[key] = value
30
18
  end
31
19
  end
32
-
20
+
33
21
  parsed_result = JSON.parse(result.body)
34
- if parsed_result["status"]
22
+
23
+ if result.status.to_i != 200
35
24
  raise HerePlaces::APIError.new(parsed_result), parsed_result['message']
36
25
  else
37
26
  parsed_result
38
27
  end
39
28
  end
29
+
30
+ private
31
+
32
+ attr_reader :log
33
+
34
+ def connection
35
+ @_connection ||= Faraday.new(:url => BASE_URL) do |faraday|
36
+ faraday.request :url_encoded
37
+ faraday.response :logger if log
38
+ faraday.adapter Faraday.default_adapter
39
+ end
40
+ end
40
41
  end
41
- end
42
+ end
@@ -1,10 +1,13 @@
1
1
  module HerePlaces
2
2
  class Category < HerePlaces::Base
3
- @@resource = 'categories'
3
+ def places(payload)
4
+ call_api(path, payload)
5
+ end
6
+
7
+ private
4
8
 
5
- def places(data)
6
- url = @@api_prefix + '/' + @@resource + '/' + 'places'
7
- api(url, data)
9
+ def path
10
+ @_path ||= HerePlaces::API_PREFIX + '/' + 'categories' + '/' + 'places'
8
11
  end
9
12
  end
10
- end
13
+ end
@@ -1,11 +1,15 @@
1
1
  module HerePlaces
2
2
  class Discover < HerePlaces::Base
3
- @@resource = 'discover'
4
3
  %w(search explore here).each do |meth|
5
- define_method(meth) do |data|
6
- url = @@api_prefix + '/' + @@resource + '/' + meth
7
- api(url, data)
4
+ define_method(meth) do |payload|
5
+ call_api(path(meth), payload)
8
6
  end
9
7
  end
8
+
9
+ private
10
+
11
+ def path(meth)
12
+ HerePlaces::API_PREFIX + '/' + 'discover' + '/' + meth
13
+ end
10
14
  end
11
- end
15
+ end
@@ -1,10 +1,10 @@
1
1
  module HerePlaces
2
2
  class APIError < StandardError
3
3
  attr_accessor :status, :error_message
4
-
4
+
5
5
  def initialize(error)
6
6
  self.status = error["status"].to_i rescue 500
7
7
  self.error_message = error["error_message"] || 'Unknown Error'
8
8
  end
9
9
  end
10
- end
10
+ end
@@ -1,10 +1,13 @@
1
1
  module HerePlaces
2
2
  class Suggest < HerePlaces::Base
3
- @@resource = 'suggest'
4
-
5
3
  def suggest(data)
6
- url = @@api_prefix + '/' + @@resource
7
- api(url, data)
4
+ call_api(path, data)
5
+ end
6
+
7
+ private
8
+
9
+ def path
10
+ @_path ||= HerePlaces::API_PREFIX + '/' + 'suggest'
8
11
  end
9
12
  end
10
- end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module HerePlaces
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -1,18 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe HerePlaces::Category do
4
- before(:each) do
5
- app_id = 'APP_ID'
6
- app_code = 'APP_CODE'
7
- @data = {test: 'stuff'}
8
- @h = HerePlaces::Category.new(app_id, app_code)
9
- @h.stub!(:api)
10
- end
4
+ let(:api) { described_class.new }
5
+ let(:payload) { { at: '52.5159,13.3777', cat: 'sights-museums' } }
11
6
 
12
- it 'responds correctly to places method and delegates to the api call' do
13
- resource_url = "#{API_PREFIX}/categories/places"
14
- @h.should respond_to(:places)
15
- @h.should_receive(:api).with(resource_url, @data)
16
- @h.places(@data)
7
+ it "calls the api and returns results correctly" do
8
+ VCR.use_cassette("categories", record: :once) do
9
+ results = api.places(payload)
10
+ expect(results["items"][0]["title"]).to eq "Eat & Drink"
11
+ end
17
12
  end
18
- end
13
+
14
+ end
@@ -1,20 +1,28 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe HerePlaces::Discover do
4
- before(:each) do
5
- app_id = 'APP_ID'
6
- app_code = 'APP_CODE'
7
- @data = {test: 'stuff'}
8
- @h = HerePlaces::Discover.new(app_id, app_code)
9
- @h.stub!(:api)
4
+ let(:api) { described_class.new }
5
+ let(:payload) { { at: '52.5159,13.3777'} }
6
+
7
+ %w(explore here).each do |meth|
8
+ describe meth do
9
+ it "calls the api and returns results correctly" do
10
+ VCR.use_cassette("#{meth}", record: :once) do
11
+ results = api.send(:"#{meth}", payload)
12
+ expect(results["results"]["items"].count).to be > 0
13
+ end
14
+ end
15
+ end
10
16
  end
11
17
 
12
- %w(search explore here).each do |meth|
13
- it "responds correctly to #{meth} and delegates to the api call" do
14
- resource_url = "#{API_PREFIX}/discover/#{meth}"
15
- @h.should respond_to(meth.to_sym)
16
- @h.should_receive(:api).with(resource_url, @data)
17
- @h.send(meth.to_sym, @data)
18
+ describe "search" do
19
+ let(:payload) { { at: '52.5159,13.3777', q: 'Cafe'} }
20
+
21
+ it "calls the api and returns results correctly" do
22
+ VCR.use_cassette("search", record: :once) do
23
+ results = api.search(payload)
24
+ expect(results["results"]["items"].count).to be > 0
25
+ end
18
26
  end
19
27
  end
20
- end
28
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Error" do
4
+ let(:api) { HerePlaces::Suggest.new }
5
+ let(:payload) { { q: 'berl' } }
6
+
7
+ it "calls the api and returns results correctly" do
8
+ VCR.use_cassette("suggest-bad", record: :once) do
9
+ expect{
10
+ api.suggest(payload)
11
+ }.to raise_error HerePlaces::APIError
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,99 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://places.nlp.nokia.com/places/v1/categories/places?app_code=<APP_CODE>&app_id=<APP_ID>&at=52.5159,13.3777&cat=sights-museums
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.1
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Cache-Control:
22
+ - max-age=7200, private, must-revalidate
23
+ Content-Language:
24
+ - en
25
+ Content-Type:
26
+ - application/json; charset=UTF-8
27
+ Date:
28
+ - Sat, 25 Apr 2015 12:21:26 GMT
29
+ Expires:
30
+ - Sat, 25 Apr 2015 14:21:26 GMT
31
+ Last-Modified:
32
+ - Tue, 21 Apr 2015 13:16:07 GMT
33
+ Set-Cookie:
34
+ - NLP.PP=e496f867-ef15-462b-96f8-67ef15862bdf;Path=/;Domain=.nlp.nokia.com;Expires=Thu,
35
+ 22-Oct-2015 12:21:26 GMT
36
+ - NLP.PS=f9319e8f-edc0-4fd7-b19e-8fedc0bfd77e;Path=/;Domain=.nlp.nokia.com
37
+ Vary:
38
+ - Accept, Accept-Encoding, Accept-Language, X-Map-Viewport, Geolocation
39
+ X-Nlp-Tid:
40
+ - dae572b3-6e05-4eec-a572-b36e053eec66
41
+ Content-Length:
42
+ - '2270'
43
+ Connection:
44
+ - keep-alive
45
+ body:
46
+ encoding: UTF-8
47
+ string: '{"items":[{"id":"eat-drink","title":"Eat & Drink","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/03.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/eat-drink?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":[]},{"id":"restaurant","title":"Restaurant","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/03.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/restaurant?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["eat-drink"]},{"id":"snacks-fast-food","title":"Snacks/Fast
48
+ food","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/03.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/snacks-fast-food?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["eat-drink"]},{"id":"bar-pub","title":"Bar/Pub","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/22.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/bar-pub?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["eat-drink"]},{"id":"coffee-tea","title":"Coffee/Tea","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/23.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/coffee-tea?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["eat-drink"]},{"id":"coffee","title":"Coffee","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/23.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/coffee?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["coffee-tea"]},{"id":"tea","title":"Tea","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/23.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/tea?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["coffee-tea"]},{"id":"going-out","title":"Going
49
+ Out","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/05.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/going-out?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":[]},{"id":"dance-night-club","title":"Dance
50
+ or Nightclub","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/33.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/dance-night-club?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["going-out"]},{"id":"cinema","title":"Cinema","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/32.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/cinema?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["going-out"]},{"id":"theatre-music-culture","title":"Theatre,
51
+ Music & Culture","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/05.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/theatre-music-culture?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["going-out"]},{"id":"casino","title":"Casino","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/31.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/casino?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["going-out"]},{"id":"sights-museums","title":"Sights
52
+ & Museums","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/10.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/sights-museums?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":[]},{"id":"landmark-attraction","title":"Landmark/Attraction","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/38.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/landmark-attraction?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["sights-museums"]},{"id":"museum","title":"Museum","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/10.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/museum?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["sights-museums"]},{"id":"transport","title":"Transport","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/11.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/transport?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":[]},{"id":"airport","title":"Airport","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/40.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/airport?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["transport"]},{"id":"railway-station","title":"Railway
53
+ Station","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/43.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/railway-station?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["transport"]},{"id":"public-transport","title":"Public
54
+ Transport","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/11.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/public-transport?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["transport"]},{"id":"ferry-terminal","title":"Ferry
55
+ Terminal","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/41.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/ferry-terminal?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["transport"]},{"id":"taxi-stand","title":"Taxi
56
+ Stand","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/42.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/taxi-stand?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["transport"]},{"id":"accommodation","title":"Accommodation","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/01.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/accommodation?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":[]},{"id":"hotel","title":"Hotel","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/01.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/hotel?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["accommodation"]},{"id":"motel","title":"Motel","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/01.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/motel?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["accommodation"]},{"id":"hostel","title":"Hostel","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/01.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/hostel?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["accommodation"]},{"id":"camping","title":"Camping","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/14.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/camping?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["accommodation"]},{"id":"shopping","title":"Shopping","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/shopping?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":[]},{"id":"kiosk-convenience-store","title":"Kiosk/24-7/Convenience
57
+ Store","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/kiosk-convenience-store?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["shopping"]},{"id":"wine-and-liquor","title":"Wine
58
+ & Spirits","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/wine-and-liquor?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["kiosk-convenience-store"]},{"id":"mall","title":"Shopping
59
+ Centre","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/mall?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["shopping"]},{"id":"department-store","title":"Department
60
+ Store","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/department-store?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["shopping"]},{"id":"food-drink","title":"Food
61
+ & Drink","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/food-drink?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["shopping"]},{"id":"bookshop","title":"Book
62
+ Shop","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/bookshop?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["shopping"]},{"id":"pharmacy","title":"Chemist''s","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/37.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/pharmacy?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["shopping"]},{"id":"electronics-shop","title":"Electronics","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/electronics-shop?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["shopping"]},{"id":"hardware-house-garden-shop","title":"DIY/garden
63
+ centre","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/hardware-house-garden-shop?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["shopping"]},{"id":"clothing-accessories-shop","title":"Clothing
64
+ & Accessories","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/clothing-accessories-shop?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["shopping"]},{"id":"sport-outdoor-shop","title":"Outdoor
65
+ Sports","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/sport-outdoor-shop?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["shopping"]},{"id":"shop","title":"Shop","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/09.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/shop?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["shopping"]},{"id":"business-services","title":"Business
66
+ & Services","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/02.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/business-services?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":[]},{"id":"atm-bank-exchange","title":"ATM/Bank/Exchange","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/15.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/atm-bank-exchange?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["business-services"]},{"id":"police-emergency","title":"Police/Emergency","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/19.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/police-emergency?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["business-services"]},{"id":"ambulance-services","title":"Ambulance
67
+ Services","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/19.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/ambulance-services?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["police-emergency"]},{"id":"fire-department","title":"Fire
68
+ Brigade","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/19.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/fire-department?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["police-emergency"]},{"id":"police-station","title":"Police
69
+ Station","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/19.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/police-station?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["police-emergency"]},{"id":"post-office","title":"Post
70
+ Office","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/20.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/post-office?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["business-services"]},{"id":"tourist-information","title":"Tourist
71
+ Information","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/21.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/tourist-information?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["business-services"]},{"id":"petrol-station","title":"Petrol
72
+ Station","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/18.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/petrol-station?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["business-services"]},{"id":"car-rental","title":"Car
73
+ Hire","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/17.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/car-rental?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["business-services"]},{"id":"car-dealer-repair","title":"Car
74
+ Dealer/Repair","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/16.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/car-dealer-repair?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["business-services"]},{"id":"travel-agency","title":"Travel
75
+ Agency","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/02.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/travel-agency?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["business-services"]},{"id":"communication-media","title":"Communications/Media","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/02.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/communication-media?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["business-services"]},{"id":"business-industry","title":"Business/Industry","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/02.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/business-industry?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["business-services"]},{"id":"service","title":"Service","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/02.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/service?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["business-services"]},{"id":"facilities","title":"Facilities","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/04.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/facilities?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":[]},{"id":"hospital-health-care-facility","title":"Hospital
76
+ or Healthcare Facility","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/26.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/hospital-health-care-facility?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["facilities"]},{"id":"hospital","title":"Hospital","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/26.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/hospital?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["hospital-health-care-facility"]},{"id":"government-community-facility","title":"Government
77
+ or Community Facility","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/04.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/government-community-facility?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["facilities"]},{"id":"education-facility","title":"Educational
78
+ Facility","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/25.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/education-facility?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["facilities"]},{"id":"library","title":"Library","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/27.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/library?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["facilities"]},{"id":"fair-convention-facility","title":"Fair
79
+ & Convention Facility","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/24.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/fair-convention-facility?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["facilities"]},{"id":"parking-facility","title":"Parking
80
+ Facility","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/28.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/parking-facility?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["facilities"]},{"id":"toilet-rest-area","title":"Public
81
+ Toilet/Rest Area","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/29.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/toilet-rest-area?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["facilities"]},{"id":"sports-facility-venue","title":"Sport
82
+ Facility/Venue","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/30.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/sports-facility-venue?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["facilities"]},{"id":"facility","title":"Facility","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/04.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/facility?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["facilities"]},{"id":"religious-place","title":"Religious
83
+ Place","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/39.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/religious-place?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["facilities"]},{"id":"leisure-outdoor","title":"Leisure
84
+ & Outdoor","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/07.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/leisure-outdoor?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":[]},{"id":"recreation","title":"Recreation","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/07.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/recreation?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["leisure-outdoor"]},{"id":"amusement-holiday-park","title":"Theme
85
+ Park","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/34.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/amusement-holiday-park?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["leisure-outdoor"]},{"id":"zoo","title":"Zoo","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/34.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/zoo?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["amusement-holiday-park"]},{"id":"administrative-areas-buildings","title":"Administrative
86
+ Areas/Buildings","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/06.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/administrative-areas-buildings?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":[]},{"id":"administrative-region","title":"Administrative
87
+ Region","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/06.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/administrative-region?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["administrative-areas-buildings"]},{"id":"city-town-village","title":"City,
88
+ Town or Village","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/35.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/city-town-village?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["administrative-areas-buildings"]},{"id":"outdoor-area-complex","title":"Outdoor
89
+ Area/Complex","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/06.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/outdoor-area-complex?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["administrative-areas-buildings"]},{"id":"building","title":"Building","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/06.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/building?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["administrative-areas-buildings"]},{"id":"street-square","title":"Street
90
+ or Square","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/06.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/street-square?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["administrative-areas-buildings"]},{"id":"postal-area","title":"Postal
91
+ Area","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/06.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/postal-area?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["administrative-areas-buildings"]},{"id":"natural-geographical","title":"Natural
92
+ or Geographical","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/08.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/natural-geographical?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":[]},{"id":"body-of-water","title":"Body
93
+ of Water","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/36.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/body-of-water?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["natural-geographical"]},{"id":"mountain-hill","title":"Mountain
94
+ or Hill","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/08.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/mountain-hill?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["natural-geographical"]},{"id":"undersea-feature","title":"Undersea
95
+ Feature","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/08.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/undersea-feature?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["natural-geographical"]},{"id":"forest-heath-vegetation","title":"Forest,
96
+ Heath or Other Vegetation","icon":"http://download.vcdn.nokia.com/p/d/places2/icons/categories/08.icon","type":"urn:nlp-types:category","href":"http://places.nlp.nokia.com/places/v1/categories/places/forest-heath-vegetation?app_id=<APP_ID>&app_code=<APP_CODE>","system":"places","within":["natural-geographical"]}]}'
97
+ http_version:
98
+ recorded_at: Sat, 25 Apr 2015 12:19:56 GMT
99
+ recorded_with: VCR 2.9.3