Initial commit
This commit is contained in:
62
app/controllers/notifications_controller.rb
Normal file
62
app/controllers/notifications_controller.rb
Normal file
@@ -0,0 +1,62 @@
|
||||
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
|
||||
Reference in New Issue
Block a user