Exemplo n.º 1
0
        public void BeforeExecute(ICallExecutionContext context)
        {
            var instance          = context.Parameters[_index];
            var validationContext = new ValidationContext(instance, context.HttpContext.RequestServices, null);
            var validationResults = new List <ValidationResult>();

            if (!Validator.TryValidateObject(instance, validationContext, validationResults, true))
            {
                var errorMessage = validationResults.Aggregate("", (current, result) =>
                {
                    if (!string.IsNullOrEmpty(result.ErrorMessage))
                    {
                        current += result.ErrorMessage + Environment.NewLine;
                    }

                    return(current);
                });

                if (context.ResponseMessage is ErrorResponseMessage currentResponse)
                {
                    errorMessage += currentResponse.Error;
                }

                context.ContinueCall    = false;
                context.ResponseMessage = new ErrorResponseMessage(JsonRpcErrorCode.InvalidRequest, errorMessage, context.RequestMessage.Version, context.RequestMessage.Id);
            }
        }
Exemplo n.º 2
0
        public void BeforeExecute(ICallExecutionContext context)
        {
            var validationValue        = context.Parameters[_index];
            var validationErrorMessage = ImmutableLinkedList <string> .Empty;

            foreach (var validationAttribute in _attributes)
            {
                var validationContext = new ValidationContext(context.Instance, context.HttpContext.RequestServices, null);

                var result = validationAttribute.GetValidationResult(validationValue, validationContext);

                if (result != ValidationResult.Success)
                {
                    validationErrorMessage = validationErrorMessage.Add(validationAttribute.FormatErrorMessage(_fieldName).Replace("field", "parameter"));
                }
            }

            if (validationErrorMessage != ImmutableLinkedList <string> .Empty)
            {
                context.ContinueCall = false;

                var errorMessage = validationErrorMessage.Aggregate((v, c) => v + Environment.NewLine + c);

                if (context.ResponseMessage is ErrorResponseMessage currentResponse)
                {
                    errorMessage += currentResponse.Error;
                }

                context.ResponseMessage = new ErrorResponseMessage(JsonRpcErrorCode.InvalidRequest, errorMessage, context.RequestMessage.Version, context.RequestMessage.Id);
            }
        }
Exemplo n.º 3
0
        private static void SetErrorResponse(ICallExecutionContext context, string errorMessage)
        {
            context.ContinueCall = false;

            if (context.ResponseMessage is ErrorResponseMessage currentError)
            {
                errorMessage = currentError.Error + errorMessage;
            }

            context.ResponseMessage = new ErrorResponseMessage(JsonRpcErrorCode.InvalidRequest, errorMessage,
                                                               context.RequestMessage.Version, context.RequestMessage.Id);
        }
Exemplo n.º 4
0
        public void BeforeExecute(ICallExecutionContext context)
        {
            var objectValue = context.Parameters[_parameterIndex];

            if (objectValue == null)
            {
                if (_required)
                {
                    SetErrorResponse(context, $"{_parameterName} is required");
                }

                return;
            }

            var validationErrors = ImmutableLinkedList <ValidationFailure> .Empty;

            var value = (T)objectValue;

            for (var i = 0; i < _validators.Length; i++)
            {
                var result = _validators[i].Validate(value);

                if (!result.IsValid)
                {
                    validationErrors = validationErrors.AddRange(result.Errors);
                }
            }

            if (validationErrors == ImmutableLinkedList <ValidationFailure> .Empty)
            {
                return;
            }

            var errorMessage = $"Validation Errors {_parameterName}" + Environment.NewLine;

            var failed = false;

            foreach (var failure in validationErrors)
            {
                if (failure.Severity == Severity.Error)
                {
                    failed = true;
                }

                errorMessage += failure.ErrorMessage;
            }

            if (failed)
            {
                SetErrorResponse(context, errorMessage);
            }
        }
Exemplo n.º 5
0
 /// <summary>
 /// Called after the execution
 /// </summary>
 /// <param name="context"></param>
 public void AfterExecute(ICallExecutionContext context)
 {
 }
Exemplo n.º 6
0
 /// <summary>
 /// Called before the execution happens.
 /// </summary>
 /// <param name="context"></param>
 public void BeforeExecute(ICallExecutionContext context)
 {
 }
Exemplo n.º 7
0
 public Task <bool> AsyncAuthorize(ICallExecutionContext context)
 {
     return(context.HttpContext.RequestServices.GetRequiredService <IAuthorizationService>().
            AuthorizeAsync(context.HttpContext.User, _policy));
 }
Exemplo n.º 8
0
 public async Task HandleException(ICallExecutionContext context, Exception exception)
 {
     // rollback transaction
 }
Exemplo n.º 9
0
 public async Task AfterExecute(ICallExecutionContext context)
 {
     // commit transaction
 }
Exemplo n.º 10
0
 public void AfterExecute(ICallExecutionContext context)
 {
     ExecuteCount++;
 }
Exemplo n.º 11
0
 public async Task AfterExecute(ICallExecutionContext context)
 {
     _connectionManager.CommitTransaction();
 }
Exemplo n.º 12
0
 public Task <bool> AsyncAuthorize(ICallExecutionContext context)
 {
     return(Task.FromResult(context.HttpContext.User?.Identity?.IsAuthenticated ?? false));
 }
Exemplo n.º 13
0
 private static IEnumerable <ICallFilter> CreateFilter <T>(ICallExecutionContext context) where T : ICallFilter
 {
     yield return(ActivatorUtilities.GetServiceOrCreateInstance <T>(context.HttpContext.RequestServices));
 }
Exemplo n.º 14
0
 public void BeforeExecute(ICallExecutionContext context)
 {
     ExecuteCount++;
 }
Exemplo n.º 15
0
 /// <summary>
 /// Handle exception
 /// </summary>
 /// <param name="context"></param>
 /// <param name="exception"></param>
 public void HandleException(ICallExecutionContext context, Exception exception)
 {
 }
Exemplo n.º 16
0
 public async Task BeforeExecute(ICallExecutionContext context)
 {
     _connectionManager.BeginTransaction();
 }
Exemplo n.º 17
0
 public Task <bool> AsyncAuthorize(ICallExecutionContext context)
 {
     return(Task.FromResult(context.HttpContext.User?.IsInRole(_role) ?? false));
 }
Exemplo n.º 18
0
 public async Task HandleException(ICallExecutionContext context, Exception exception)
 {
     _connectionManager.RollbackTransaction();
 }
Exemplo n.º 19
0
 public async Task BeforeExecute(ICallExecutionContext context)
 {
     // open transaction
 }