love 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/lib/love.rb +30 -11
- data/love.gemspec +1 -1
- metadata +3 -3
data/Gemfile.lock
CHANGED
data/lib/love.rb
CHANGED
@@ -5,6 +5,8 @@ require 'yajl'
|
|
5
5
|
|
6
6
|
module Love
|
7
7
|
|
8
|
+
VERSION = "0.0.4"
|
9
|
+
|
8
10
|
# Create a custom exception class.
|
9
11
|
class Exception < StandardError; end
|
10
12
|
|
@@ -40,6 +42,14 @@ module Love
|
|
40
42
|
raise Love::Exception, "This does not appear to be a Tender #{kind} URI or ID!"
|
41
43
|
end
|
42
44
|
end
|
45
|
+
|
46
|
+
def request_uri(base_uri, added_params = {})
|
47
|
+
base_params = base_uri.query ? CGI.parse(base_uri.query) : {}
|
48
|
+
get_params = base_params.merge(added_params || {})
|
49
|
+
base_uri.dup.tap do |uri|
|
50
|
+
uri.query = get_params.map { |k, v| "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"}.join('&')
|
51
|
+
end
|
52
|
+
end
|
43
53
|
end
|
44
54
|
|
45
55
|
class Client
|
@@ -119,25 +129,34 @@ module Love
|
|
119
129
|
end
|
120
130
|
|
121
131
|
def buffered_each(uri, list_key, options = {}, &block)
|
122
|
-
|
123
|
-
|
132
|
+
query_params = {}
|
133
|
+
query_params[:since] = options[:since].to_date.to_s(:db) if options[:since]
|
134
|
+
query_params[:page] = [options[:start_page].to_i, 1].max rescue 1
|
135
|
+
|
136
|
+
initial_result = get(request_uri(uri, query_params))
|
124
137
|
|
125
|
-
|
126
|
-
initial_result = get(uri)
|
127
|
-
start_page = [options[:start_page].to_i, 1].max rescue 1
|
138
|
+
# Determine the amount of pages that is going to be requested.
|
128
139
|
max_page = (initial_result['total'].to_f / initial_result['per_page'].to_f).ceil
|
129
140
|
end_page = options[:end_page].nil? ? max_page : [options[:end_page].to_i, max_page].min
|
130
141
|
|
131
142
|
# Print out some initial debugging information
|
132
|
-
Love.logger.debug "Paged requests to #{uri}: #{max_page} total pages, importing #{
|
143
|
+
Love.logger.debug "Paged requests to #{uri}: #{max_page} total pages, importing #{query_params[:page]} upto #{end_page}." if Love.logger
|
133
144
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
result = get(uri)
|
138
|
-
result[list_key].each { |record| yield(record) }
|
145
|
+
# Handle first page of results
|
146
|
+
if initial_result[list_key].kind_of?(Array)
|
147
|
+
initial_result[list_key].each { |record| yield(record) }
|
139
148
|
sleep(sleep_between_requests) if sleep_between_requests
|
140
149
|
end
|
150
|
+
|
151
|
+
start_page = query_params[:page].to_i + 1
|
152
|
+
start_page.upto(end_page) do |page|
|
153
|
+
query_params[:page] = page
|
154
|
+
result = get(request_uri(uri, query_params))
|
155
|
+
if result[list_key].kind_of?(Array)
|
156
|
+
result[list_key].each { |record| yield(record) }
|
157
|
+
sleep(sleep_between_requests) if sleep_between_requests
|
158
|
+
end
|
159
|
+
end
|
141
160
|
end
|
142
161
|
end
|
143
162
|
end
|
data/love.gemspec
CHANGED
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
|
|
3
3
|
|
4
4
|
# Do not change the version and date fields by hand. This will be done
|
5
5
|
# automatically by the gem release script.
|
6
|
-
s.version = "0.0.
|
6
|
+
s.version = "0.0.4"
|
7
7
|
s.date = "2010-11-29"
|
8
8
|
|
9
9
|
s.summary = "Ruby library to access the Tender REST API."
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: love
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Willem van Bergen
|