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: c0f0b8805ff06239792680fed2039e9e422947dc0320bce9a9c47d5153249ca9
4
- data.tar.gz: 55a2e057e55db83c8b510346945fb3e66a8d8ebbfd48b8eab617ce1bd92d61b9
3
+ metadata.gz: 136a31161907be3c379bd2eb113953524904733a0483349a4f20cd7cbed85e01
4
+ data.tar.gz: 05335effa99619570ad4566fddc96cfb2d991104cd6bda2ba6ad96d86283b241
5
5
  SHA512:
6
- metadata.gz: '078261a68848852b95ea680113321ea49e9f14e38a5826fe5ce01b8d3e84247289dcb87c60cae7a5024ef87e63b66fb97352ef81d3fae460f9b2870935fbddc9'
7
- data.tar.gz: 3c9bd8eee2c0c8250304ffb825b082b64d81e00297ebc53c53b67eff2c3eecc596ae7da96df48ee57ef37814ba4cb25c0af8605c5aad1e74571f67a3754bcb71
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
@@ -0,0 +1,6 @@
1
+ require "sidekiq/testing"
2
+ require "publishing_platform_sidekiq/api_headers"
3
+
4
+ Sidekiq::Testing.server_middleware do |chain|
5
+ chain.add PublishingPlatformSidekiq::APIHeaders::ServerMiddleware
6
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PublishingPlatformSidekiq
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  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.3.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: 2024-11-29 00:00:00.000000000 Z
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.23
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.