sidekiq-compress 0.0.2 → 0.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b4d9769835661bd5651a58174d78d714f712b3b9399bd691bac5d43fc4f46580
4
- data.tar.gz: 150c2f965dd735b7fbac79343ac69497a00b12c098d7e8bf51e116971f90a81d
3
+ metadata.gz: 180a44d5decc2d22318cf71c60c5ac901dcb28fec9c367b57717541b020e55d8
4
+ data.tar.gz: 6f6051e96f54be6212dd8cf9bb71f1518d10e02eb85fc927b50dcfb0a41bb589
5
5
  SHA512:
6
- metadata.gz: a3c1592109bfb48d1f32af96d5628e3090fe403cfde4431f0861e2bb752c8360734c7ef94d857561d8463355c389e8d78dae832766204623819dcbf742bec03f
7
- data.tar.gz: 2b59e2ef7a29c63ac5dd13af7e4fe815b4f84fded50f2564ef67c14a869888385149e800019ad9e4e66e43241d10bf8cf7ab6f5e7357928c8be9ac0f9ed544f8
6
+ metadata.gz: d939824efa350bcae5cd959106726d23969949770f55f3e7f6807acd2fc45f3e96a1e46ada19ed5b3998a60375ea13d4b3210ac78657e2f408f2d86ebd15b3c0
7
+ data.tar.gz: 6ba209c6cd11a6962a5f904d3bd000695b434f927218cadc345df800f2137f17eb541490a8f3dd62685dbaa7532fb10d3560665a5202615890fce7cd569bd2f5
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sidekiq-compress (0.0.2)
4
+ sidekiq-compress (0.0.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,6 +1,7 @@
1
1
  require 'sidekiq-compress/version'
2
2
  require 'sidekiq-compress/client_middleware'
3
3
  require 'sidekiq-compress/server_middleware'
4
+ require 'sidekiq-compress/worker'
4
5
 
5
6
  module Sidekiq::Compress
6
7
  end
@@ -3,31 +3,20 @@ require 'sidekiq-compress/compress_params'
3
3
  module Sidekiq::Compress
4
4
  # Should be in the client middleware chain
5
5
  class ClientMiddleware
6
- # Uses msg['jid'] id and puts :queued status in the job's Redis hash
7
- # @param [Class] worker_class if includes Sidekiq::Status::Worker, the job gets processed with the plugin
8
- # @param [Array] msg job arguments
9
- # @param [String] queue the queue's name
10
- # @param [ConnectionPool] redis_pool optional redis connection pool
11
6
  def call(worker, msg, queue, redis_pool)
12
- # return false/nil to stop the job from going to redis
13
7
  klass = msg["args"][0]["job_class"] || msg["class"] rescue msg["class"]
14
8
  job_class = klass.is_a?(Class) ? klass : Module.const_get(klass)
15
- unless job_class.ancestors.include?(Sidekiq::Compress)
9
+ unless job_class.ancestors.include?(Sidekiq::Compress::Worker)
16
10
  yield
17
11
  return
18
12
  end
19
13
 
20
- msg["args"] = Sidekiq::Compress::CompressParams.call(msg["args"])
21
-
14
+ compress_indexes = job_class.sidekiq_compress_params[0][:index] rescue []
15
+ msg["args"] = Sidekiq::Compres::CompressParams.call(msg["args"], compress_indexes)
22
16
  yield
23
17
  end
24
18
  end
25
19
 
26
- # Helper method to easily configure sidekiq-status client middleware
27
- # whatever the Sidekiq version is.
28
- # @param [Sidekiq] sidekiq_config the Sidekiq config
29
- # @param [Hash] client_middleware_options client middleware initialization options
30
- # @option client_middleware_options [Fixnum] :expiration ttl for complete jobs
31
20
  def self.configure_client_middleware(sidekiq_config)
32
21
  sidekiq_config.client_middleware do |chain|
33
22
  chain.add Sidekiq::Compress::ClientMiddleware
@@ -1,14 +1,23 @@
1
1
  module Sidekiq::Compress
2
2
  class CompressParams
3
- def self.call(params = [])
4
- result = []
5
- params.each do |param|
6
- if param.class == String
7
- param = Base64.encode64(Zstd.compress(param))
8
- end
9
- result << param
3
+ def self.call(params = [], compress_indexes = [])
4
+ compress_indexes.empty? ? compress_all(params) : compress_by_index(params, compress_indexes)
5
+ end
6
+
7
+ private
8
+
9
+ def self.compress_all(params)
10
+ params.map! { |param| param.class == String ? Base64.encode64(Zstd.compress(param)) : param }
11
+ end
12
+
13
+ def self.compress_by_index(params, compress_indexes)
14
+ compress_indexes.each do |index|
15
+ raise "Parameter at index #{index} must be a string!" unless params[index].class == String
16
+
17
+ params[index] = Base64.encode64(Zstd.compress(params[index]))
10
18
  end
11
- result
19
+
20
+ params
12
21
  end
13
22
  end
14
23
  end
@@ -1,14 +1,34 @@
1
1
  module Sidekiq::Compress
2
2
  class DecompressParams
3
- def self.call(params = [])
3
+ def self.call(params = [], decompress_indexes = [])
4
4
  result = []
5
- params.each do |param|
5
+ if decompress_indexes.empty?
6
+ result = decompress_all(params)
7
+ else
8
+ result = decompress_by_index(params, decompress_indexes)
9
+ end
10
+
11
+ result
12
+ end
13
+
14
+ private
15
+
16
+ def self.decompress_all(params)
17
+ params.map! do |param|
6
18
  if param.class == String
7
- param = Zstd.decompress(Base64.decode64(param)).force_encoding('UTF-8')
19
+ Zstd.decompress(Base64.decode64(param)).force_encoding('UTF-8')
20
+ else
21
+ param
8
22
  end
9
- result << param
10
23
  end
11
- result
24
+ end
25
+
26
+ def self.decompress_by_index(params, decompress_indexes)
27
+ decompress_indexes.each do |index|
28
+ params[index] = Zstd.decompress(Base64.decode64(params[index])).force_encoding('UTF-8')
29
+ end
30
+
31
+ params
12
32
  end
13
33
  end
14
34
  end
@@ -6,22 +6,19 @@ module Sidekiq::Compress
6
6
  def call(worker, msg, queue)
7
7
  klass = msg["args"][0]["job_class"] || msg["class"] rescue msg["class"]
8
8
  job_class = klass.is_a?(Class) ? klass : Module.const_get(klass)
9
- unless job_class.ancestors.include?(Sidekiq::Compress)
9
+ unless job_class.ancestors.include?(Sidekiq::Compress::Worker)
10
10
  yield
11
11
  return
12
12
  end
13
13
 
14
- msg["args"] = Sidekiq::Compress::DecompressParams.call(msg["args"])
14
+ decompress_indexes = job_class.sidekiq_compress_params[0][:index]
15
+
16
+ msg["args"] = Sidekiq::Compress::DecompressParams.call(msg["args"], decompress_indexes)
15
17
 
16
18
  yield
17
19
  end
18
20
  end
19
21
 
20
- # Helper method to easily configure sidekiq-status server middleware
21
- # whatever the Sidekiq version is.
22
- # @param [Sidekiq] sidekiq_config the Sidekiq config
23
- # @param [Hash] server_middleware_options server middleware initialization options
24
- # @option server_middleware_options [Fixnum] :expiration ttl for complete jobs
25
22
  def self.configure_server_middleware(sidekiq_config)
26
23
  sidekiq_config.server_middleware do |chain|
27
24
  chain.add Sidekiq::Compress::ServerMiddleware
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Compress
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sidekiq::Compress
4
+ module Worker
5
+ def self.included(base)
6
+ base.extend(ClassMethods)
7
+ end
8
+
9
+ module ClassMethods
10
+ attr_reader :sidekiq_compress_params
11
+
12
+ def compress_params(*params)
13
+ @sidekiq_compress_params = params
14
+ end
15
+ end
16
+ end
17
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-compress
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oğuzhan Göller
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-14 00:00:00.000000000 Z
11
+ date: 2020-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -75,6 +75,7 @@ files:
75
75
  - lib/sidekiq-compress/decompress_params.rb
76
76
  - lib/sidekiq-compress/server_middleware.rb
77
77
  - lib/sidekiq-compress/version.rb
78
+ - lib/sidekiq-compress/worker.rb
78
79
  - sidekiq-compress.gemspec
79
80
  homepage: https://github.com/oguzhangoller/sidekiq-compress
80
81
  licenses: