예제 #1
0
        private HttpResponseMessage ProcessCommand()
        {
            var requestHandler = RequestHandlerFactory.GetHandler(this.Command);

            if (requestHandler != null)
            {
                requestHandler.Initialize(this.Device, this.RequestContent);
                var responseMessage = new HttpResponseMessage(HttpStatusCode.OK);
                var responseObj     = requestHandler.Handle();
                var responseXml     = responseObj.GetAsXML();

                var encoder = new ASWBXML();
                encoder.LoadXml(responseXml);
                var wbxmlContent = encoder.GetBytes();

                responseMessage.Content = new ByteArrayContent(wbxmlContent);
                responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-sync.wbxml");

                return(responseMessage);
            }
            else
            {
                //TODO: Return appropriate ResponseMessage
                //throw new InvalidCommandException(string.Format("Command {0} is not supported", this.Command.ToString()));
                return(new HttpResponseMessage(HttpStatusCode.BadRequest));
            }

            //TODO: Resturn Appropriate Response
            return(new HttpResponseMessage(HttpStatusCode.OK));
        }
예제 #2
0
        public ActionResult PostLogin(UserLoginViewModel model, string returnUrl)
        {
            try
            {
                var redirectUrl  = nameof(Login);
                var loginRequest = new LoginRequest
                {
                    Password = model.Password,
                    Username = model.UserName
                };

                var handlerFactory = new RequestHandlerFactory();
                var requestHandler = handlerFactory.GetHandler();

                requestHandler.HandleLoginQuery(loginRequest,
                                                // onSuccess
                                                async(user) =>
                {
                    await CreateCookie(user);
                    redirectUrl = returnUrl ?? "/Home";
                },
                                                //onFailure
                                                errorMessage => { TempData[errorMessageString] = errorMessage; });

                return(Redirect(redirectUrl));
            }
            catch (Exception ex)
            {
                TempData["Exception"] = ex;
                TempData["Model"]     = model;
                return(View("Error"));
            }
        }
예제 #3
0
        public async Task Handle(Message message)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            log.Trace("MessageType: '{0}'", message.MessageType.ToString());

            var     unwrapper = new MessageUnwrapper(message);
            Request request   = unwrapper.GetRequest();

            RequestHandler handler       = null;
            ErrorResponse  errorResponse = null;

            try
            {
                var factory = new RequestHandlerFactory(containerManager, jobManager, message.MessageType, request);
                handler = factory.GetHandler();
            }
            catch (Exception ex)
            {
                log.ErrorException(ex);
                errorResponse = new ErrorResponse {
                    Message = ex.Message
                };
            }

            if (errorResponse != null)
            {
                await messageWriter.WriteAsync(errorResponse);

                return;
            }

            try
            {
                var streamingHandler = handler as IStreamingHandler;
                if (streamingHandler != null)
                {
                    Response finalResponse = await streamingHandler.HandleAsync(messageWriter, cancellationToken);

                    if (finalResponse == null)
                    {
                        string errorMessage = String.Format("Null final response from streaming handler '{0}'", streamingHandler.GetType());
                        log.Error(errorMessage);
                        finalResponse = new ErrorResponse {
                            Message = errorMessage
                        };
                    }
                    await messageWriter.WriteAsync(finalResponse);

                    return;
                }
                else
                {
                    Response response = await handler.HandleAsync();

                    await messageWriter.WriteAsync(response);
                }
            }
            catch (Exception ex)
            {
                if (ex is WardenException)
                {
                    throw;
                }
                else
                {
                    throw new WardenException(String.Format("Exception in request handler '{0}'", handler.ToString()), ex);
                }
            }
            log.Trace("Finished handling message: '{0}'", message.MessageType.ToString());
        }