Files
old-holivud2/app/controllers/notifications_controller.rb
2020-05-31 22:38:19 +02:00

63 lines
1.3 KiB
Ruby

class NotificationsController < ApplicationController
skip_before_action :require_login
skip_after_action :verify_authorized, except: :index
skip_after_action :verify_policy_scoped, only: :index
skip_before_action :verify_authenticity_token
def create
case notification_type
when "SubscriptionConfirmation"
Rails.logger.info(subscribe_url)
when "Notification"
case job_status
when "SUCCEEDED" then analysis_notification.success!
when "FAILED" then analysis_notification.failure!
else
Rails.logger.alert "Notification with status #{job_status}\n#{notification}"
end
else
Rails.logger.alert "Notification with type #{notification_type}\n#{notification}"
end
head :ok
end
private
# TODO: Verify the message
def notification
@notification ||= JSON.parse(request.raw_post)
end
def notification_type
notification.fetch("Type")
end
def subscribe_url
notification.fetch("SubscribeURL")
end
def message
@message ||= JSON.parse(notification.fetch("Message"))
end
def job_id
message.fetch("JobId")
end
def job_status
message.fetch("Status")
end
def analysis_type
message.fetch("AnalysisType")
end
def analysis_notification
@analysis_notification ||= AnalysisNotification.build(analysis_type, job_id)
end
end