コード例 #1
0
        private static async Task Handle(Message message, CancellationToken arg2)
        {
            Console.WriteLine($"message Label: {message.Label}");
            Console.WriteLine($"message CorrelationId: {message.CorrelationId}");
            var newOrderString = Encoding.UTF8.GetString(message.Body);

            var order = JsonConvert.DeserializeObject <NewOrderMessage>(newOrderString);

            var _orderToUpsert = new OrderToUpsert();

            _orderToUpsert.OrderId     = order.OrderId;
            _orderToUpsert.Products    = order.Products;
            _orderToUpsert.Productions = order.ProductionIds;


            Console.WriteLine("Message Received");
            Console.WriteLine(newOrderString);

            //Thread.Sleep(40000);


            var client   = new HttpClient();
            var byteData = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(_orderToUpsert));
            var content  = new ByteArrayContent(byteData);

            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            var _policyRegistry = new PolicyRegistry();
            var apiUrl          = "/api/order";
            var _baseUri        = "http://localhost:5009/";

            var retryPolicy = _policyRegistry.Get <IAsyncPolicy <HttpResponseMessage> >("basic-retry")
                              ?? Policy.NoOpAsync <HttpResponseMessage>();

            var context = new Context($"GetSomeData-{Guid.NewGuid()}", new Dictionary <string, object>
            {
                { "url", apiUrl }
            });

            var retries = 0;
            // ReSharper disable once AccessToDisposedClosure
            var response = await retryPolicy.ExecuteAsync((ctx) =>
            {
                client.DefaultRequestHeaders.Remove("retries");
                client.DefaultRequestHeaders.Add("retries", new[] { retries++.ToString() });

                var baseUrl = _baseUri;
                var isValid = Uri.IsWellFormedUriString(apiUrl, UriKind.Absolute);

                return(client.PostAsync(isValid ? $"{baseUrl}{apiUrl}" : $"{baseUrl}/api/Order", content));
            }, context);

            content.Dispose();

            return;
        }
コード例 #2
0
        public IActionResult PostOrder([FromBody] OrderToUpsert order)
        {
            ShowDisplayMessage showDisplayMessage = new ShowDisplayMessage();

            showDisplayMessage.Properties = new Dictionary <String, Object>();
            showDisplayMessage.Properties.Add("ServicoEnvio", "GeekBurger.UI");

            showDisplayMessage.Label = "NewOrder";
            showDisplayMessage.Body  = order;
            _showDisplayService.AddMessage(showDisplayMessage);
            _showDisplayService.SendMessagesAsync(Topics.neworder);


            return(CreatedAtRoute("GetFace",
                                  new { OrderId = orderToGet.OrderId },
                                  orderToGet));
        }
コード例 #3
0
        public IActionResult AddOrder([FromBody] OrderToUpsert orderToAdd)
        {
            if (orderToAdd == null)
            {
                return(BadRequest());
            }

            var order = _mapper.Map <Order>(orderToAdd);

            _ordersRepository.Add(order);
            _ordersRepository.Save();

            var orderToGet = _mapper.Map <OrderToGet>(order);

            return(CreatedAtRoute("GetOrder",
                                  new { id = orderToGet.OrderId },
                                  orderToGet));
        }
コード例 #4
0
        public IActionResult CreateOrder([FromBody] OrderToUpsert orderToAdd)
        {
            if (orderToAdd == null)
            {
                return(BadRequest());
            }

            var order = _mapper.Map <Order>(orderToAdd);

            if (order.StoreId == Guid.Empty)
            {
                return(new UnprocessableEntityResult(ModelState));
            }

            _ordersRepository.Add(order);
            _ordersRepository.Save();

            var orderToGet = _mapper.Map <OrderToGet>(order);

            return(CreatedAtRoute(new { OrderId = orderToGet.OrderId }, orderToGet));
        }