diff --git a/app/controllers/api/submitter_form_views_controller.rb b/app/controllers/api/submitter_form_views_controller.rb index ae0d00fd..b5ac5440 100644 --- a/app/controllers/api/submitter_form_views_controller.rb +++ b/app/controllers/api/submitter_form_views_controller.rb @@ -9,6 +9,8 @@ module Api SubmissionEvents.create_with_tracking_data(submitter, 'view_form', request) + SendFormViewedWebhookRequestJob.perform_later(submitter) + render json: {} end end diff --git a/app/controllers/webhook_settings_controller.rb b/app/controllers/webhook_settings_controller.rb index 4d0cc119..cb36d44d 100644 --- a/app/controllers/webhook_settings_controller.rb +++ b/app/controllers/webhook_settings_controller.rb @@ -18,7 +18,7 @@ class WebhookSettingsController < ApplicationController def update submitter = current_account.submitters.where.not(completed_at: nil).order(:id).last - SendWebhookRequestJob.perform_later(submitter) + SendFormCompletedWebhookRequestJob.perform_later(submitter) redirect_back(fallback_location: settings_webhooks_path, notice: 'Webhook request has been sent.') end diff --git a/app/jobs/process_submitter_completion_job.rb b/app/jobs/process_submitter_completion_job.rb index 513f2a6a..3f3da35c 100644 --- a/app/jobs/process_submitter_completion_job.rb +++ b/app/jobs/process_submitter_completion_job.rb @@ -11,7 +11,7 @@ class ProcessSubmitterCompletionJob < ApplicationJob Submissions::EnsureResultGenerated.call(submitter) if submitter.account.encrypted_configs.exists?(key: EncryptedConfig::WEBHOOK_URL_KEY) - SendWebhookRequestJob.perform_later(submitter) + SendFormCompletedWebhookRequestJob.perform_later(submitter) end return unless is_all_completed diff --git a/app/jobs/send_webhook_request_job.rb b/app/jobs/send_form_completed_webhook_request_job.rb similarity index 86% rename from app/jobs/send_webhook_request_job.rb rename to app/jobs/send_form_completed_webhook_request_job.rb index 0ca7c919..aebac6e3 100644 --- a/app/jobs/send_webhook_request_job.rb +++ b/app/jobs/send_form_completed_webhook_request_job.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class SendWebhookRequestJob < ApplicationJob +class SendFormCompletedWebhookRequestJob < ApplicationJob USER_AGENT = 'DocuSeal.co Webhook' def perform(submitter) @@ -14,7 +14,7 @@ class SendWebhookRequestJob < ApplicationJob Faraday.post(config.value, { - event_type: 'form.submitted', + event_type: 'form.completed', timestamp: Time.current.iso8601, data: Submitters::SerializeForWebhook.call(submitter) }.to_json, diff --git a/app/jobs/send_form_started_webhook_request_job.rb b/app/jobs/send_form_started_webhook_request_job.rb new file mode 100644 index 00000000..251e5b35 --- /dev/null +++ b/app/jobs/send_form_started_webhook_request_job.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class SendFormStartedWebhookRequestJob < ApplicationJob + USER_AGENT = 'DocuSeal.co Webhook' + + def perform(submitter) + config = submitter.submission.account.encrypted_configs.find_by(key: EncryptedConfig::WEBHOOK_URL_KEY) + + return if config.blank? || config.value.blank? + + ActiveStorage::Current.url_options = Docuseal.default_url_options + + Faraday.post(config.value, + { + event_type: 'form.started', + timestamp: Time.current.iso8601, + data: Submitters::SerializeForWebhook.call(submitter) + }.to_json, + 'Content-Type' => 'application/json', + 'User-Agent' => USER_AGENT) + end +end diff --git a/app/jobs/send_form_viewed_webhook_request_job.rb b/app/jobs/send_form_viewed_webhook_request_job.rb new file mode 100644 index 00000000..d28f240b --- /dev/null +++ b/app/jobs/send_form_viewed_webhook_request_job.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class SendFormViewedWebhookRequestJob < ApplicationJob + USER_AGENT = 'DocuSeal.co Webhook' + + def perform(submitter) + config = submitter.submission.account.encrypted_configs.find_by(key: EncryptedConfig::WEBHOOK_URL_KEY) + + return if config.blank? || config.value.blank? + + ActiveStorage::Current.url_options = Docuseal.default_url_options + + Faraday.post(config.value, + { + event_type: 'form.viewed', + timestamp: Time.current.iso8601, + data: Submitters::SerializeForWebhook.call(submitter) + }.to_json, + 'Content-Type' => 'application/json', + 'User-Agent' => USER_AGENT) + end +end diff --git a/app/views/webhook_settings/show.html.erb b/app/views/webhook_settings/show.html.erb index ad13c08c..e7d43935 100644 --- a/app/views/webhook_settings/show.html.erb +++ b/app/views/webhook_settings/show.html.erb @@ -30,7 +30,7 @@
<%= code %>