Skip to content

Commit

Permalink
Refactor based on PR review
Browse files Browse the repository at this point in the history
  • Loading branch information
stage-rl committed Dec 7, 2023
1 parent 84c56c6 commit b1497bd
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 24 deletions.
27 changes: 10 additions & 17 deletions app/jobs/govbox/authorize_delivery_notification_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,19 @@ def perform(message, upvs_client: UpvsEnvironment.upvs_client)

success, target_message_id = edesk_api.authorize_delivery_notification(message.metadata["delivery_notification"]["authorize_url"], mode: :sync)

handle_failed_authorization unless success

message.metadata["authorized"] = true
message.save!
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

raise StandardError, "Target message download failed" unless target_message_id
raise StandardError, "Target message download failed" unless run_download_job(message, target_message_id)
end

def handle_failed_authorization
message.metadata["authorized"] = nil
message.save!

Govbox::Message.add_delivery_notification_tag(message)

raise StandardError, "Delivery notification authorization failed!"
Govbox::DownloadMessageJob.perform_later(box: message.thread.box, target_message_id)
end

def run_download_job(message, message_id)
folder = message.thread.box.folders.select(&:inbox?).first
Govbox::DownloadMessageJob.perform_later(folder, message_id)
end
end
23 changes: 18 additions & 5 deletions app/jobs/govbox/download_message_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,27 @@ module Govbox
class DownloadMessageJob < ApplicationJob
queue_as :default

def perform(govbox_folder, edesk_message_id, upvs_client: UpvsEnvironment.upvs_client)
edesk_api = upvs_client.api(govbox_folder.box).edesk
response_status, raw_message = edesk_api.fetch_message(edesk_message_id)
def perform(edesk_message_id:, govbox_folder: nil, box: nil, upvs_client: UpvsEnvironment.upvs_client)
setup_folder_and_box(box, govbox_folder)

response_status, raw_message = upvs_client.api(@box).edesk.fetch_message(edesk_message_id)

raise "Unable to fetch folder messages" if response_status != 200

govbox_message = govbox_folder.messages.create!(
process_govbox_message(raw_message)
end

def setup_folder_and_box(box, govbox_folder)
raise "Folder or Box must be specified" unless govbox_folder || box

@box = box || govbox_folder.box
@govbox_folder = govbox_folder || Govbox::Folder.where(box: box, name: 'Inbox')

raise "Folder must match specified box" unless @govbox_folder.box == box
end

def process_govbox_message(raw_message)
govbox_message = @govbox_folder.messages.create!(
edesk_message_id: raw_message["id"],
message_id: raw_message["message_id"],
correlation_id: raw_message["correlation_id"],
Expand All @@ -17,7 +31,6 @@ def perform(govbox_folder, edesk_message_id, upvs_client: UpvsEnvironment.upvs_c
body: raw_message["original_xml"],
payload: raw_message
)

ProcessMessageJob.perform_later(govbox_message)
end
end
Expand Down
2 changes: 1 addition & 1 deletion app/jobs/govbox/sync_folder_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def perform(folder, upvs_client: UpvsEnvironment.upvs_client, batch_size: 1000)
end

new_messages_ids.each do |edesk_message_id|
DownloadMessageJob.perform_later(folder, edesk_message_id)
DownloadMessageJob.perform_later(govbox_folder: folder, edesk_message_id)
end
end
end
Expand Down
1 change: 0 additions & 1 deletion app/models/box.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ class Box < ApplicationRecord
belongs_to :tenant
belongs_to :api_connection

has_many :folders, class_name: "Govbox::Folder"
has_many :message_threads, extend: MessageThreadsExtensions, dependent: :destroy
has_many :messages, through: :message_threads
has_many :message_drafts_imports, dependent: :destroy
Expand Down

0 comments on commit b1497bd

Please sign in to comment.