Exemple #1
0
        public override void OnException(HttpActionExecutedContext context)
        {
            if (context.Exception != null)
            {
                var jsonFieldsSerializer = EngineContext.Current.Resolve <IJsonFieldsSerializer>();

                var errors = new Dictionary <string, List <string> >()
                {
                    {
                        "server_error",
                        new List <string>()
                        {
                            "Please contact the store owner!"
                        }
                    }
                };

                var logger = EngineContext.Current.Resolve <ILogger>();

                logger.Error(context.Exception.Message, context.Exception);

                var errorsRootObject = new ErrorsRootObject()
                {
                    Errors = errors
                };

                var errorsJson = jsonFieldsSerializer.Serialize(errorsRootObject, null);

                var errorResult = new ErrorActionResult(errorsJson, HttpStatusCode.InternalServerError);

                context.Response = errorResult.ExecuteAsync(new CancellationToken()).Result;
            }
        }
Exemple #2
0
        private async Task <IRootObject> Query(string url)
        {
            if (!string.IsNullOrEmpty(_sortingAttribute) && _endpoint != Endpoint.Status.ToString())
            {
                if (!url.Contains("?"))
                {
                    url += "?";
                }
                url += "sort=";
                if (!_sortingOrder)
                {
                    url += "-";
                }
                url += _sortingAttribute;
            }

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(_apiUrl);

                client.DefaultRequestHeaders.Clear();
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", _apiKey);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.api+json"));

                HttpResponseMessage response = await client.GetAsync(url);

                _status     = (int)response.StatusCode;
                _statusText = response.StatusCode.ToString();

                string jsonString = await response.Content.ReadAsStringAsync();

                ResponseRootObject returnObject = null;

                if (_isSuccessStatusCode = response.IsSuccessStatusCode)
                {
                    ResponseRootObject responseData = (ResponseRootObject)JsonConvert.DeserializeObject(jsonString);

                    returnObject = Helpers.ConvertToEndpointType(responseData, (Endpoint)Enum.Parse(typeof(Endpoint), _endpoint));
                    _rootObject  = returnObject;
                    _nextUrl     = returnObject.Links.Next.Replace(_apiUrl, "");
                    _previousUrl = returnObject.Links.Previous.Replace(_apiUrl, "");
                    _firstUrl    = returnObject.Links.First.Replace(_apiUrl, "");
                    return(responseData);
                }
                else
                {
                    ErrorsRootObject responseError = (ErrorsRootObject)JsonConvert.DeserializeObject(jsonString);
                    //TODO: Error handling including throttling (errorcode 4XX)
                    return(responseError);
                }
            }
        }
Exemple #3
0
        private void SetError(ActionExecutedContext actionExecutedContext, KeyValuePair <string, List <string> > error)
        {
            var bindingError = new Dictionary <string, List <string> > {
                { error.Key, error.Value }
            };
            var errorsRootObject = new ErrorsRootObject
            {
                Errors = bindingError
            };

            var errorJson = _jsonFieldsSerializer.Serialize(errorsRootObject, null);

            actionExecutedContext.Result = new ErrorActionResult(errorJson, HttpStatusCode.BadRequest);
        }
        protected IHttpActionResult Error(HttpStatusCode statusCode = (HttpStatusCode)422, string propertyKey = "", string errorMessage = "")
        {
            var errors = new Dictionary <string, List <string> >();

            if (!string.IsNullOrEmpty(errorMessage) && !string.IsNullOrEmpty(propertyKey))
            {
                var errorsList = new List <string>()
                {
                    errorMessage
                };
                errors.Add(propertyKey, errorsList);
            }

            foreach (var item in ModelState)
            {
                var errorMessages = item.Value.Errors.Select(x => x.ErrorMessage);

                List <string> validErrorMessages = new List <string>();

                if (errorMessages != null)
                {
                    validErrorMessages.AddRange(errorMessages.Where(message => !string.IsNullOrEmpty(message)));
                }

                if (validErrorMessages.Count > 0)
                {
                    if (errors.ContainsKey(item.Key))
                    {
                        errors[item.Key].AddRange(validErrorMessages);
                    }
                    else
                    {
                        errors.Add(item.Key, validErrorMessages.ToList());
                    }
                }
            }

            var errorsRootObject = new ErrorsRootObject()
            {
                Errors = errors
            };

            var errorsJson = _jsonFieldsSerializer.Serialize(errorsRootObject, null);

            return(new ErrorActionResult(errorsJson, statusCode));
        }
