Beispiel #1
0
        private async Task <ProductUserResponse> UpdateProductRetailer(RetailerResponse retailer, bool isDeleted = false)
        {
            var response = await GrpcCallerService.CallService(urlGrpc : GRPCUrl.ProductService, logger : _logger, func : async channel =>
            {
                var client = new ProductUser.ProductUserClient(channel);
                _logger.LogDebug("Grpc delete Retailer request {@request}", retailer);
                return(await client.UpdateRetailerAsync(new ProductUserRequest {
                    Id = retailer.Id, Name = retailer.Name, IsDeleted = isDeleted
                }));
            });

            return(response);
        }
Beispiel #2
0
        public async Task <CustomerResponse> UpdateCustomer([Required] CustomerUpdateRequest customerRequest)
        {
            var response = await GrpcCallerService.CallService(urlGrpc : GRPCUrl.IdentityService, logger : _logger, func : async channel =>
            {
                var client = new Customer.CustomerClient(channel);
                _logger.LogDebug("Grpc get customer request {@request}", customerRequest);
                var customer = await client.UpdateCustomerAsync(customerRequest);
                await UpdateProductCustomer(customer, false);
                return(customer);
            });

            return(response);
        }
Beispiel #3
0
        public async Task <CustomerResponse> Get([Required] Guid id)
        {
            var response = await GrpcCallerService.CallService(urlGrpc : GRPCUrl.IdentityService, logger : _logger, func : async channel =>
            {
                var client = new Customer.CustomerClient(channel);
                _logger.LogDebug("Grpc get customer request request {@request}", id);
                return(await client.GetCustomerAsync(new CustomerItemRequest {
                    Id = id.ToString()
                }));
            });

            return(response);
        }
        public async Task <UserModel> GetUserAsync(string id)
        {
            return(await GrpcCallerService.CallService(_urls.GrpcUsers, async channel =>
            {
                var client = new UsersGrpc.UsersGrpcClient(channel);

                var response = await client.GetUserAsync(new UserRequest {
                    Id = id
                });

                return MapToUserData(response);
            }));
        }
        public async Task <IEnumerable <WeatherDataItem> > GetFirst()
        {
            return(await GrpcCallerService.CallService(_urls.WeatherFirst, async httpClient =>
            {
                var channel = GrpcChannel.ForAddress(_urls.WeatherFirst);
                var client = new WeatherFirst.WeatherFirstClient(channel);
                _logger.LogDebug("grpc client created, request");
                var response = await client.GetAsync(new ApiFirst.Proto.WeatherRequest());
                _logger.LogDebug("grpc response {@response}", response);

                return MapToWeatherData(response);
            }));
        }
Beispiel #6
0
        public async Task <PaginatedItemsResponse> Get([Required] ProductItemsRequest request)
        {
            if (!ModelState.IsValid)
            {
                throw new Exception("Invalid model");
            }
            var response = await GrpcCallerService.CallService(urlGrpc : GRPCUrl.IdentityService, logger : _logger, func : async channel =>
            {
                var client = new Product.ProductClient(channel);
                _logger.LogDebug("Grpc get products request {@request}", request);
                return(await client.GetProductsAsync(request));
            });

            return(response);
        }
Beispiel #7
0
        public async Task <BasketResponse> RemoveToBasket([Required] BasketRequest request)
        {
            if (!ModelState.IsValid)
            {
                throw new Exception("Invalid model");
            }
            var response = await GrpcCallerService.CallService(urlGrpc : GRPCUrl.ProductService, logger : _logger, func : async channel =>
            {
                var client = new Basket.BasketClient(channel);
                _logger.LogDebug("Grpc remove backet {@request}", request);
                return(await client.RemoveFromBasketAsync(request));
            });

            return(response);
        }
Beispiel #8
0
        public async Task <LogoutResponse> Logout([Required] LogoutRequest request)
        {
            if (!ModelState.IsValid)
            {
                throw new Exception("Invalid model");
            }
            var response = await GrpcCallerService.CallService(urlGrpc : GRPCUrl.IdentityService, logger : _logger, func : async channel =>
            {
                var client = new Auth.AuthClient(channel);
                _logger.LogDebug("Grpc auth logout {@request}", request);
                return(await client.LogoutAsync(request));
            });

            return(response);
        }
Beispiel #9
0
        public async Task <RetailerResponse> DeleteCustomer([Required] Guid id)
        {
            var response = await GrpcCallerService.CallService(urlGrpc : GRPCUrl.IdentityService, logger : _logger, func : async channel =>
            {
                var client = new Retailer.RetailerClient(channel);
                _logger.LogDebug("Grpc delete Retailer request {@request}", id);
                var retailer = await client.DeleteRetailerAsync(new RetailerItemRequest {
                    Id = id.ToString()
                });
                await UpdateProductRetailer(retailer, true);
                return(retailer);
            });

            return(response);
        }
Beispiel #10
0
        public async Task SubscribeToUsersStatusUpdatesAsync(string userId, string connectionId, params string[] usersIds)
        {
            await GrpcCallerService.CallService(_urls.GrpcNotifications, async channel =>
            {
                var client = new NotificationsGrpc.NotificationsGrpcClient(channel);

                var request = new ConnectionsUpdatesRequest
                {
                    UserId       = userId,
                    ConnectionId = connectionId
                };
                request.UsersIds.AddRange(usersIds);

                await client.SubscribeToUsersStatusUpdatesAsync(request);
            });
        }
Beispiel #11
0
        public async Task <IActionResult> NewPass(int rut)
        {
            var person = await mediator.Send(new NewPassQuery(rut));

            await GrpcCallerService.CallService(_urls.GrpcMail, channel =>
            {
                var client = new Mailer.MailerClient(channel);
                client.MailChagedPassword(new MailRequest
                {
                    CuentaDestino = person.CORREO_ELECTRONICO,
                    Nombre        = person.NOMBRE_COMPLETO,
                    IdPersona     = person.ID_PER,
                    CodEmail      = 1
                });

                return(Task.CompletedTask);
            });

            return(Ok(person));
        }
        public void OnAuthorization(AuthorizationFilterContext filterContext)
        {
            try
            {
                var skipAuthorization = (filterContext.ActionDescriptor as ControllerActionDescriptor)
                                        .MethodInfo.GetCustomAttributes(typeof(AllowAnonymousAttribute), true);
                if (skipAuthorization.Length > 0)
                {
                    return;
                }
                var tokenString = filterContext.HttpContext.Request.Headers["Authorization"].ToString();
                if (string.IsNullOrWhiteSpace(tokenString))
                {
                    throw new UnauthorizedAccessException();
                }

                var response = Task.Run(async() =>
                                        await GrpcCallerService.CallService(urlGrpc: GRPCUrl.IdentityService, logger: null,
                                                                            func: async channel =>
                {
                    var client = new Auth.AuthClient(channel);
                    return(await client.ValidTokenAsync(new TokenRequest {
                        Token = tokenString
                    }));
                }))
                               .ConfigureAwait(false).GetAwaiter().GetResult();

                if (!response.IsValid)
                {
                    throw new UnauthorizedAccessException();
                }

                SetClaim(filterContext: filterContext, response: response);
            }
            catch (Exception ex)
            {
                throw new UnauthorizedAccessException();
            }
        }