Ejemplo n.º 1
0
        /// <summary>
        /// Method to parse an exception, and return an appropriate HTTP response and message.
        /// </summary>
        internal HttpResponseMessage GenerateExceptionMessage(Exception e)
        {
            InvalidRequest ReturnRequest = new InvalidRequest();

            if (e is MalformedRequestException)
            {
                ReturnRequest.Status       = HttpStatusCode.BadRequest;
                ReturnRequest.ErrorMessage = "Malformed Request";
            }
            //For RasterExceptions (which are thrown by the LEADTOOLS SDK), we return the exception message in the response for debugging purposes. In a production environment, these exception messages should NOT be bubbled up to user.
            else if (e is RasterException)
            {
                ReturnRequest.Status       = HttpStatusCode.InternalServerError;
                ReturnRequest.ErrorMessage = e.Message;
            }
            else
            {
                ReturnRequest.Status       = HttpStatusCode.InternalServerError;
                ReturnRequest.ErrorMessage = e.Message;
            }

            return(new HttpResponseMessage()
            {
                StatusCode = ReturnRequest.Status,
                Content = new StringContent(ReturnRequest.ErrorMessage)
            });
        }
Ejemplo n.º 2
0
        public async Task GivenIHaveAnAddParticipantToAHearingRequestWithAParticipantId()
        {
            var request  = new InvalidRequest();
            var jsonBody = RequestHelper.SerialiseRequestToSnakeCaseJson(request.BuildRequest());

            Context.HttpContent = new StringContent(jsonBody, Encoding.UTF8, "application/json");
            var seededHearing = await Context.TestDataManager.SeedVideoHearing();

            Context.TestData.NewHearingId = seededHearing.Id;
            NUnit.Framework.TestContext.WriteLine($"New seeded video hearing id: {seededHearing.Id}");
            Context.Uri        = AddParticipantsToHearing(Context.TestData.NewHearingId);
            Context.HttpMethod = HttpMethod.Post;
        }
Ejemplo n.º 3
0
        public void InvalidRequestConstructorTest()
        {
            // Arrange
            var expectedMessage           = "InvalidRequestMessage";
            var expectedInvalidProperties = new List <string> {
                "InvalidProperty1", "InvalidProperty2"
            };

            // Act
            var target = new InvalidRequest(expectedMessage, expectedInvalidProperties);

            // Assert
            Assert.IsNotNull(target);
            Assert.AreEqual(expectedMessage, target.Message);
            CollectionAssert.AreEqual(expectedInvalidProperties, target.InvalidProperties.ToList());
        }
 public IActionResult OnderhoudsopdrachtAfmelden([FromBody] OnderhoudAfmeldenCommand onderhoudAfmeldenCommand)
 {
     if (!ModelState.IsValid)
     {
         var badRequestMessage = $"Request bevat: {ModelState.ErrorCount} fouten";
         _logger.Log(new LogMessage($"{badRequestMessage} | {GetType().Name}"));
         var badRequest = new InvalidRequest(badRequestMessage, ModelState.Keys);
         return(BadRequest(badRequest));
     }
     try
     {
         // Proces command using OnderhoudService (DomainService)
         _onderhoudsopdrachtService.OnderhoudsopdrachtAfmelden(onderhoudAfmeldenCommand);
         return(new OkResult());
     }
     catch (Exception ex)
     {
         var badRequestMessage = "Er ging iets mis. Onderhoud niet afgemeld.";
         _logger.LogException(new LogMessage(ex.Message, ex.StackTrace));
         var badRequest = new InvalidRequest(badRequestMessage, new List <string>());
         return(BadRequest(badRequest));
     }
 }
        protected async override Task <IValueProvider> BuildAsync(WebPubSubRequestAttribute attrResolved, IReadOnlyDictionary <string, object> bindingData)
        {
            if (bindingData == null)
            {
                throw new ArgumentNullException(nameof(bindingData));
            }
            bindingData.TryGetValue(HttpRequestName, out var httpRequest);
            var request = httpRequest as HttpRequest;

            var httpContext = request?.HttpContext;

            if (httpContext == null)
            {
                return(new WebPubSubRequestValueProvider(new WebPubSubRequest(null, new InvalidRequest(HttpStatusCode.BadRequest), HttpStatusCode.BadRequest), _userType));
            }

            // Build abuse response
            if (Utilities.RespondToServiceAbuseCheck(httpContext.Request, _options.AllowedHosts, out var abuseResponse))
            {
                var abuseRequest = new WebPubSubRequest(null, new ValidationRequest(abuseResponse.StatusCode == HttpStatusCode.OK), abuseResponse);
                return(new WebPubSubRequestValueProvider(abuseRequest, _userType));
            }

            // Build service request context
            if (!TryParseRequest(request, out var connectionContext))
            {
                // Not valid WebPubSubRequest
                return(new WebPubSubRequestValueProvider(new WebPubSubRequest(connectionContext, new InvalidRequest(HttpStatusCode.BadRequest, Constants.ErrorMessages.NotValidWebPubSubRequest), HttpStatusCode.BadRequest), _userType));
            }

            // Signature check
            // TODO: make the check more accurate for current function instead from global settings.
            if (!Utilities.ValidateSignature(connectionContext.ConnectionId, connectionContext.Signature, _options.AccessKeys))
            {
                return(new WebPubSubRequestValueProvider(new WebPubSubRequest(connectionContext, new InvalidRequest(HttpStatusCode.Unauthorized, Constants.ErrorMessages.SignatureValidationFailed), HttpStatusCode.Unauthorized), _userType));
            }

            WebPubSubRequest wpsRequest;
            var requestType = Utilities.GetRequestType(connectionContext.EventType, connectionContext.EventName);

            switch (requestType)
            {
            case RequestType.Connect:
            {
                var content = await ReadString(request.Body).ConfigureAwait(false);

                var eventRequest = JsonConvert.DeserializeObject <ConnectEventRequest>(content);
                wpsRequest = new WebPubSubRequest(connectionContext, eventRequest);
            }
            break;

            case RequestType.Connected:
            {
                wpsRequest = new WebPubSubRequest(connectionContext, new ConnectedEventRequest());
            }
            break;

            case RequestType.Disconnected:
            {
                var content = await ReadString(request.Body).ConfigureAwait(false);

                var eventRequest = JsonConvert.DeserializeObject <DisconnectedEventRequest>(content);
                wpsRequest = new WebPubSubRequest(connectionContext, eventRequest);
            }
            break;

            case RequestType.User:
            {
                var contentType = MediaTypeHeaderValue.Parse(request.ContentType);
                if (!Utilities.ValidateMediaType(contentType.MediaType, out var dataType))
                {
                    var invalidRequest = new InvalidRequest(HttpStatusCode.BadRequest, $"{Constants.ErrorMessages.NotSupportedDataType}{request.ContentType}");
                    return(new WebPubSubRequestValueProvider(new WebPubSubRequest(connectionContext, invalidRequest, HttpStatusCode.BadRequest), _userType));
                }
                var payload      = ReadBytes(request.Body);
                var eventRequest = new MessageEventRequest(BinaryData.FromBytes(payload), dataType);
                wpsRequest = new WebPubSubRequest(connectionContext, eventRequest);
            }
            break;

            default:
                wpsRequest = new WebPubSubRequest(connectionContext, new InvalidRequest(HttpStatusCode.NotFound, "Unknown request"));
                break;
            }

            return(new WebPubSubRequestValueProvider(wpsRequest, _userType));
        }