Пример #1
0
        public async Task <IActionResult> PutCompletedTaskAsync(Guid id)
        {
            var data = await _service.GetAsync(id);

            if (data == null)
            {
                _loger.LogError("Bad request parameter");

                var error = new BadRequest("Parameter is null", new { data });
                return(error.ReturnResponse());
            }

            var fkTaskId = await _service.PutCompletedTaskAsync(id);

            if (fkTaskId == null)
            {
                _loger.LogError("Bad request parameter");

                var error = new BadRequest("Parameter is null", new { data });
                return(error.ReturnResponse());
            }

            var result = new OK("Success completed task data", new { id });

            return(result.ReturnResponse());
        }
Пример #2
0
        public IActionResult AddProduct([FromBody] AddProductRequest addProductRequest)
        {
            _logger.Info("Handling api request: create event subscription :" + addProductRequest);

            IActionResult result = null;

            try
            {
                if (RequestValidator.Validate <AddProductRequest>(Request, addProductRequest, new AddProductRequestValidator(), ref result))
                {
                    var command = AddProductRequestMapper.ToCommand(addProductRequest);
                    _addProductCommandHandler.Handle(command);
                }
            }
            catch (CommandNotValidException ex)
            {
                _logger.Warn("CommandNotValidException caught handling a AddProductCommand", ex);
                result = new BadRequest(ex.ErrorMessages.ToList(), Request);
            }
            catch (CommandTimeoutException ex)
            {
                _logger.Warn("CommandTimeoutException caught handling a AddProductCommand", ex);

                //result = new GatewayTimeout(new List<string>() { "Upstream Timeout", ex.Message },new HttpRequestMessage());
            }
            return(result);
        }
Пример #3
0
        public async Task <IActionResult> LoadDatatablesAsync([FromBody] DatatablesParameter param)
        {
            if (param == null)
            {
                _loger.LogError("Bad request parameter");

                var error = new BadRequest("Parameter is null", new { param });
                return(error.ReturnResponse());
            }

            var data = await _service.DatatablesAsync(param);

            var items = new List <ClientApi>();

            foreach (var item in data.Items)
            {
                item.ClientSecret = item.ClientSecret.ToBase64EncodeWithKey(_config["Security:EncryptKey"]);
                items.Add(item);
            }
            data.Items = items.AsEnumerable();

            var result = new OK("Success load datatables", data);

            return(result.ReturnResponse());
        }
Пример #4
0
 public IActionResult Post([FromBody] ApkKeuringsVerzoekCommand command)
 {
     if (!ModelState.IsValid)
     {
         var badRequest = new BadRequest()
         {
             Message = $"Request bevat: {ModelState.ErrorCount} fouten", InvalidProperties = ModelState.Keys
         };
         _logger.Log(new LogMessage(badRequest.Message));
         return(BadRequest(badRequest));
     }
     try
     {
         var result = _apkManager.HandleApkKeuringsVerzoek(command);
         return(new JsonResult(result));
     }
     catch (Exception ex)
     {
         var badRequest = new BadRequest {
             Message = "RDW niet bereikbaar", InvalidProperties = new List <string>()
         };
         _logger.LogException(new LogMessage($"{badRequest.Message}", ex.StackTrace));
         return(BadRequest(badRequest));
     }
 }
Пример #5
0
        public void SystemExceptionAuthenticationRequestTest()
        {
            var badRequest = new BadRequest();

            badRequest.Message = "error";

            var mockAuthenticationService = MockRepository.GenerateStub <IAuthenticationService>();

            mockAuthenticationService.Stub(x => x.Authenticate("admin", "success-password")).Throw(new Exception());
            mockAuthenticationService.Stub(x => x.ErrorRequest()).Return(badRequest);


            // insert mock in the IoC container
            var bootstrapper = new Bootstrapper();
            var browser      = new Browser(bootstrapper);

            bootstrapper.Container.EjectAllInstancesOf <IAuthenticationService>();
            bootstrapper.Container.Inject <IAuthenticationService>(mockAuthenticationService);

            var bodyDyn = new { username = "******", password = "******" };

            // When
            var result = TestHelper.JsonBodyPost(RouterPattern.Security.Authenticate, bodyDyn, bootstrapper, browser);

            // Then
            mockAuthenticationService.AssertWasCalled(x => x.Authenticate("admin", "success-password"));
            mockAuthenticationService.AssertWasCalled(x => x.ErrorRequest());

            Assert.AreEqual(HttpStatusCode.BadRequest, result.StatusCode);
            var badRequestResult = JsonConvert.DeserializeObject <BadRequest>(result.Body.AsString());

            Assert.AreEqual("error", badRequestResult.Message);
        }
