- # frozen_string_literal: true
-
- class Api::SalmonController < Api::BaseController
- include SignatureVerification
-
- before_action :set_account
- respond_to :txt
-
- def update
- if verify_payload?
- process_salmon
- head 202
- elsif payload.present?
- render plain: signature_verification_failure_reason, status: 401
- else
- head 400
- end
- end
-
- private
-
- def set_account
- @account = Account.find(params[:id])
- end
-
- def payload
- @_payload ||= request.body.read
- end
-
- def verify_payload?
- payload.present? && VerifySalmonService.new.call(payload)
- end
-
- def process_salmon
- SalmonWorker.perform_async(@account.id, payload.force_encoding('UTF-8'))
- end
- end
|