/**
  * Checks user's answers.
  *
  * @param Request $request
  * @param Application $app
  * @return string
  */
 public function checkAction(Request $request, Application $app)
 {
     // an associative array of filenames => contents
     $inputFiles = $request->request->get('files', array());
     $challengeClassContents = $request->request->get('challengeClassContents');
     $challengeClassName = $request->request->get('challengeClassName');
     $activity = new Activity($challengeClassName, $challengeClassContents);
     foreach ($inputFiles as $filename => $inputFileSource) {
         $activity->addInputFile($filename, $inputFileSource);
     }
     /** @var ActivityRunner $activityRunner */
     $activityRunner = $app['activity_runner'];
     $result = $activityRunner->run($activity);
     $data = array('output' => $result->getOutput(), 'isCorrect' => $result->isCorrect(), 'errors' => array('validation' => $result->getGradingError(), 'language' => $result->getLanguageError()));
     return new JsonResponse($data);
 }
 /**
  * Grading endpoint - similar to ActivityController::checkAction(), but
  * loads the file dynamically from the filesystem, which is handy for
  * tweaking grading without refreshing
  *
  * @param Request $request
  * @param Application $app
  * @return JsonResponse
  */
 public function gradeAction(Request $request, Application $app)
 {
     // an associative array of filenames => contents
     $inputFiles = $request->request->get('files', array());
     $path = $request->request->get('path');
     $challenge = $this->createChallengeFromPath($path);
     $activity = new Activity(get_class($challenge), file_get_contents($path));
     foreach ($inputFiles as $filename => $inputFileSource) {
         $activity->addInputFile($filename, $inputFileSource);
     }
     /** @var ActivityRunner $activityRunner */
     $activityRunner = $app['activity_runner'];
     $result = $activityRunner->run($activity);
     $data = array('output' => $result->getOutput(), 'isCorrect' => $result->isCorrect(), 'errors' => array('validation' => $result->getGradingError(), 'language' => $result->getLanguageError()));
     return new JsonResponse($data);
 }