atlas_client 0.0.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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +2 -0
- data/atlas_client.gemspec +21 -0
- data/lib/atlas_client.rb +11 -0
- data/lib/atlas_client/address.rb +4 -0
- data/lib/atlas_client/finder.rb +11 -0
- data/lib/atlas_client/json_object.rb +13 -0
- data/lib/atlas_client/place.rb +17 -0
- data/lib/atlas_client/place_finder.rb +20 -0
- data/lib/atlas_client/poi.rb +40 -0
- data/lib/atlas_client/poi_finder.rb +23 -0
- data/lib/atlas_client/practicalities.rb +4 -0
- data/lib/atlas_client/property.rb +4 -0
- data/lib/atlas_client/reviews.rb +5 -0
- data/lib/atlas_client/telephone.rb +4 -0
- data/lib/atlas_client/version.rb +3 -0
- metadata +73 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "atlas_client/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "atlas_client"
|
7
|
+
s.version = AtlasClient::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Chris Aitchison"]
|
10
|
+
s.email = ["chris.aitchison@lonelyplanet.com.au"]
|
11
|
+
s.homepage = "http://www.lonelyplanet.com"
|
12
|
+
s.summary = %q{A client for the Atlas API}
|
13
|
+
s.description = %q{A client for the Atlas API}
|
14
|
+
|
15
|
+
s.rubyforge_project = "atlas_client"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
end
|
data/lib/atlas_client.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'atlas_client/json_object'
|
2
|
+
require 'atlas_client/reviews'
|
3
|
+
require 'atlas_client/telephone'
|
4
|
+
require 'atlas_client/practicalities'
|
5
|
+
require 'atlas_client/property'
|
6
|
+
require 'atlas_client/address'
|
7
|
+
require 'atlas_client/place'
|
8
|
+
require 'atlas_client/poi'
|
9
|
+
require 'atlas_client/finder'
|
10
|
+
require 'atlas_client/place_finder'
|
11
|
+
require 'atlas_client/poi_finder'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module AtlasClient
|
2
|
+
class JsonObject
|
3
|
+
def initialize json
|
4
|
+
json = json.to_json if json.class == Hash
|
5
|
+
json = JSON.parse json if json.class == String
|
6
|
+
@json = json
|
7
|
+
end
|
8
|
+
|
9
|
+
def method_missing(name, *args, &block)
|
10
|
+
@json[name.to_s]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module AtlasClient
|
2
|
+
class PlaceFinder < Finder
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
@places_url = "http://lposfusion.load.lpo/places?"
|
6
|
+
|
7
|
+
def self.find_by_id id
|
8
|
+
query("where[id]=#{id}").first
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.query query_string
|
12
|
+
json = get_json @places_url+query_string+"&limit=999999"
|
13
|
+
places = []
|
14
|
+
json['places'].collect do |place_json|
|
15
|
+
Place.new(place_json)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module AtlasClient
|
2
|
+
class POI < JsonObject
|
3
|
+
|
4
|
+
def reviews
|
5
|
+
@reviews ||= Reviews.new @json['reviews'][0]
|
6
|
+
end
|
7
|
+
|
8
|
+
def telephones
|
9
|
+
return @telephones if @telephones
|
10
|
+
@telephones = @json['telephones'].collect do |telephone|
|
11
|
+
Telephone.new telephone
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def properties
|
16
|
+
return @properties if @properties
|
17
|
+
@properties = @json['properties'].collect do |property|
|
18
|
+
Property.new property
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def addresses
|
23
|
+
return @addresses if @addresses
|
24
|
+
@addresses = @json['addresses'].collect do |address|
|
25
|
+
Address.new address
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def practicalities
|
30
|
+
@practicalities ||= Practicalities.new @json['practicalities'][0]
|
31
|
+
end
|
32
|
+
|
33
|
+
def place
|
34
|
+
return @place if @place
|
35
|
+
place_id = place_ancestry_ids.split("~").last
|
36
|
+
@place = PlaceFinder.find_by_id place_id
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module AtlasClient
|
2
|
+
class PoiFinder < Finder
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
@pois_url = "http://lposfusion.load.lpo/pois?"
|
6
|
+
|
7
|
+
def self.find_by_place_id place_id
|
8
|
+
query "where[place]=#{place_id}"
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.find_by_id id
|
12
|
+
query("where[id]=#{id}").first
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.query query_string
|
16
|
+
json = get_json @pois_url+query_string+"&limit=999999"
|
17
|
+
pois = []
|
18
|
+
json['pois'].collect do |poi_json|
|
19
|
+
POI.new(poi_json)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: atlas_client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Chris Aitchison
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-04-27 00:00:00 +10:00
|
14
|
+
default_executable:
|
15
|
+
dependencies: []
|
16
|
+
|
17
|
+
description: A client for the Atlas API
|
18
|
+
email:
|
19
|
+
- chris.aitchison@lonelyplanet.com.au
|
20
|
+
executables: []
|
21
|
+
|
22
|
+
extensions: []
|
23
|
+
|
24
|
+
extra_rdoc_files: []
|
25
|
+
|
26
|
+
files:
|
27
|
+
- .gitignore
|
28
|
+
- Gemfile
|
29
|
+
- Rakefile
|
30
|
+
- atlas_client.gemspec
|
31
|
+
- lib/atlas_client.rb
|
32
|
+
- lib/atlas_client/address.rb
|
33
|
+
- lib/atlas_client/finder.rb
|
34
|
+
- lib/atlas_client/json_object.rb
|
35
|
+
- lib/atlas_client/place.rb
|
36
|
+
- lib/atlas_client/place_finder.rb
|
37
|
+
- lib/atlas_client/poi.rb
|
38
|
+
- lib/atlas_client/poi_finder.rb
|
39
|
+
- lib/atlas_client/practicalities.rb
|
40
|
+
- lib/atlas_client/property.rb
|
41
|
+
- lib/atlas_client/reviews.rb
|
42
|
+
- lib/atlas_client/telephone.rb
|
43
|
+
- lib/atlas_client/version.rb
|
44
|
+
has_rdoc: true
|
45
|
+
homepage: http://www.lonelyplanet.com
|
46
|
+
licenses: []
|
47
|
+
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
|
51
|
+
require_paths:
|
52
|
+
- lib
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: "0"
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: "0"
|
65
|
+
requirements: []
|
66
|
+
|
67
|
+
rubyforge_project: atlas_client
|
68
|
+
rubygems_version: 1.5.0
|
69
|
+
signing_key:
|
70
|
+
specification_version: 3
|
71
|
+
summary: A client for the Atlas API
|
72
|
+
test_files: []
|
73
|
+
|