예제 #1
0
        public override async Task <GetProductResponse> GetProduct(GetProductRequest request, ServerCallContext context)
        {
            var productId = request.ProductId;

            if (productId == null)
            {
                throw new RpcException(new Status(StatusCode.InvalidArgument, "Invalid product id to GetProduct"));
            }

            var result = _ProductsDataStore.FirstOrDefault(predicate => predicate.Id == productId);

            if (result == null)
            {
                throw new RpcException(new Status(StatusCode.NotFound, $"The Product id {productId} wasn't found"));
            }

            Product.Product Product = new Product.Product()
            {
                Id          = result.Id,
                Name        = result.Name,
                Description = result.Description
            };
            return(await Task.FromResult(new GetProductResponse()
            {
                Product = Product
            }));
        }
예제 #2
0
        private static async Task AddMultipleProductsToCart()
        {
            var carttProduct = new Product.Product
            {
                Title = "Milk",
                Price = 10
            };


            var request = new AddMultipleProductsToCartRequest
            {
                Product = carttProduct
            };


            var stream = cartClient.AddMultipleProductsToCart();

            foreach (var item in Enumerable.Range(1, 10))
            {
                await stream.RequestStream.WriteAsync(request);

                Thread.Sleep(2000);
            }

            await stream.RequestStream.CompleteAsync();

            var response = await stream.ResponseAsync;

            Console.WriteLine($"Count: {response.Status}");
        }
예제 #3
0
        public Product.Product AddToCartDB(Product.Product product)
        {
            try
            {
                BsonDocument doc = new BsonDocument("title", product.Title)
                                   .Add("price", product.Price);

                mongoCollection.InsertOne(doc);

                var id = doc.GetValue("_id").ToString();
                product.Id = id;
            }
            catch (Exception ex)
            {
                return(null);
            }

            return(product);
        }
예제 #4
0
        private static async Task AddToCartUnary()
        {
            try
            {
                var product = new Product.Product();
                product.Title = "Pizza";
                product.Price = 107;

                var response = await cartClient.AddToCartAsync(new AddToCartRequest
                {
                    Product = product
                });

                Console.WriteLine($"New id: {response.Product.Id.ToLower()}");
            }
            catch (Exception ex)
            {
            }
        }
예제 #5
0
        private static void DeleteProduct(ProductService.ProductServiceClient client, Product.Product Product)
        {
            try
            {
                var response = client.DeleteProduct(new DeleteProductRequest()
                {
                    ProductId = Product.Id
                });

                Console.WriteLine("The Product with id " + Product.Id + " was deleted");
            }
            catch (RpcException e)
            {
                Console.WriteLine(e.Status.Detail);
            }
        }
예제 #6
0
        private static void UpdateProduct(ProductService.ProductServiceClient client, Product.Product Product)
        {
            try
            {
                var response = client.UpdateProduct(new UpdateProductRequest()
                {
                    Product = Product
                });

                Console.WriteLine(response.Product.ToString());
            }
            catch (RpcException e)
            {
                Console.WriteLine(e.Status.Detail);
            }
        }