public static HTTPRequest_RetailerToClientGateway AttemptToViewProducts(HTTPRequest_ClientToGateway request) { Cookie userCookie = request.Cookie; Console.WriteLine("Checkin if user string is valid, info received - USERACCOUNTSTRING: " + userCookie.CurrentCookieString); //Todo: remember to verify password and not just username. HTTPRequest_RetailerToClientGateway response = new HTTPRequest_RetailerToClientGateway(); response.Cookie = userCookie; if (_RequiresLogin == false || Cookie.ServerCheckIsValidUserString(userCookie.CurrentCookieString)) //If doesn't require login or login is verifiable. { Console.WriteLine("Valid user account string, responding with product list."); #region Construct response with list of products. //Get product list from warehouse HTTPRequest_RetailToWarehouse requestToForward = new HTTPRequest_RetailToWarehouse(); requestToForward.WarehouseCmd = HTTPRequest_RetailToWarehouse.WarehouseCommand.ViewProducts; RetailToWarehouseCtrl_TopicBased rtwhctrl = new RetailToWarehouseCtrl_TopicBased(); HTTPRequest_WarehouseToRetail wrhouseResponse = rtwhctrl.PublishToWarehouse(request.Location, requestToForward, RetailToWarehouseCtrl_TopicBased.WhichWarehouses.All); //rtwhctrl.SubscribeToWarehouse(request.Location, requestToForward, RetailToWarehouseCtrl_TopicBased.WhichWarehouses.All); response.Products = wrhouseResponse.Products; //response.Products = getTestProductList(); #endregion return(response); } else { Console.WriteLine("User account string could not be verified."); return(response); } }
void HandleResponse(HTTPRequest_RetailToWarehouse request) { Console.WriteLine("Received command: " + request.WarehouseCmd); HTTPRequest_WarehouseToRetail response = new HTTPRequest_WarehouseToRetail(); response.WarehouseCmd = request.WarehouseCmd; switch (request.WarehouseCmd) { case HTTPRequest_RetailToWarehouse.WarehouseCommand.ViewProducts: response.Products = products; ware_Publisher.Publish(id, topic, response); break; case HTTPRequest_RetailToWarehouse.WarehouseCommand.PurchaseProducts: break; default: break; } //Console.ForegroundColor = ConsoleColor.Red; //Console.WriteLine("Got message: {0}", product.ID); //Console.WriteLine(product.Name); //Console.WriteLine(product.Description); //Console.WriteLine(product.Quantity); //Console.WriteLine(); //Console.ResetColor(); }
public HTTPRequest_WarehouseToRetail PublishToWarehouse(Location location, HTTPRequest_RetailToWarehouse request, WhichWarehouses whichWarehouses = WhichWarehouses.All) { string topic = GetTopic(location, whichWarehouses); using (bus) { Console.WriteLine("Publishing with topic: " + topic); //var message = new TextMessage { Text = topic }; bus.Publish <HTTPRequest_RetailToWarehouse>(request, topic); Console.WriteLine("Subscribing to topic: " + topic); bus.Subscribe <HTTPRequest_WarehouseToRetail>("subscriber" + id, HandleResponse, x => x.WithTopic(topic)); Console.WriteLine("Listening for messages."); lock (this) { gotReply = Monitor.Wait(this, 3000); } if (gotReply) { return(toReturn); } else { return(new HTTPRequest_WarehouseToRetail()); } } }