Exemple #5
0
        static void Main(string[] args)
        {
            PUBGApiClient client  = new PUBGApiClient(Shards.PcAsia, Endpoint.Matches);
            var           taskObj = client.CallEndpointAsync();

            if (taskObj.Result.GetType() == typeof(ErrorsRootObject))
            {
                ErrorsRootObject result = null;
                result = (ErrorsRootObject)taskObj.Result;
                Console.WriteLine(result.Errors.FirstOrDefault().Title);
            }
            else if (taskObj.Result.GetType() == typeof(ResponseRootObject))
            {
                //do something
            }

            Console.ReadKey();
        }
Exemple #6
0
        protected async Task <IActionResult> Error(
            HttpStatusCode statusCode = (HttpStatusCode)422,
            string propertyKey        = "",
            string errorMessage       = "")
        {
            var errors = new Dictionary <string, List <string> >();

            if (!string.IsNullOrEmpty(errorMessage) && !string.IsNullOrEmpty(propertyKey))
            {
                var errorsList = new List <string>()
                {
                    errorMessage
                };
                errors.Add(propertyKey, errorsList);
            }

            foreach (var model in ModelState)
            {
                var errorMessages = model.Value.Errors.Select(m => m.ErrorMessage);

                var validErrorMessages = new List <string>();
                validErrorMessages.AddRange(errorMessages.Where(message => !string.IsNullOrEmpty(message)));

                if (validErrorMessages.Count > 0)
                {
                    if (errors.ContainsKey(model.Key))
                    {
                        errors[model.Key].AddRange(validErrorMessages);
                    }
                    else
                    {
                        errors.Add(model.Key, validErrorMessages.ToList());
                    }
                }
            }

            var errorsRootObject = new ErrorsRootObject {
                Errors = errors
            };

            var errorsJson = JsonFieldsSerializer.Serialize(errorsRootObject, null);

            return(await Task.FromResult <IActionResult>(new ErrorActionResult(errorsJson, statusCode)));
        }
        private void SetError(ActionExecutedContext actionExecutedContext, KeyValuePair <string, List <string> > error)
        {
            var bindingError = new Dictionary <string, List <string> >
            {
                {
                    error.Key, error.Value
                }
            };

            var errorsRootObject = new ErrorsRootObject
            {
                Errors = bindingError
            };

            var errorJson = _jsonFieldsSerializer.Serialize(errorsRootObject, null);
            var response  = new ContentResult();

            response.Content             = errorJson;
            response.ContentType         = "application/json";
            response.StatusCode          = (int)HttpStatusCode.InternalServerError;
            actionExecutedContext.Result = response;
        }
Exemple #8
0
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            if (actionExecutedContext.Response != null && actionExecutedContext.Response.StatusCode != HttpStatusCode.OK)
            {
                var content = actionExecutedContext.Response.Content.ReadAsStringAsync().Result;

                DefaultWeApiErrorsModel defaultWebApiErrorsModel = JsonConvert.DeserializeObject <DefaultWeApiErrorsModel>(content);

                // If both are null this means that it is not the default web api error format,
                // which means that it the error is formatted by our standard and we don't need to do anything.
                if (!string.IsNullOrEmpty(defaultWebApiErrorsModel.Message) &&
                    !string.IsNullOrEmpty(defaultWebApiErrorsModel.MessageDetail))
                {
                    Dictionary <string, List <string> > bindingError = new Dictionary <string, List <string> >()
                    {
                        {
                            "lookup_error",
                            new List <string>()
                            {
                                "not found"
                            }
                        }
                    };

                    var errorsRootObject = new ErrorsRootObject()
                    {
                        Errors = bindingError
                    };

                    var errorJson = _jsonFieldsSerializer.Serialize(errorsRootObject, null);

                    actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(
                        HttpStatusCode.BadRequest, errorJson);
                }
            }

            base.OnActionExecuted(actionExecutedContext);
        }