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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rest-scrapyd.rb +13 -5
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5a432b7b410654bb0c2b236d10b38f9f897e4961
4
- data.tar.gz: 6a4ffb540f02a85f136b642157f04462ee79c4fb
3
+ metadata.gz: c3d5781f0a6f053ff042d5e6847b1e1c1ddd13b8
4
+ data.tar.gz: 598b7f96d881d5d3bf1ad801fe0eae6490eca04d
5
5
  SHA512:
6
- metadata.gz: 47838ab472ed6cff33d4be2586dfaa90b2fa354c2e009c4753ec2bc26d39c047bf92bb0d2af1552e6e1f47b699f5071e561179b6c801dbfb3f901256b9e2aff0
7
- data.tar.gz: 8e342c482a30ff15aa14cea0137ab17120b94c8fd1308c3c65400d1490247db6b850a82d2478e7064cd4e1d25a02563f97db4f3d1556bb5600a565ec74b28272
6
+ metadata.gz: 78ab7ae366c148834c72cb57b2b1c39384189ae205ca5679b071010363672a59288f86dd0df7da7535b742f8cb92de363841f884098461a11410cbb7c5f00be1
7
+ data.tar.gz: 10f2860676973107cb76788826d8eb508c4a8f617982f99f846e2ee87b02faa9a6432c9e36da61b0c6dc13b24b51cc94b857ced10f83218ac1689d32cae6edfb
@@ -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
- # @option settings [String] :project ({self.project}) Project name
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
- settings = {project: self.project, spider: spider}.merge(settings)
52
- post('schedule.json', settings)['jobid']
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-scrapyd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - wvengen