Пример #6
0
        public bool Validate <T>(HttpRequest httpRequest, T request, FluentValidation.IValidator <T> validator, ref IActionResult invalidResult) where T : class
        {
            bool result = false;


            if (request == null)
            {
                _logger.Warn(typeof(T).FullName + " was passed null, request must contain data. Throwing ValidationException");

                invalidResult = new BadRequest(new List <string>()
                {
                    "Request must contain data"
                }, httpRequest);
            }
            else
            {
                var validationResult = validator.Validate(request);

                if (!validationResult.IsValid)
                {
                    invalidResult = new BadRequest(validationResult.Errors.Select(x => x.ErrorMessage).ToList(), httpRequest);

                    string errors = string.Join(";", validationResult.Errors);

                    _logger.Warn(typeof(T).FullName + " failed validation, request invalid.");
                }
                else
                {
                    result = true;
                }
            }

            return(result);
        }
        public ValidationProblemDetails ValidationProblemDetails()
        {
            var problem = new ValidationProblemDetails(ValidationErrors);

            BadRequest.CopyStandardFieldsTo(problem);
            return(problem);
        }
        protected override void RaiseErrorEvent(WebsocketClientBase client, IWebSocketConnection session)
        {
            //fix: WebSocket4Net do not raise error event when server closed the WebSocket connection without completing the close handshake.
            var badRequest = new BadRequest();

            badRequest.ExecuteCommand((WebSocket)client.LiteClient.InnerClient,
                                      new WebSocketCommandInfo(0x9.ToString(), ""));
        }
Пример #9
0
        public void ShouldSetStatusCode()
        {
            result = new BadRequest
            {
                MediaType = mediaType.Object
            };

            Assert.That(result.GetDecorators().Contains(typeof(StatusCode)));
        }
Пример #10
0
        public void ShouldSetResponseText()
        {
            result = new BadRequest(new { })
            {
                MediaType = mediaType.Object
            };

            Assert.That(result.Model, Is.Not.Null);
        }
Пример #11
0
        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (!filterContext.ModelState.IsValid)
            {
                // 400 Bad Request
                foreach (var value in filterContext.ModelState.Values)
                {
                    foreach (var error in value.Errors)
                    {
                        if (error.Exception != null || error.ErrorMessage.Contains("line ") && error.ErrorMessage.Contains("position "))
                        {
                            var errorResponse = new BadRequest(nameof(Application.Messages.ErrorMessage.BadRequest), Application.Messages.ErrorMessage.BadRequest);
                            filterContext.Result = new ObjectResult(errorResponse)
                            {
                                StatusCode = 400
                            };
                            return;
                        }
                    }
                }

                // 422 Unprocessable Entity
                var errors = filterContext.ModelState.Where(x => x.Value.Errors.Count > 0).ToDictionary(
                    kvp => kvp.Key,
                    kvp => kvp.Value.Errors.Select(e => e.ErrorMessage).ToArray()
                    );


                var validationErrorsResponse = new List <ValidationError>();
                foreach (var error in errors)
                {
                    foreach (var value in error.Value)
                    {
                        // Handle DataAnotations Required
                        if (value.Contains("field is required"))
                        {
                            validationErrorsResponse.Add(new ValidationError(nameof(Application.Messages.ErrorMessage.Required), error.Key, Application.Messages.ErrorMessage.Required));
                        }
                        else // Handle fluent validations
                        {
                            var index   = value.IndexOf(" ", StringComparison.Ordinal);
                            var code    = value.Substring(0, index);
                            var message = value.Substring(index + 1);
                            validationErrorsResponse.Add(new ValidationError(code, error.Key, message));
                        }
                    }
                }
                var validationsResponse = new ValidationFailed(nameof(Application.Messages.ErrorMessage.ValidationFailed), Application.Messages.ErrorMessage.ValidationFailed, validationErrorsResponse);

                filterContext.Result = new ObjectResult(validationsResponse)
                {
                    StatusCode = 422
                };
            }
        }
