rest-scrapyd 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rest-scrapyd.rb +13 -5
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3d5781f0a6f053ff042d5e6847b1e1c1ddd13b8
|
4
|
+
data.tar.gz: 598b7f96d881d5d3bf1ad801fe0eae6490eca04d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78ab7ae366c148834c72cb57b2b1c39384189ae205ca5679b071010363672a59288f86dd0df7da7535b742f8cb92de363841f884098461a11410cbb7c5f00be1
|
7
|
+
data.tar.gz: 10f2860676973107cb76788826d8eb508c4a8f617982f99f846e2ee87b02faa9a6432c9e36da61b0c6dc13b24b51cc94b857ced10f83218ac1689d32cae6edfb
|
data/lib/rest-scrapyd.rb
CHANGED
@@ -12,7 +12,7 @@ RestScrapyd = RC::Builder.client do
|
|
12
12
|
|
13
13
|
use RC::CommonLogger , nil
|
14
14
|
use RC::ErrorHandler , lambda {|env| RuntimeError.new(env[RC::RESPONSE_BODY]['message']) }
|
15
|
-
use RC::ErrorDetector , lambda {|env| env[RC::RESPONSE_BODY]['status'] != 'ok'}
|
15
|
+
use RC::ErrorDetector , lambda {|env| env[RC::RESPONSE_BODY]['status'] != 'ok' rescue false }
|
16
16
|
use RC::ErrorDetectorHttp
|
17
17
|
use RC::JsonResponse , true
|
18
18
|
use RC::Cache , nil, 600
|
@@ -44,12 +44,20 @@ class RestScrapyd
|
|
44
44
|
# @param spider [String] Spider name
|
45
45
|
# @param version [String] Project version
|
46
46
|
# @param settings [Hash<String, String>] Additional Scrapy settings
|
47
|
-
# @
|
47
|
+
# @param arguments [Hash<String, String>] Additional spider arguments
|
48
|
+
# @option arguments [String] :project ({self.project}) Project name
|
48
49
|
# @return [String] Job id
|
49
50
|
# @see http://scrapyd.readthedocs.org/en/latest/api.html#schedule-json
|
50
|
-
def schedule(spider, version, settings={})
|
51
|
-
|
52
|
-
|
51
|
+
def schedule(spider, version, settings={}, arguments={})
|
52
|
+
# +setting+ may appear multiple times, so can't use hash
|
53
|
+
params = {project: self.project, spider: spider}.to_a
|
54
|
+
params += settings.to_a.map{|k,v| ["setting", "#{k}=#{v}"]}
|
55
|
+
params += arguments.to_a
|
56
|
+
# rest-core doesn't (yet) support array payload, encode ourselves
|
57
|
+
params.map{|p| p[0] = p[0].to_s} # like stringify_keys
|
58
|
+
params = RestCore::Middleware.percent_encode(params)
|
59
|
+
s_headers = headers.merge({'Content-Type' => 'application/x-www-form-urlencoded'})
|
60
|
+
post('schedule.json', params, {}, headers: s_headers)['jobid']
|
53
61
|
end
|
54
62
|
|
55
63
|
# Cancel a scheduled or running job
|