diff --git a/app/jobs/govbox/authorize_delivery_notification_job.rb b/app/jobs/govbox/authorize_delivery_notification_job.rb index 9c25802bf..86f8ca17a 100644 --- a/app/jobs/govbox/authorize_delivery_notification_job.rb +++ b/app/jobs/govbox/authorize_delivery_notification_job.rb @@ -2,20 +2,22 @@ class Govbox::AuthorizeDeliveryNotificationJob < ApplicationJob def perform(message, upvs_client: UpvsEnvironment.upvs_client) edesk_api = upvs_client.api(message.thread.box).edesk - success = edesk_api.authorize_delivery_notification(message.metadata["delivery_notification"]["authorize_url"]) + success, target_message_id = edesk_api.authorize_delivery_notification(message.metadata["delivery_notification"]["authorize_url"], mode: :sync) - unless success + if success + message.metadata["authorized"] = true + message.save! + else message.metadata["authorized"] = nil message.save! - Govbox::Message.add_delivery_notification_tag(message) - raise StandardError, "Delivery notification authorization failed!" end - message.metadata["authorized"] = true - message.save! + raise StandardError, "Target message download failed" unless target_message_id - Govbox::SyncBoxJob.set(wait: 3.minutes).perform_later(message.thread.box) + # folder is not available in UPVS get_message response, therefore we're using corresponding inbox as target folder + folder = Govbox::Folder.where(box: message.thread.box, name: "Inbox", system: true).first + Govbox::DownloadMessageJob.perform_later(folder, target_message_id) end end diff --git a/app/jobs/govbox/sync_folder_job.rb b/app/jobs/govbox/sync_folder_job.rb index 5e0515411..461ac4c9f 100644 --- a/app/jobs/govbox/sync_folder_job.rb +++ b/app/jobs/govbox/sync_folder_job.rb @@ -26,7 +26,7 @@ def perform(folder, upvs_client: UpvsEnvironment.upvs_client, batch_size: 1000) end if moved_edesk_message_ids.any? - # TODO change tag + # TODO: change tag Govbox::Message.where(edesk_message_id: moved_edesk_message_ids).update_all(folder_id: folder.id) end diff --git a/app/lib/upvs/govbox_api.rb b/app/lib/upvs/govbox_api.rb index ccef0d0ac..cc12441a8 100644 --- a/app/lib/upvs/govbox_api.rb +++ b/app/lib/upvs/govbox_api.rb @@ -12,7 +12,7 @@ def initialize(url, box:, handler: Faraday) @edesk = Edesk.new(self) @sktalk = SkTalk.new(self) @handler = handler - @handler.options.timeout = 900000 + @handler.options.timeout = 900_000 end class Edesk < Namespace @@ -28,16 +28,17 @@ def fetch_message(message_id) @api.request(:get, "#{@api.url}/api/edesk/messages/#{message_id}", {}, header) end - def authorize_delivery_notification(authorization_url) - response_status, response_body = @api.request(:post, authorization_url, {}, header) - authorization_successful?(response_status, response_body['code']) + def authorize_delivery_notification(authorization_url, mode: :async) + params = (mode == :sync ? { async: false } : {}) + response_status, response_body = @api.request(:post, authorization_url, params, header) + [authorization_successful?(response_status, response_body['code']), response_body['message_id']] end private def header { - "Authorization": authorization_payload, + "Authorization": authorization_payload } end