Example #1
0
        public HttpResponseMessage Post(string quizid, [FromBody] AttemptRequest attemptReq)
        {
            var quiz = quizRepo.FindQuiz(quizid);

            if (quiz == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }
            if (attemptReq == null || !attemptReq.IsValid())
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }

            var attempt = quiz.CreateNewAttempt(attemptReq.Email);

            attemptsRepo.StoreAttempt(quizid, attempt);

            var response = Request.CreateResponse(HttpStatusCode.OK, attempt);

            response.Headers.Location = new Uri(Request.RequestUri, Url.Route("getattempt", new { quizid = quizid, attemptid = attempt.Id }));
            return(response);
        }
Example #2
0
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='quizid'>
 /// </param>
 /// <param name='attemptReq'>
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <Attempt> StartAttemptAsync(this IQuizAPIClient operations, string quizid, AttemptRequest attemptReq, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.StartAttemptWithHttpMessagesAsync(quizid, attemptReq, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Example #3
0
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='quizid'>
 /// </param>
 /// <param name='attemptReq'>
 /// </param>
 public static Attempt StartAttempt(this IQuizAPIClient operations, string quizid, AttemptRequest attemptReq)
 {
     return(Task.Factory.StartNew(s => ((IQuizAPIClient)s).StartAttemptAsync(quizid, attemptReq), operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }