/// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        public Task OnAuthorizationAsync(AuthorizationFilterContext context)
        {
            var requestLocalizer = context.HttpContext.RequestServices.GetRequiredService <IStringLocalizer <Request> >();

            var ctrl = (ControllerActionDescriptor)context.ActionDescriptor;

            //匿名不需要验证
            var allowAnonymous = ctrl.MethodInfo.IsDefined(typeof(AllowAnonymousAttribute)) ||
                                 ctrl.ControllerTypeInfo.IsDefined(typeof(AllowAnonymousAttribute));

            if (allowAnonymous)
            {
                return(Task.CompletedTask);
            }

            // 判断当前登录用户
            var user = SetPrincipal(context);

            if (!user)
            {
                var content = new ApiResult <string>
                {
                    Status = 203,
                    Msg    = requestLocalizer["No login or login timeout"]
                };

                ResponseStatusCode.SetResponseStatusCode(content, context.HttpContext.Response);

                // 此处不能直接设置Response,要设置Result,后续过滤器才不会往下执行,下游判断Result不为空,直接执行结果,自动写入响应
                // 否则此处设置响应流,请求到达控制器,又会执行控制器的结果,因再次写入Response而抛异常
                context.Result = new ObjectResult(content);
            }

            return(Task.CompletedTask);
        }
Esempio n. 2
0
 public ModelContainer(T model, ActionType actionType, ResponseStatusCode responseCode, bool isSuccessful = true, ModelContainerErrorMessages errorMessage = ModelContainerErrorMessages.None)
 {
     Model              = model;
     ErrorMessage       = errorMessage;
     ResponseStatusCode = responseCode;
     TransformActionData(actionType);
 }
 /// <summary>
 ///     Initializes a new instance of the <see cref="ResponseException" /> class.
 /// </summary>
 /// <param name="statusCode">The status code returned by the server.</param>
 /// <param name="statusAttributes">The status attributes from the gremlin response.</param>
 /// <param name="message">The error message string.</param>
 public ResponseException(ResponseStatusCode statusCode,
                          IReadOnlyDictionary <string, object> statusAttributes,
                          string message) : base(message)
 {
     StatusCode       = statusCode;
     StatusAttributes = statusAttributes;
 }
Esempio n. 4
0
        protected HttpResponse(ResponseStatusCode statusCode)
        {
            Validator.CheckIfNull(statusCode, nameof(statusCode));

            this.HeaderCollection = new HttpHeaderCollection();
            this.CookieCollection = new HttpCookieCollection();
            this.StatusCode       = statusCode;
        }
Esempio n. 5
0
 public HttpResponseHeaders(long contentLength, ResponseStatusCode code, IResponseField[] fields, string version)
 {
     this.ContentLength = contentLength;
     this.Status        = code;
     this.HttpVersion   = version;
     this.Fields        = fields;
     this.Buffer        = null;
 }
Esempio n. 6
0
 public IdentityResultErrorResponse(
     ResponseStatusCode statusCode,
     IEnumerable <IdentityError> errors,
     string message = null
     ) : base(statusCode, message)
 {
     Errors = errors.ToList();
 }
 public UnexpectedResponseException(
     ReaderCommand command,
     ResponseStatusCode status
     ) : base($"Response for command {command} returned unexpected status {status}")
 {
     Command = command;
     Status  = status;
 }
 public CommandExecutionFailedException(
     ReaderCommand command,
     ResponseStatusCode status
     ) : base($"Response for command {command} returned non success status {status}")
 {
     Command = command;
     Status  = status;
 }
 public IllegalCommandException(
     ReaderCommand command,
     ResponseStatusCode status
     ) : base($"Command {command} is illegal for current reader")
 {
     Command = command;
     Status  = status;
 }
        public ResponseModel(string message, bool status, ResponseStatusCode statusCode)
        {
            if (message == null)
            {
                message = string.Empty;
            }

            Message    = message;
            status     = !string.IsNullOrEmpty(message) ? false : true;
            StatusCode = statusCode;
        }
        /// <summary>无权限请求</summary>
        /// <param name="filterContext"></param>
        protected void HandleUnauthorizedRequest(AuthorizationFilterContext filterContext)
        {
            var content = new ApiResult <String>
            {
                Status = 401,
                Msg    = "No permission" // 没有权限
            };

            ResponseStatusCode.SetResponseStatusCode(content, filterContext.HttpContext.Response);

            // 此处不能直接设置Response,要设置Result,后续过滤器才不会往下执行,下游判断Result不为空,直接执行结果,自动写入响应
            // 否则此处设置响应流,请求到达控制器,又会执行控制器的结果,因再次写入Response而抛异常
            filterContext.Result = new ObjectResult(content);
        }
Esempio n. 12
0
        public static string GetDefaultMessageForStatusCode(ResponseStatusCode responseStatusCode)
        {
            switch (responseStatusCode)
            {
            case ResponseStatusCode.Success:
                return("");

            case ResponseStatusCode.Error:
                return("An unexpected error has occurred. Please contact your administrator.");

            default:
                return(null);
            }
        }
Esempio n. 13
0
        /// <summary>
        /// Create return json
        /// </summary>
        /// <typeparam name="TRes"></typeparam>
        /// <typeparam name="TData"></typeparam>
        /// <param name="statusCode"></param>
        /// <param name="msg"></param>
        /// <param name="data"></param>
        /// <param name="totalCount">记录条数,分页时使用</param>
        /// <returns></returns>
        protected JsonResult CreateResult <TData>(ResponseStatusCode statusCode, string msg = "", TData data = null, int totalCount = 0)
            where TData : class
        {
            ResponseDefault <TData> res = new ResponseDefault <TData>();

            res.result = (int)statusCode;
            res.msg    = msg;
            res.count  = totalCount;
            if (null != data)
            {
                res.data = data;
            }

            return(Json(res));
        }
Esempio n. 14
0
        /// <summary>
        /// get weather data using zip code
        /// </summary>
        /// <param name="zipCode">zip code</param>
        /// <returns>weather data</returns>
        public WeatherData GetWeatherByZipCode(int zipCode, out ResponseStatusCode responseStatusCode)
        {
            var restClient = new RestClient();

            restClient.BaseUrl = new Uri(ApiAccess.OPEN_WEATHER_MAP_BASE_URL);

            var request = new RestRequest("weather", Method.GET);

            request.AddParameter("appid", ApiAccess.OPEN_WEATHER_MAP_KEY);
            request.AddParameter("zip", zipCode);

            RestApiClientSync syncRestClient = new RestApiClientSync();
            WeatherData       weatherData    = syncRestClient.ExecuteRequest(restClient, request, out responseStatusCode);

            return(weatherData);
        }
Esempio n. 15
0
        /// <summary>
        /// InvokeAsync
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task InvokeAsync(HttpContext context)
        {
            try
            {
                await _next(context);
            }
            catch (Exception e)
            {
                //记录系统的异常信息
                XTrace.WriteException(e);

                // 如果已经开始响应到客户端,直接抛出异常,否则下面写入响应也会抛异常
                if (context.Response.HasStarted)
                {
                    throw;
                }

                var data = new ApiResult <String>();

                if (e is ApiException apiexc)
                {
                    data.Status = apiexc.Status;

                    data.Msg = apiexc.Message;

                    //data.Status = ResponseStatusCode.GetStatusCode(apiexc.Status);

                    //context.Response.StatusCode = ResponseStatusCode.SetHttpStatusCode ?
                    //    data.Status : 200;

                    ResponseStatusCode.SetResponseStatusCode(data, context.Response);
                }
                else
                {
                    data.Msg    = e.Message;
                    data.Status = ResponseStatusCode.GetStatusCode(500);

                    //context.Response.StatusCode = ResponseStatusCode.SetHttpStatusCode ?
                    //    data.Status : (Int32)HttpStatusCode.InternalServerError;

                    ResponseStatusCode.SetResponseStatusCode(data, context.Response);
                }

                context.Response.Headers.Add(HeaderNames.ContentType, "application/json;charset=utf-8");
                await context.Response.WriteAsync(JsonConvert.SerializeObject(data), Encoding.UTF8);
            }
        }
        public void ReturnFailedIfMessageNotPushedToMessageQueue(ResponseStatusCode responseStatusCode)
        {
            //Arrange
            messaginQueueHandlerMoq.Setup(mq => mq.PushMessage <PingVehicleModel>(It.IsAny <PingVehicleModel>(), It.IsAny <IModel>())).Returns(new ResponseDetailsBase(responseStatusCode));

            var customerService = new MessageQueueHelper(loggerMoq.Object, messaginQueueHandlerMoq.Object);

            //Act

            var result = customerService.PushMessageToQueue(new VehicleDto()
            {
                VehicleId = "Test123"
            });

            //Assert
            Assert.Equal(responseStatusCode, result.StatusCode);
        }
Esempio n. 17
0
        public override void HandleMessage(Message msg)
        {
            progressBar.Visibility = ViewStates.Gone;

            ResponseStatusCode responseStatusCode = ResponseStatusCode.FromId(msg.What);

            if (responseStatusCode == ResponseStatusCode.StartTunnelSuccess)
            {
                Log.Info(TAG, "Tunnel started successfully!!!");
                Toast.MakeText(Application.Context, Resource.String.MvpnTunnelStarted, ToastLength.Short).Show();
            }
            else if (responseStatusCode == ResponseStatusCode.TunnelAlreadyRunning)
            {
                Log.Warn(TAG, "Tunnel is already running.");
                Toast.MakeText(Application.Context, Resource.String.MvpnTunnelAlreadyRunning, ToastLength.Short).Show();
            }
            else if (responseStatusCode == ResponseStatusCode.StartTunnelFailed)
            {
                Log.Error(TAG, "Failed to start tunnel!!!");
                Toast.MakeText(Application.Context, Resource.String.MvpnTunnelFailed, ToastLength.Long).Show();
            }
            else if (responseStatusCode == ResponseStatusCode.SessionExpired)
            {
                Log.Info(TAG, "Session Expired!!!");
                Toast.MakeText(Application.Context, Resource.String.MvpnSessionExpired, ToastLength.Short).Show();
            }
            else if (responseStatusCode == ResponseStatusCode.FoundLegacyMode)
            {
                Log.Error(TAG, "Cannot start tunnel for Legacy ManagementMode!!!");
            }
            else if (responseStatusCode == ResponseStatusCode.FoundNonManagedApp)
            {
                Log.Error(TAG, "Could not retrieve policies!!! \n This could be because of the following reasons: \n\t 1. SecureHub is not installed.\n\t 2. SecureHub enrollment is not completed.\n\t 3. App is not managed through CEM.");
                Toast.MakeText(Application.Context, Resource.String.MvpnNonManagedApp, ToastLength.Long).Show();
            }
            else if (responseStatusCode == ResponseStatusCode.FoundNonWebssoMode)
            {
                Log.Error(TAG, "Cannot start tunnel for NetworkAccess mode other than Tunneled - Web SSO!!!");
                Toast.MakeText(Application.Context, Resource.String.MvpnNonWebSsoMode, ToastLength.Long).Show();
            }
            else if (responseStatusCode == ResponseStatusCode.NoNetworkConnection)
            {
                Log.Error(TAG, "Failed to start tunnel. No Network!!!");
                Toast.MakeText(Application.Context, Resource.String.MvpnNoNetworkConnection, ToastLength.Long).Show();
            }
        }
        /// <summary>
        /// Returns generic response model T <see cref="IActionResult"/> acording <see cref="ModelContainer&lt;T&gt;.ResponseStatusCode"/>
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="mappedResponseModel"></param>
        /// <param name="responseStatusCode"></param>
        /// <param name="errorMessage"></param>
        /// <returns></returns>
        private ActionResult ApiActionResult <T>(T mappedResponseModel, ResponseStatusCode responseStatusCode, ModelContainerErrorMessages errorMessage)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(JsonConvert.SerializeObject(ModelState.Values.Select(e => e.Errors).ToList())));
            }

            return(responseStatusCode switch
            {
                ResponseStatusCode.Ok => Ok((mappedResponseModel)),
                ResponseStatusCode.Created => Created("", mappedResponseModel),//todo: uri
                ResponseStatusCode.Accepted => Accepted(mappedResponseModel),
                ResponseStatusCode.NoContent => NoContent(),
                ResponseStatusCode.UnprocessableEntity => UnprocessableEntity(errorMessage),
                ResponseStatusCode.NotFound => NotFound(errorMessage),
                ResponseStatusCode.BadRequest => BadRequest(errorMessage),
                _ => throw new Exception("Not implemented Response status code."),
            });
        public XElement GetResultXElement(string resXmlString)
        {
            try
            {
                XElement           xe   = XElement.Parse(resXmlString);
                ResponseStatusCode code = (ResponseStatusCode)Convert.ToInt32(xe.Element("Status").Element("Code").Value);
                if (ResponseStatusCode.OK == code)
                {
                    return(xe.Element("Result"));
                }
                else
                {
                    switch (code)
                    {
                    case ResponseStatusCode.BadRequest:
                        throw new ErrorResponseExp(UIResources.ERROR_400_BadRequest);

                    case ResponseStatusCode.Conflict:
                        throw new ErrorResponseExp(UIResources.ERROR_409_Conflict);

                    case ResponseStatusCode.IntertalServerError:
                        throw new ErrorResponseExp(UIResources.ERROR_500_IntertalServerError);

                    case ResponseStatusCode.NotFound:
                        throw new ErrorResponseExp(UIResources.ERROR_404_NotFound);

                    case ResponseStatusCode.Unauthorized:
                        throw new ErrorResponseExp(UIResources.ERROR_401_Unauthorized);

                    default:
                        // Should never go here
                        throw new Exception();
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 20
0
        /// <summary>
        /// display user error message base on the response status code
        /// </summary>
        /// <param name="responseStatusCode">response status code</param>
        /// <returns>error message</returns>
        static string DisplayResponseStatusErrorMessage(ResponseStatusCode responseStatusCode)
        {
            string errorMessage = "\t*************************************************************************************\n";

            switch (responseStatusCode)
            {
            case ResponseStatusCode.TRANSPORT_ERROR:
                errorMessage += "\t\tAn error occurred in the request: network is down, failed DNS lookup, etc \n";
                break;

            case ResponseStatusCode.UNAUTHORIZED:
                errorMessage += "\t\tAn error occurred in the request: key is unauthorized \n";
                break;

            case ResponseStatusCode.BAD_REQUEST:
                errorMessage += "\t\tAn error occurred in the request: the request was malformed\n";
                break;
            }

            errorMessage += "\t*************************************************************************************\n";

            return(errorMessage);
        }
Esempio n. 21
0
        public static bool IndicatesError(this ResponseStatusCode statusCode)
        {
            switch (statusCode)
            {
            case ResponseStatusCode.Success:
            case ResponseStatusCode.NoContent:
            case ResponseStatusCode.PartialContent:
            case ResponseStatusCode.Authenticate:
                return(false);

            case ResponseStatusCode.Unauthorized:
            case ResponseStatusCode.MalformedRequest:
            case ResponseStatusCode.InvalidRequestArguments:
            case ResponseStatusCode.ServerError:
            case ResponseStatusCode.ScriptEvaluationError:
            case ResponseStatusCode.ServerTimeout:
            case ResponseStatusCode.ServerSerializationError:
                return(true);

            default:
                throw new ArgumentOutOfRangeException(nameof(statusCode), statusCode, null);
            }
        }
Esempio n. 22
0
 public ViewResponse(ResponseStatusCode statusCode, IView view) : base(statusCode, view)
 {
 }
 public SmartResponseException(string message, ErrorType errorType, ResponseStatusCode statusCode) : base(message)
 {
     ErrorType  = errorType;
     StatusCode = statusCode;
 }
 public SmartResponseException(string message, ResponseStatusCode statusCode) : this(message, ErrorType.Warning, statusCode)
 {
 }
        /// <summary>
        /// execute a rest client request
        /// </summary>
        /// <param name="restClient">rest api client</param>
        /// <param name="request">rest api request</param>
        /// <returns>weather data object</returns>
        /// <out>response status</out>
        public WeatherData ExecuteRequest(RestClient restClient, IRestRequest request, out ResponseStatusCode responseStatusCode)
        {
            WeatherData weatherData = null;

            responseStatusCode = ResponseStatusCode.COMPLETE;

            var response = restClient.Execute(request);
            var content  = response.Content;

            weatherData = JsonConvert.DeserializeObject <WeatherData>(content);

            //
            // convert RestSharp error status to application's response status code
            //
            if (response.ResponseStatus == ResponseStatus.Error)
            {
                responseStatusCode = ResponseStatusCode.TRANSPORT_ERROR;
            }
            else if (response.StatusCode == HttpStatusCode.Unauthorized)
            {
                responseStatusCode = ResponseStatusCode.UNAUTHORIZED;
            }
            else if (response.StatusCode == HttpStatusCode.BadRequest)
            {
                responseStatusCode = ResponseStatusCode.BAD_REQUEST;
            }

            return(weatherData);
        }
Esempio n. 26
0
 /// <summary>
 /// 初始化一个<see cref="DataResult"/>类型的新实例
 /// </summary>
 public DataResult(ResponseStatusCode code, string msg, object data = null)
 {
     this.Code = code;
     this.Msg = msg;
     this.Data = data;
 }
 public ResponseModel(T data, bool status, ResponseStatusCode statusCode)
 {
     Data       = data;
     Status     = status;
     StatusCode = statusCode;
 }
Esempio n. 28
0
 public void SetMessage(ResponseStatusCode code, string message)
 {
     SetMessage(code.ToInt().ToString(), message);
 }
Esempio n. 29
0
 public void SetMessage(ResponseStatusCode code)
 {
     SetMessage(code, code.ToAlias());
 }
Esempio n. 30
0
 public HttpResponse(ResponseStatusCode statusCode)
 {
     this.StatusCode = statusCode;
     this.Header     = new Header(HeaderType.HttpResponse);
     this.Content    = new byte[10];
 }
Esempio n. 31
0
        private async Task <RavenJToken> CheckForErrorsAndReturnCachedResultIfAnyAsync(bool readErrorString)
        {
            if (Response.IsSuccessStatusCode)
            {
                return(null);
            }
            if (ResponseStatusCode == HttpStatusCode.Unauthorized ||
                ResponseStatusCode == HttpStatusCode.NotFound ||
                ResponseStatusCode == HttpStatusCode.Conflict)
            {
                if (factory.CanLogRequest)
                {
                    factory.OnLogRequest(owner, new RequestResultArgs
                    {
                        DurationMilliseconds = CalculateDuration(),
                        Method     = Method,
                        HttpResult = (int)ResponseStatusCode,
                        Status     = RequestStatus.ErrorOnServer,
                        Result     = ResponseStatusCode.ToString(),
                        Url        = Url,
                        PostedData = postedData
                    });
                }


                throw ErrorResponseException.FromResponseMessage(Response, readErrorString);
            }

            if (ResponseStatusCode == HttpStatusCode.NotModified &&
                CachedRequestDetails != null)
            {
                factory.UpdateCacheTime(this);
                var result = factory.GetCachedResponse(this, ResponseHeaders);

                // here we explicitly need to get Response.Headers, and NOT ResponseHeaders because we are
                // getting the value _right now_ from the secondary, and don't care about the 304, the force check
                // is still valid
                HandleReplicationStatusChanges(ResponseHeaders, primaryUrl, operationUrl);

                if (factory.CanLogRequest)
                {
                    factory.OnLogRequest(owner, new RequestResultArgs
                    {
                        DurationMilliseconds = CalculateDuration(),
                        Method     = Method,
                        HttpResult = (int)ResponseStatusCode,
                        Status     = RequestStatus.Cached,
                        Result     = result.ToString(),
                        Url        = Url,
                        PostedData = postedData
                    });
                }


                return(result);
            }


            using (var sr = new StreamReader(await Response.GetResponseStreamWithHttpDecompression().ConfigureAwait(false)))
            {
                var readToEnd = sr.ReadToEnd();

                if (factory.CanLogRequest)
                {
                    factory.OnLogRequest(owner, new RequestResultArgs
                    {
                        DurationMilliseconds = CalculateDuration(),
                        Method     = Method,
                        HttpResult = (int)ResponseStatusCode,
                        Status     = RequestStatus.Cached,
                        Result     = readToEnd,
                        Url        = Url,
                        PostedData = postedData
                    });
                }

                if (string.IsNullOrWhiteSpace(readToEnd))
                {
                    throw ErrorResponseException.FromResponseMessage(Response);
                }

                RavenJObject ravenJObject;
                try
                {
                    ravenJObject = RavenJObject.Parse(readToEnd);
                }
                catch (Exception e)
                {
                    throw new ErrorResponseException(Response, readToEnd, e);
                }
                if (ravenJObject.ContainsKey("IndexDefinitionProperty"))
                {
                    throw new IndexCompilationException(ravenJObject.Value <string>("Message"))
                          {
                              IndexDefinitionProperty = ravenJObject.Value <string>("IndexDefinitionProperty"),
                              ProblematicText         = ravenJObject.Value <string>("ProblematicText")
                          };
                }
                //else if (ravenJObject.ContainsKey())
                if (ResponseStatusCode == HttpStatusCode.BadRequest && ravenJObject.ContainsKey("Message"))
                {
                    throw new BadRequestException(ravenJObject.Value <string>("Message"), ErrorResponseException.FromResponseMessage(Response));
                }
                if (ravenJObject.ContainsKey("Error"))
                {
                    var errorValue = ravenJObject.Value <string>("Error");
                    if (errorValue != null && errorValue.StartsWith("System.TimeoutException"))
                    {
                        throw new TimeoutException(errorValue.Substring("System.TimeoutException: ".Length));
                    }

                    var sb = new StringBuilder();
                    foreach (var prop in ravenJObject)
                    {
                        if (prop.Key == "Error")
                        {
                            continue;
                        }

                        sb.Append(prop.Key).Append(": ").AppendLine(prop.Value.ToString(Formatting.Indented));
                    }

                    if (sb.Length > 0)
                    {
                        sb.AppendLine();
                    }
                    sb.Append(errorValue);

                    throw new ErrorResponseException(Response, sb.ToString(), readToEnd);
                }
                throw new ErrorResponseException(Response, readToEnd);
            }
        }