public static HTTPRequest_RetailerToClientGateway AttemptLogin(HTTPRequest_ClientToGateway request)
        {
            User user = request.User;

            Console.WriteLine("Checkin if user is valid, info received - USERNAME: "******" PASSWORD: "******"Valid user, sending verification cookie.");
                Cookie cookie = new Cookie();
                cookie.CurrentCookieString = GetUserAccountString(user.userName);
                #region Create HTTP response

                response.Cookie = cookie;
                //response.Basket = BasketManager.Singleton().GetUserBasket(request.Cookie.CurrentCookieString);
                //if (response.Basket == null)
                //{
                //    response.Basket = new Baskets();
                //}
                response.Products = RetailRequestResponse_ViewProducts.getTestProductList();
                #endregion
            }
            else
            {
                Cookie cookie = new Cookie();
                cookie.CurrentCookieString = "NotLoggedIn";
                response.Cookie            = cookie;
                Console.WriteLine("User could not be verified.");
            }
            return(response);
        }
        public static void ReceiveAndHandleRequests()
        {
            using (var bus = RabbitHutch.CreateBus("host=localhost;timeout=4"))
            {
                bus.RespondAsync <HTTPRequest_ClientToGateway, HTTPRequest_RetailerToClientGateway>(request => Task.Factory.StartNew(() =>
                {
                    Console.WriteLine("Command type received: " + request.RetailCmd);
                    HTTPRequest_RetailerToClientGateway response = new HTTPRequest_RetailerToClientGateway();
                    response.Cookie = request.Cookie;
                    switch (request.RetailCmd)
                    {
                    case HTTPRequest_ClientToGateway.RetailCommand.Login:
                        response = RetailRequestResponse_Login.AttemptLogin(request);
                        break;

                    case HTTPRequest_ClientToGateway.RetailCommand.AddProduct:
                        response = RetailRequestResponse_Basket.AttemptToAddProduct(request);
                        break;

                    case HTTPRequest_ClientToGateway.RetailCommand.RemoveProduct:
                        break;

                    case HTTPRequest_ClientToGateway.RetailCommand.ViewAllProducts:
                        response = RetailRequestResponse_ViewProducts.AttemptToViewProducts(request);
                        break;

                    default:
                        break;
                    }
                    response.RetailCmd = request.RetailCmd;
                    return(response);
                }
                                                                                                                                     ));
                Console.WriteLine("Listening for client commands. Hit >ENTER< to quit.");
                Console.ReadLine();
            }
        }