public bool IsValid(ISiteRequest <ISiteData> request, out ErrorMessage errorMessage)
        {
            errorMessage = null;
            var requestData = request.Payload;

            if (requestData is UserCredentials)
            {
                return(_newUserSessionRequestRequestValidator.IsValid((UserCredentials)requestData, out errorMessage));
            }
            if (requestData is NewUser)
            {
                return(_registrationValidator.IsValid((NewUser)requestData, out errorMessage));
            }

            errorMessage = new ErrorMessage(ErrorCode.RequestTypeNotSupported);
            return(false);
        }
示例#2
0
        private bool TryApplyToState <T>(ISiteRequest <T> request, IResponse response)
        {
            switch (request.RequestType)
            {
            case RequestType.Create:
                AddToState(response);
                return(true);

            case RequestType.Delete:
                return(TryDeleteFromState(out response));

            case RequestType.Update:
                return(TryUpdateState(out response));

            default:
                return(false);
            }
        }
示例#3
0
        public bool ProcessRequest(ISiteRequest <ISiteData> request, out IResponse response)
        {
            ErrorMessage error;

            if (!_siteRequestValidator.IsValid(request, out error))
            {
                response = new SiteResponse().SetErrorResponse(error);
                return(false);
            }

            if (!_processor.TryProcess(request.RequestType, request.Payload, out response) && response != null)
            {
                return(false);
            }

            if (request.RequestType == RequestType.Read || request.RequestType == RequestType.ReadAll)
            {
                return(TryReadFromState(request.Payload ?? (ISiteData)Activator.CreateInstance(request.PayloadType),
                                        out response));
            }


            return(TryApplyToState(request, response));
        }