Пример #12
0
        public void SetUp()
        {
            var mediaType = new Mock <IMediaType>();

            mediaType.SetupGet(mt => mt.Synonyms).Returns(new[] { "media-type" });

            result = new BadRequest
            {
                MediaType = mediaType.Object
            };
        }
        public CustomProblemDetails CustomProblemDetails()
        {
            var problem = new CustomProblemDetails
            {
                StringField = "string field value",
                IntField    = 20
            };

            BadRequest.CopyStandardFieldsTo(problem);
            return(problem);
        }
        public MvcProblemDetails ProblemDetailsWithExtensions()
        {
            var problem = new MvcProblemDetails
            {
                Extensions =
                {
                    { "stringField", "string field value" },
                    { "intField",                      20 }
                }
            };

            BadRequest.CopyStandardFieldsTo(problem);
            return(problem);
        }
Пример #15
0
        public async Task <IActionResult> GetAsync(DataParameter param)
        {
            if (param.Start <= 0 || param.Length <= 0)
            {
                _loger.LogError("Bad request parameter");

                var error = new BadRequest("Start page > 0 and page size > 0", new { param.Start, param.Length });
                return(error.ReturnResponse());
            }

            var data = await _service.GetAsync(param);

            var result = new OK("Success get data by paging", data);

            return(result.ReturnResponse());
        }
Пример #16
0
        public async Task <IActionResult> LoadDatatablesAsync([FromBody] DatatablesParameter param)
        {
            if (param == null)
            {
                _loger.LogError("Bad request parameter");

                var error = new BadRequest("Parameter is null", new { param });
                return(error.ReturnResponse());
            }

            var data = await _service.DatatablesAsync(param);

            var result = new OK("Success load datatables", data);

            return(result.ReturnResponse());
        }
Пример #17
0
        public async Task <IActionResult> IsExistDataAsync([FromBody] IDictionary <string, object> whereData)
        {
            if (whereData == null)
            {
                _loger.LogError("Bad request parameter");

                var error = new BadRequest("Bad request parameter", new { whereData });
                return(error.ReturnResponse());
            }

            var exist = await _service.IsExistDataAsync(whereData);

            var result = new OK("Success check exist data", new { exist });

            return(result.ReturnResponse());
        }
        public CustomProblemDetails CustomProblemDetailsWithExtensions()
        {
            var problem = new CustomProblemDetails
            {
                StringField = "string field value",
                IntField    = 20,
                Extensions  =
                {
                    { "s2", "value 2" },
                    { "i2",        30 }
                }
            };

            BadRequest.CopyStandardFieldsTo(problem);
            return(problem);
        }
        async Task <T> CallAPIAsync <T>(Type callingType, string methodName, Action <HttpRequestMessage> contentSetter = null,
                                        string urlParameterName = null, string urlParameterValue = null)
        {
            try
            {
                // Get the method.
                var method = callingType.GetMethod(methodName);

                // Get the custom attribute.
                var attribute = method.GetCustomAttribute <ApiCallAttribute>();

                // Get the Http method.
                var httpMethod = attribute.GetHttpMethod(method);

                // Get the url pattern.
                var urlPattern = attribute.UrlPattern;

                // And the API version.
                var apiVersion = attribute.ApiVersion;

                // Build the url.
                var url = BuildUrl(urlPattern, urlParameterName, urlParameterValue);

                ApiCallSuccess = false;

                using (var request = new HttpRequestMessage(httpMethod, apiVersion + "/" + url))
                {
                    request.Headers.Authorization = _authHeader;
                    contentSetter?.Invoke(request);

                    using (var response = await _httpClient.SendAsync(request).ConfigureAwait(false))
                    {
                        var responseContent = await ReadAsStringAsync(response).ConfigureAwait(false);

                        if (response.IsSuccessStatusCode)
                        {
                            ApiCallSuccess = true;
                            var result = JsonSerializer.Deserialize <T>(responseContent, _options);
                            return(result);
                        }
                        else
                        {
                            BadRequest = GetBadRequest(responseContent);
                            return(default);
        public void ValidTrailer_ArbitraryMessages()
        {
            var debugInfo = new DebugInfo
            {
                Detail = "This is some debugging information"
            };
            var requestInfo = new RequestInfo
            {
                RequestId = "request-id"
            };
            var badRequest = new BadRequest
            {
                FieldViolations = { new BadRequest.Types.FieldViolation {
                                        Description = "Negative", Field = "speed"
                                    } }
            };
            var status = new Status
            {
                Code    = 123,
                Message = "This is a message",
                Details =
                {
                    Any.Pack(debugInfo),
                    Any.Pack(requestInfo),
                    Any.Pack(badRequest)
                }
            };

            var metadata = new Metadata();

            metadata.Add("key-1", "value1");
            metadata.Add(RpcExceptionExtensions.StatusDetailsTrailerName, status.ToByteArray());
            metadata.Add("other-info-bin", new byte[] { 1, 2, 3 });
            metadata.Add("key-2", "value2");
            RpcException ex = new RpcException(s_status, metadata);

            Assert.Equal(badRequest, ex.GetBadRequest());
            Assert.Null(ex.GetErrorInfo());
            Assert.Equal(debugInfo, ex.GetStatusDetail <DebugInfo>());
            Assert.Equal(requestInfo, ex.GetStatusDetail <RequestInfo>());
            Assert.Equal(badRequest, ex.GetStatusDetail <BadRequest>());
        }
Пример #21
0
        protected void CheckBadRequest(string reason, string message, Exception ex)
        {
            BadRequest badRequest = null;

            try
            {
                badRequest = JsonConvert.DeserializeObject <BadRequest>(((RestResponse)ex.Data["res"]).Content);
            }
            catch (Exception) { }

            if (badRequest == null ||
                !badRequest.Reason.Equals(reason))
            {
                throw ex;
            }
            else
            {
                Assert.Inconclusive(message);
            }
        }
Пример #22
0
        private async Task <HttpRequest> WriteBadRequest(StringSegment rline, StreamWriter writer, string reason, HttpStatus status = HttpStatus.BadRequest)
        {
            // If we reach this, something is weird/wrong.
            // "Bye, have a great day!"
            await writer.WriteLineAsync(StatusStrings[(int)status]);

            await writer.WriteLineAsync(ServerHeader);

            await writer.WriteLineAsync("Connection: close");

            await writer.WriteLineAsync();

            await writer.WriteLineAsync(reason);

            await writer.FlushAsync();

            BadRequest?.Invoke(new BadRequestEvent(rline.ToString(), reason));

            return(null); // only returning this so we can chain it to a return statement in the method below
        }
Пример #23
0
        public IHttpActionResult GetImagesByDate([FromUri] NasaPhotoRequest photoRequest)
        {
            // Check model validity
            if (!ModelState.IsValid)
            {
                var badRequestResponse = new BadRequest("Request is malformed", photoRequest);

                return(Content(HttpStatusCode.BadRequest, badRequestResponse));
            }

            var imageRepo = new NasaPhotoRepository("https://api.nasa.gov/mars-photos/api/v1/");

            // Get response from the service
            var response = imageRepo.Get(photoRequest);

            // Handle non-success states
            if (!response.IsSuccessful)
            {
                var responseObject = JsonConvert.DeserializeObject(response.Content);

                return(Content(response.StatusCode, responseObject));
            }

            // Get an object from the response content
            var nasaImageResponse = JsonConvert.DeserializeObject <NasaPhotoResponse>(response.Content);

            // build the image path
            var imageFileService = new ImageFileService(photoRequest.savePath);

            // Get the image response
            try
            {
                return(Ok(imageFileService.HandleNasaResponse(nasaImageResponse)));
            }
            catch (Exception e)
            {
                var exception = new Exception("Unable to save photos. View InnerException for more details.", e);

                return(InternalServerError(exception));
            }
        }
Пример #24
0
        public async Task <IActionResult> IsExistDataWithKeyAsync([FromBody] ExistWithKeyModel model)
        {
            if (string.IsNullOrEmpty(model.FieldName) ||
                string.IsNullOrEmpty(model.FieldName))
            {
                _loger.LogError("Bad Request Parameter");

                var error = new BadRequest("Bad Request Parameter", new { model });
                return(error.ReturnResponse());
            }
            else if (typeof(ClientApi).HasProperty(model.KeyName.ToLower()) && typeof(ClientApi).HasProperty(model.FieldName.ToLower()))
            {
                _loger.LogError("Property name does not exist");

                var error = new BadRequest("Property name does not exist", new { model });
                return(error.ReturnResponse());
            }

            var exist = await _service.IsExistDataWithKeyAsync(model);

            var result = new OK("Success check exist data with key " + model.FieldName + " : " + model.FieldValue, new { exist });

            return(result.ReturnResponse());
        }
Пример #25
0
        public async Task <IActionResult> PutAsync([FromBody] ClientApi data)
        {
            if (data == null)
            {
                _loger.LogError("Bad request parameter");

                var error = new BadRequest("Parameter is null", new { data });
                return(error.ReturnResponse());
            }

            var id = await _service.PutAsync(data);

            if (id == null)
            {
                _loger.LogError("Duplicate data for client id : " + data.ClientId);

                var error = new Forbidden("Duplicate data for client id : " + data.ClientId, new { data });
                return(error.ReturnResponse());
            }

            var result = new OK("Success update data", new { id });

            return(result.ReturnResponse());
        }
Пример #26
0
        public async Task <IActionResult> PostAsync([FromBody] Tasks data)
        {
            if (data == null)
            {
                _loger.LogError("Bad request parameter");

                var error = new BadRequest("Parameter is null", new { data });
                return(error.ReturnResponse());
            }

            var id = await _service.PostAsync(data);

            if (id == null)
            {
                _loger.LogError("Duplicate data for Name : " + data.Name);

                var error = new Forbidden("Duplicate data for Name : " + data.Name, new { data });
                return(error.ReturnResponse());
            }

            var result = new OK("Success add data", new { id });

            return(result.ReturnResponse());
        }
Пример #27
0
 public BadRequestException(BadRequest badRequest) : base(badRequest.RequestMessage, badRequest.ResponseMessage)
 {
 }
Пример #28
0
 public BadRequestException(BadRequest badRequest, string message, Exception inner) : base(badRequest.RequestMessage, badRequest.ResponseMessage, message, inner)
 {
 }
Пример #29
0
 public Error(BadRequest badrequest)
 {
     Message = badrequest.Message;
     Code    = 400;
 }
Пример #30
0
        private void Initialize(string uri, string subProtocol, List <KeyValuePair <string, string> > cookies, List <KeyValuePair <string, string> > customHeaderItems, string userAgent, string origin, WebSocketVersion version, EndPoint httpConnectProxy, int receiveBufferSize)
        {
            if (version == WebSocketVersion.None)
            {
                NotSpecifiedVersion = true;
                version             = WebSocketVersion.Rfc6455;
            }
            Version           = version;
            ProtocolProcessor = GetProtocolProcessor(version);
            Cookies           = cookies;
            Origin            = origin;
            if (!string.IsNullOrEmpty(userAgent))
            {
                if (customHeaderItems == null)
                {
                    customHeaderItems = new List <KeyValuePair <string, string> >();
                }
                customHeaderItems.Add(new KeyValuePair <string, string>("User-Agent", userAgent));
            }
            if (customHeaderItems != null && customHeaderItems.Count > 0)
            {
                CustomHeaderItems = customHeaderItems;
            }
            Handshake handshake = new Handshake();

            m_CommandDict.Add(handshake.Name, handshake);
            Text text = new Text();

            m_CommandDict.Add(text.Name, text);
            Binary binary = new Binary();

            m_CommandDict.Add(binary.Name, binary);
            Close close = new Close();

            m_CommandDict.Add(close.Name, close);
            Ping ping = new Ping();

            m_CommandDict.Add(ping.Name, ping);
            Pong pong = new Pong();

            m_CommandDict.Add(pong.Name, pong);
            BadRequest badRequest = new BadRequest();

            m_CommandDict.Add(badRequest.Name, badRequest);
            m_StateCode        = -1;
            SubProtocol        = subProtocol;
            Items              = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase);
            m_HttpConnectProxy = httpConnectProxy;
            TcpClientSession tcpClientSession;

            if (uri.StartsWith("ws://", StringComparison.OrdinalIgnoreCase))
            {
                tcpClientSession = CreateClient(uri);
            }
            else
            {
                if (!uri.StartsWith("wss://", StringComparison.OrdinalIgnoreCase))
                {
                    throw new ArgumentException("Invalid uri", "uri");
                }
                tcpClientSession = CreateSecureClient(uri);
            }
            tcpClientSession.ReceiveBufferSize = ((receiveBufferSize > 0) ? receiveBufferSize : 4096);
            tcpClientSession.Connected        += client_Connected;
            tcpClientSession.Closed           += client_Closed;
            tcpClientSession.Error            += client_Error;
            tcpClientSession.DataReceived     += client_DataReceived;
            Client             = tcpClientSession;
            EnableAutoSendPing = true;
        }