publishing_platform_sidekiq 0.3.0 → 0.4.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 136a31161907be3c379bd2eb113953524904733a0483349a4f20cd7cbed85e01
|
4
|
+
data.tar.gz: 05335effa99619570ad4566fddc96cfb2d991104cd6bda2ba6ad96d86283b241
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97dc0696f8fb84b740f8f4ac861e324d1a9dc685c722378b207e53e7bf82a54cbb35a5a74251d59cd5fb7d3ed9595db60c2c5f050088d5a6566d878016c34dc7
|
7
|
+
data.tar.gz: e7238f347a080e864e2eca13f1de876ecc123aad92cf3ca92aaaa601fb1c921380c2207864350a8ff5a0c4666f80bde65273cf45df7755fb70cb0b43ffb5aab9
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "publishing_platform_api/publishing_platform_headers"
|
2
|
+
require "sidekiq"
|
3
|
+
|
4
|
+
module PublishingPlatformSidekiq
|
5
|
+
module APIHeaders
|
6
|
+
# Client-side middleware runs before the pushing of the job to Redis and
|
7
|
+
# allows you to modify/stop the job before it gets pushed.
|
8
|
+
#
|
9
|
+
# https://github.com/mperham/sidekiq/wiki/Middleware#client-side-middleware
|
10
|
+
class ClientMiddleware
|
11
|
+
def call(_worker_class, job, _queue, _redis_pool)
|
12
|
+
last_arg = job["args"].last
|
13
|
+
if is_header_hash(last_arg)
|
14
|
+
job["args"].pop
|
15
|
+
job["args"] << header_arguments.merge(last_arg)
|
16
|
+
else
|
17
|
+
job["args"] << header_arguments
|
18
|
+
end
|
19
|
+
yield
|
20
|
+
end
|
21
|
+
|
22
|
+
def header_arguments
|
23
|
+
{
|
24
|
+
"authenticated_user" => PublishingPlatformApi::PublishingPlatformHeaders.headers[:x_publishing_platform_authenticated_user],
|
25
|
+
"request_id" => PublishingPlatformApi::PublishingPlatformHeaders.headers[:publishing_platform_request_id],
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
def is_header_hash(arg)
|
30
|
+
arg.is_a?(Hash) && (arg.symbolize_keys.keys.include?(:authenticated_user) || arg.symbolize_keys.keys.include?(:request_id))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Server-side middleware runs 'around' job processing.
|
35
|
+
#
|
36
|
+
# https://github.com/mperham/sidekiq/wiki/Middleware#server-side-middleware
|
37
|
+
class ServerMiddleware
|
38
|
+
def call(_worker, message, _queue)
|
39
|
+
last_arg = message["args"].last
|
40
|
+
|
41
|
+
if last_arg.is_a?(Hash) && last_arg.keys.include?("request_id")
|
42
|
+
message["args"].pop
|
43
|
+
request_id = last_arg["request_id"]
|
44
|
+
authenticated_user = last_arg["authenticated_user"]
|
45
|
+
PublishingPlatformApi::PublishingPlatformHeaders.set_header(:publishing_platform_request_id, request_id)
|
46
|
+
PublishingPlatformApi::PublishingPlatformHeaders.set_header(:x_publishing_platform_authenticated_user, authenticated_user)
|
47
|
+
Sidekiq::Context.add("publishing_platform_request_id", request_id)
|
48
|
+
end
|
49
|
+
|
50
|
+
yield
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "sidekiq"
|
2
|
+
require "publishing_platform_sidekiq/api_headers"
|
2
3
|
|
3
4
|
module PublishingPlatformSidekiq
|
4
5
|
module SidekiqInitializer
|
@@ -8,10 +9,18 @@ module PublishingPlatformSidekiq
|
|
8
9
|
Sidekiq.configure_server do |config|
|
9
10
|
config.logger = Sidekiq::Logger.new($stdout)
|
10
11
|
config.redis = redis_config
|
12
|
+
|
13
|
+
config.server_middleware do |chain|
|
14
|
+
chain.add PublishingPlatformSidekiq::APIHeaders::ServerMiddleware
|
15
|
+
end
|
11
16
|
end
|
12
17
|
|
13
18
|
Sidekiq.configure_client do |config|
|
14
19
|
config.redis = redis_config
|
20
|
+
|
21
|
+
config.client_middleware do |chain|
|
22
|
+
chain.add PublishingPlatformSidekiq::APIHeaders::ClientMiddleware
|
23
|
+
end
|
15
24
|
end
|
16
25
|
end
|
17
26
|
end
|
metadata
CHANGED
@@ -1,15 +1,28 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: publishing_platform_sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Publishing Platform
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-02-28 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: publishing_platform_api_adapters
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - ">="
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '0'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0'
|
13
26
|
- !ruby/object:Gem::Dependency
|
14
27
|
name: redis-client
|
15
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,8 +113,6 @@ dependencies:
|
|
100
113
|
- - ">="
|
101
114
|
- !ruby/object:Gem::Version
|
102
115
|
version: '0'
|
103
|
-
description:
|
104
|
-
email:
|
105
116
|
executables: []
|
106
117
|
extensions: []
|
107
118
|
extra_rdoc_files: []
|
@@ -109,14 +120,14 @@ files:
|
|
109
120
|
- LICENSE
|
110
121
|
- README.md
|
111
122
|
- lib/publishing_platform_sidekiq.rb
|
123
|
+
- lib/publishing_platform_sidekiq/api_headers.rb
|
112
124
|
- lib/publishing_platform_sidekiq/railtie.rb
|
113
125
|
- lib/publishing_platform_sidekiq/sidekiq_initializer.rb
|
126
|
+
- lib/publishing_platform_sidekiq/testing.rb
|
114
127
|
- lib/publishing_platform_sidekiq/version.rb
|
115
|
-
homepage:
|
116
128
|
licenses:
|
117
129
|
- MIT
|
118
130
|
metadata: {}
|
119
|
-
post_install_message:
|
120
131
|
rdoc_options: []
|
121
132
|
require_paths:
|
122
133
|
- lib
|
@@ -131,8 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
142
|
- !ruby/object:Gem::Version
|
132
143
|
version: '0'
|
133
144
|
requirements: []
|
134
|
-
rubygems_version: 3.5
|
135
|
-
signing_key:
|
145
|
+
rubygems_version: 3.6.5
|
136
146
|
specification_version: 4
|
137
147
|
summary: Provides standard setup and behaviour for Sidekiq in Publishing Platform
|
138
148
|
applications.
|