diff options
Diffstat (limited to 'app/workers/jira_connect/forward_event_worker.rb')
-rw-r--r-- | app/workers/jira_connect/forward_event_worker.rb | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/app/workers/jira_connect/forward_event_worker.rb b/app/workers/jira_connect/forward_event_worker.rb index 877ab46cfe5..14922db5420 100644 --- a/app/workers/jira_connect/forward_event_worker.rb +++ b/app/workers/jira_connect/forward_event_worker.rb @@ -4,22 +4,26 @@ module JiraConnect class ForwardEventWorker # rubocop:disable Scalability/IdempotentWorker include ApplicationWorker + data_consistency :always queue_namespace :jira_connect feature_category :integrations + urgency :low + worker_has_external_dependencies! def perform(installation_id, base_path, event_path) installation = JiraConnectInstallation.find_by_id(installation_id) + instance_url = installation&.instance_url + + installation.destroy if installation - return if installation&.instance_url.nil? + return if instance_url.nil? - proxy_url = installation.instance_url + event_path - qsh = Atlassian::Jwt.create_query_string_hash(proxy_url, 'POST', installation.instance_url + base_path) + proxy_url = instance_url + event_path + qsh = Atlassian::Jwt.create_query_string_hash(proxy_url, 'POST', instance_url + base_path) jwt = Atlassian::Jwt.encode({ iss: installation.client_key, qsh: qsh }, installation.shared_secret) - Gitlab::HTTP.post(proxy_url, headers: { 'Authorization' => "JWT #{jwt}" }) - ensure - installation.destroy if installation + JiraConnect::RetryRequestWorker.perform_async(proxy_url, jwt) end end end |