docbrown/app/controllers/video_states_controller.rb
Abraham Williams 9cb40e546b Enables Rails cops (#2186)
* Enable Rails cops

* Fix Rails/DynamicFindBy

* Fix Rails/HttpStatus

* Fix Rails/Blank

* Fix Rails/RequestReferer

* Fix Rails/ActiveRecordAliases

* Fix Rails/FindBy

* Fix Rails/Presence

* Fix Rails/Delegate

* Fix Rails/Validation

* Fix Rails/PluralizationGrammar

* Fix Rails/Present

* Fix Rails/Output

* Fix Rails/Blank

* Fix Rails/FilePath

* Fix Rails/InverseOf

* Fix Rails/LexicallyScopedActionFilter

* Add Rails/OutputSafety to TODO

* Add Rails/HasManyOrHasOneDependent to TODO

* Add Rails/SkipsModelValidations to TODO
2019-03-25 09:25:55 -04:00

31 lines
1.1 KiB
Ruby

class VideoStatesController < ApplicationController
skip_before_action :verify_authenticity_token
# Not authorized using pundit because user this is not accessed via user session
# This is purely for responding to AWS video state changes.
def create
unless valid_user
render json: { message: "invalid_user" }, status: 422
return
end
begin
logger.info "VIDEO STATES: #{params}"
request_json = JSON.parse(request.raw_post, symbolize_names: true)
logger.info "VIDEO STATES: #{request_json}"
rescue StandardError => e
Rails.logger.warn(e)
end
request_json = JSON.parse(request.raw_post, symbolize_names: true)
message_json = JSON.parse(request_json[:Message], symbolize_names: true)
@article = Article.find_by(video_code: message_json[:input][:key])
@article.update(video_state: "COMPLETED") # Only is called on completion
NotifyMailer.video_upload_complete_email(@article).deliver
render json: { message: "Video state updated" }
end
def valid_user
user = User.find_by(secret: params[:key])
user = nil unless user.has_role?(:super_admin)
user
end
end