private static async Task InsertBulkProduct(ProductsProtoService.ProductsProtoServiceClient client) { Console.WriteLine("InsertBulkProduct started.."); using var clientBulk = client.InsertBulkProduct(); for (int i = 0; i < 3; i++) { var productModel = new ProductModel { Created = Timestamp.FromDateTime(DateTime.UtcNow), Description = "Bulk Added Product", Name = $"Name {i}", Price = 100 * i, Status = ProductStatus.Instock }; await clientBulk.RequestStream.WriteAsync(productModel); } await clientBulk.RequestStream.CompleteAsync(); var responseBulk = await clientBulk; Console.WriteLine("InsertBulkProduct ended.."); Console.WriteLine($"Status {responseBulk.Success} Inserted: {responseBulk.InsertCount}"); }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { int delay = _config.GetValue <int>("WorkerService:TaskInterval"); await Task.Delay(delay, stoppingToken); _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); // Get Token var token = await GetTokenFromIS(); //create Sopping cart //Retrieve products from server //add products to a sc using var scChannel = GrpcChannel .ForAddress(_config.GetValue <string>("WorkerService:ShoppingCartServerUrl")); //get SC var scClient = new ShoppingCartProtoService.ShoppingCartProtoServiceClient(scChannel); var scModel = await GetOrCreateShoppingCartAsync(scClient, token); //open shopping cart stream using var scClientStream = scClient.AddItemIntoShoppingCart(); //retrive products using var productChannel = GrpcChannel .ForAddress(_config.GetValue <string>("WorkerService:ProductServerUrl")); var productClient = new ProductsProtoService.ProductsProtoServiceClient(productChannel); _logger.LogInformation("GetAllProducts --->"); using var _clientData = productClient.GetAllProducts(new GetAllProductRequest()); await foreach (var responseData in _clientData.ResponseStream.ReadAllAsync()) { Console.WriteLine("currentProduct - " + responseData.ToString()); var addNewScItem = new AddItemIntoShoppingCartRequest { Username = _config.GetValue <string>("WorkerService:UserName"), DiscountCode = "CODE_90", NewCartItem = new ShoppingCartItemModel { Color = "red", Price = responseData.Price, ProductId = responseData.ProductId, ProductName = responseData.Name, Quantity = 1 } }; await scClientStream.RequestStream.WriteAsync(addNewScItem); } await scClientStream.RequestStream.CompleteAsync(); var addItemIntoSCResponce = await scClientStream; _logger.LogInformation($"Added {addItemIntoSCResponce.InsertCount} products to a shopping cart"); } }
private static async Task GetAllProductsAsync(ProductsProtoService.ProductsProtoServiceClient client) { Console.WriteLine("GetAllProducts started.."); using var _clientData = client.GetAllProducts(new GetAllProductRequest()); await foreach (var responseData in _clientData.ResponseStream.ReadAllAsync()) { Console.WriteLine("currentProduct - " + responseData.ToString()); } }
private static async Task GetProductAsync(ProductsProtoService.ProductsProtoServiceClient client) { Console.WriteLine("GetProductAsync started.."); var response = await client.GetProductAsync( new GetProductRequest { ProductId = 1 }); Console.WriteLine("response - " + response.ToString()); }
private static async Task DeleteProductsAsync(ProductsProtoService.ProductsProtoServiceClient client) { Console.WriteLine("DeleteProductsAsync started.."); var deleteReponse = await client.DeleteProductAsync( new DeleteProductRequest { ProductId = 2, }); Console.WriteLine("DeleteProductsAsync response.. " + deleteReponse.ToString()); }
static async Task Main(string[] args) { using var channel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new ProductsProtoService.ProductsProtoServiceClient(channel); await Task.Delay(1000); try { await GetProductAsync(client); await Task.Delay(500); await AddProductAsync(client); await Task.Delay(500); await UpdateProductsAsync(client); await Task.Delay(500); await DeleteProductsAsync(client); await Task.Delay(500); await GetAllProductsAsync(client); await Task.Delay(500); await InsertBulkProduct(client); await Task.Delay(500); await GetAllProductsAsync(client); await Task.Delay(500); } catch (RpcException ex) { Console.WriteLine(ex.Status.Detail); } Console.ReadKey(); }
private static async Task UpdateProductsAsync(ProductsProtoService.ProductsProtoServiceClient client) { Console.WriteLine("UpdateProductsAsync started.."); var updateReponse = await client.UpdateProductAsync( new UpdateProductRequest { Product = new ProductModel { Created = Timestamp.FromDateTime(DateTime.UtcNow), Description = "Updated Product", Name = "Name", Price = 1799, Status = ProductStatus.Instock, ProductId = 1 } }); Console.WriteLine("UpdateProductsAsync response.. " + updateReponse.ToString()); }
private static async Task AddProductAsync(ProductsProtoService.ProductsProtoServiceClient client) { Console.WriteLine("AddProductAsync started.."); var addProductResponse = await client.AddProductAsync( new AddProductRequest { Product = new ProductModel { Created = Timestamp.FromDateTime(DateTime.UtcNow), Description = "Added Product", Name = "Name", Price = 1799, Status = ProductStatus.Instock } } ); Console.WriteLine("GetAllProducts started.." + addProductResponse.ToString()); }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { await Task.Delay(_config.GetValue <int>("WorkerService:TaskInterval"), stoppingToken); while (!stoppingToken.IsCancellationRequested) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); using var channel = GrpcChannel.ForAddress(_config.GetValue <string>("WorkerService:ServerUrl")); var client = new ProductsProtoService.ProductsProtoServiceClient(channel); _logger.LogInformation("AddProduct started"); var addProductResponse = await client.AddProductAsync(await _factory.Generate()); _logger.LogInformation("AddProduct - " + addProductResponse.ToString()); await Task.Delay(_config.GetValue <int>("WorkerService:TaskInterval"), stoppingToken); } }