Files
codeocean/app/controllers/remote_evaluation_controller.rb
2018-11-26 17:56:07 +01:00

33 lines
1.2 KiB
Ruby

class RemoteEvaluationController < ApplicationController
include RemoteEvaluationParameters
include SubmissionScoring
skip_after_action :verify_authorized
skip_before_action :verify_authenticity_token
# POST /evaluate
# @param validation_token
# @param files_attributes
def evaluate
validation_token = remote_evaluation_params[:validation_token]
files_attributes = remote_evaluation_params[:files_attributes] || []
# todo extra: validiere, ob files wirklich zur Übung gehören (wenn allowNewFiles-flag nicht gesetzt ist)
if (remote_evaluation_mapping = RemoteEvaluationMapping.find_by(:validation_token => validation_token))
_params = remote_evaluation_params.except(:validation_token)
_params[:exercise_id] = remote_evaluation_mapping.exercise_id
_params[:user_id] = remote_evaluation_mapping.user_id
_params[:cause] = "remoteAssess"
_params[:user_type] = remote_evaluation_mapping.user_type
@submission = Submission.create(_params)
render json: score_submission(@submission)
else
# todo: better output
# todo: check token expired?
render json: "No exercise found for this validation_token! Please keep out!"
end
end
end