bulk-processor 0.5.0 → 0.5.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 90877b508066f5c70c78f247b6b29a3110c87c3c
4
- data.tar.gz: ab09632f364999e0138f781b86341b5f87333bd3
3
+ metadata.gz: 5938f4133413fe9183607008301eda98d5961a3a
4
+ data.tar.gz: 60f3090d882a96290250a59ccce5d1ff7bd49139
5
5
  SHA512:
6
- metadata.gz: 101c55e1a96ced37167a87dd8b4f2d8933e4b19461e43331d77534c53d52ce199a438155701395f1d0b628b8857057d36bcf4f3b5966b522e9283361670d2c7c
7
- data.tar.gz: bfd29f4c4a09c8ee2fcbeeb73e00891557eabcd0cc1f0ac8c3f9e08b8bf5745a58b6133d223cc843c4995ae86b34f5d9ac0edba9dcea999924fa809184ad6d79
6
+ metadata.gz: 5541b7a3bc23bccd4842fbf7a5439ac40d06a0497ac6cf033368546c59b72f0d7e3d637e6e063597ad726d3ea48928fdbf6631e6d7d647719469336afcfed1cd
7
+ data.tar.gz: 1538237aafa5c71cb1c8a04f64eb0b921dae8aa4153235ba8386fd01e4a43478c9a7074b7ffc12eb656ef4cd1a1916dbc11b531a55c1c463e87e616c52f27489
@@ -24,6 +24,7 @@ success or failure report
24
24
  spec.add_runtime_dependency 'activejob', '~> 4'
25
25
  spec.add_runtime_dependency 'aws-sdk', '~> 2.1'
26
26
  spec.add_runtime_dependency 'dynosaur', '~> 0.2.1'
27
+ spec.add_runtime_dependency 'rack', '~> 1.5'
27
28
 
28
29
  spec.add_development_dependency 'bundler'
29
30
  spec.add_development_dependency 'pry-byebug', '~> 3'
@@ -9,7 +9,12 @@ class BulkProcessor
9
9
  end
10
10
 
11
11
  def start
12
- Job.perform_later(processor_class.name, payload.to_json, file_class.name, key)
12
+ Job.perform_later(
13
+ processor_class.name,
14
+ PayloadSerializer.serialize(payload),
15
+ file_class.name,
16
+ key
17
+ )
13
18
  end
14
19
 
15
20
  private
@@ -14,7 +14,12 @@ class BulkProcessor
14
14
  def start
15
15
  args = {
16
16
  task: 'bulk_processor:start',
17
- args: [processor_class.name, payload.to_json, file_class.name, key]
17
+ args: [
18
+ processor_class.name,
19
+ PayloadSerializer.serialize(payload),
20
+ file_class.name,
21
+ key
22
+ ]
18
23
  }
19
24
  ::Dynosaur::Process::Heroku.new(args).start
20
25
  end
@@ -7,7 +7,7 @@ class BulkProcessor
7
7
 
8
8
  def perform(processor_class, payload, file_class, key)
9
9
  file = file_class.constantize.new(key)
10
- payload = payload.nil? ? nil : JSON.parse(payload)
10
+ payload = PayloadSerializer.deserialize(payload)
11
11
  file.open do |f|
12
12
  csv = CSV.parse(f.read, headers: true)
13
13
  processor = processor_class.constantize.new(csv, payload: payload)
@@ -0,0 +1,25 @@
1
+ require 'rack'
2
+ require 'uri'
3
+
4
+ class BulkProcessor
5
+ # The payload must be serialized to be command line friendly (since Dynosaur
6
+ # runs a rake task with command-line args)
7
+ module PayloadSerializer
8
+ class << self
9
+ # @param payload [Hash] the client payload to be passed into the processing
10
+ # job and ultimately the handler
11
+ # @return [String] a serialized version of the string that can be passed
12
+ # to any of the back-ends
13
+ def serialize(payload)
14
+ URI.encode_www_form(payload)
15
+ end
16
+
17
+ # @param payload [String] a serialized version of the payload
18
+ # @return [Hash] the original Hash payload (with all keys and values
19
+ # stringified)
20
+ def deserialize(string)
21
+ Rack::Utils.parse_nested_query(string)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  class BulkProcessor
2
- VERSION = '0.5.0'.freeze
2
+ VERSION = '0.5.1'.freeze
3
3
  end
@@ -3,6 +3,7 @@ require 'bulk_processor/back_end/active_job'
3
3
  require 'bulk_processor/back_end/dynosaur'
4
4
  require 'bulk_processor/config'
5
5
  require 'bulk_processor/job'
6
+ require 'bulk_processor/payload_serializer'
6
7
  require 'bulk_processor/s3_file'
7
8
  require 'bulk_processor/stream_encoder'
8
9
  require 'bulk_processor/validated_csv'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bulk-processor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Collier, Justin Richard
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.2.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: rack
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.5'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.5'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -139,6 +153,7 @@ files:
139
153
  - lib/bulk_processor/csv_processor/result.rb
140
154
  - lib/bulk_processor/csv_processor/row_processor.rb
141
155
  - lib/bulk_processor/job.rb
156
+ - lib/bulk_processor/payload_serializer.rb
142
157
  - lib/bulk_processor/s3_file.rb
143
158
  - lib/bulk_processor/stream_encoder.rb
144
159
  - lib/bulk_processor/tasks.rb