sitra_client 0.0.5 → 0.0.6
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/lib/sitra_client.rb
CHANGED
@@ -6,6 +6,11 @@ require 'logger'
|
|
6
6
|
|
7
7
|
module SitraClient
|
8
8
|
|
9
|
+
MAX_COUNT = 100
|
10
|
+
|
11
|
+
# Safety net
|
12
|
+
MAX_LOOPS = 5
|
13
|
+
|
9
14
|
# Configuration defaults
|
10
15
|
@config = {
|
11
16
|
:base_url => 'http://api.sitra-tourisme.com/api/v001',
|
@@ -25,13 +30,35 @@ module SitraClient
|
|
25
30
|
@config
|
26
31
|
end
|
27
32
|
|
28
|
-
def self.query(criteria =
|
33
|
+
def self.query(criteria, all_results = false)
|
34
|
+
if all_results
|
35
|
+
loops = 0
|
36
|
+
criteria[:first] = 0
|
37
|
+
criteria[:count] = MAX_COUNT
|
38
|
+
response = get_response(criteria)
|
39
|
+
results = response.as_array
|
40
|
+
while response.results_count > results.length && loops < MAX_LOOPS
|
41
|
+
loops += 1
|
42
|
+
criteria[:first] += MAX_COUNT
|
43
|
+
results += get_response(criteria).as_array
|
44
|
+
end
|
45
|
+
else
|
46
|
+
response = get_response(criteria)
|
47
|
+
results = response.as_array
|
48
|
+
end
|
49
|
+
results
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def self.get_response(criteria)
|
29
55
|
response = SitraResponse.new
|
30
56
|
query = SitraQuery.new(@config[:api_key], @config[:site_identifier], criteria)
|
31
57
|
@logger.info "Search query : #{@config[:base_url]}/recherche/list-objets-touristiques?query=#{query.to_params}"
|
32
58
|
open("#{@config[:base_url]}/recherche/list-objets-touristiques?query=#{CGI.escape query.to_params}") { |f|
|
33
59
|
f.each_line {|line| response.append_line(line)}
|
34
60
|
}
|
61
|
+
@logger.info "Retrieved #{response.returned_count} of #{response.results_count} results"
|
35
62
|
response
|
36
63
|
end
|
37
64
|
|
@@ -6,14 +6,26 @@ class SitraResponse
|
|
6
6
|
|
7
7
|
def initialize
|
8
8
|
@json_response = ''
|
9
|
+
@response_hash = {}
|
9
10
|
end
|
10
11
|
|
11
12
|
def append_line(line)
|
12
13
|
@json_response += line unless line.nil?
|
13
14
|
end
|
14
15
|
|
16
|
+
def returned_count
|
17
|
+
[as_hash[:query][:count], results_count - as_hash[:query][:first]].min
|
18
|
+
end
|
19
|
+
|
20
|
+
def results_count
|
21
|
+
as_hash[:numFound]
|
22
|
+
end
|
23
|
+
|
15
24
|
def as_hash
|
16
|
-
|
25
|
+
if @response_hash.empty?
|
26
|
+
@response_hash = JSON.parse @json_response, :symbolize_names => true
|
27
|
+
end
|
28
|
+
@response_hash
|
17
29
|
end
|
18
30
|
|
19
31
|
def as_raw_json
|
@@ -21,11 +33,10 @@ class SitraResponse
|
|
21
33
|
end
|
22
34
|
|
23
35
|
def as_array
|
24
|
-
|
25
|
-
if response[:objetsTouristiques].nil?
|
36
|
+
if as_hash[:objetsTouristiques].nil?
|
26
37
|
results = []
|
27
38
|
else
|
28
|
-
results =
|
39
|
+
results = as_hash[:objetsTouristiques].collect {|obj_hash| TouristicObject.new(obj_hash)}
|
29
40
|
end
|
30
41
|
results
|
31
42
|
end
|
data/lib/sitra_client/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sitra_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-07-
|
12
|
+
date: 2014-07-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|