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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/sidekiq-compress.rb +1 -0
- data/lib/sidekiq-compress/client_middleware.rb +3 -14
- data/lib/sidekiq-compress/compress_params.rb +17 -8
- data/lib/sidekiq-compress/decompress_params.rb +25 -5
- data/lib/sidekiq-compress/server_middleware.rb +4 -7
- data/lib/sidekiq-compress/version.rb +1 -1
- data/lib/sidekiq-compress/worker.rb +17 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 180a44d5decc2d22318cf71c60c5ac901dcb28fec9c367b57717541b020e55d8
|
4
|
+
data.tar.gz: 6f6051e96f54be6212dd8cf9bb71f1518d10e02eb85fc927b50dcfb0a41bb589
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d939824efa350bcae5cd959106726d23969949770f55f3e7f6807acd2fc45f3e96a1e46ada19ed5b3998a60375ea13d4b3210ac78657e2f408f2d86ebd15b3c0
|
7
|
+
data.tar.gz: 6ba209c6cd11a6962a5f904d3bd000695b434f927218cadc345df800f2137f17eb541490a8f3dd62685dbaa7532fb10d3560665a5202615890fce7cd569bd2f5
|
data/Gemfile.lock
CHANGED
data/lib/sidekiq-compress.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
19
|
+
Zstd.decompress(Base64.decode64(param)).force_encoding('UTF-8')
|
20
|
+
else
|
21
|
+
param
|
8
22
|
end
|
9
|
-
result << param
|
10
23
|
end
|
11
|
-
|
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
|
-
|
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
|
@@ -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.
|
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-
|
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:
|