rest-scrapyd 0.1.2 → 0.1.3

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.
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