/// <summary> /// /// </summary> /// <param name="request"></param> /// <param name="context"></param> /// <returns></returns> public override Task <NewPassReply> NewPass(NewPassRequest request, ServerCallContext context) { var person = _mediator.Send(new NewPassQuery(request.Rut)); if (person.Result.ERROR == TechnicalResponse.ErrorCode.None) { var channel = GrpcChannel.ForAddress(_configuration.GetSection("Mail").GetSection("url").Value); var client = new Mailer.MailerClient(channel); var reply = client.MailChagedPassword(new MailRequest { CuentaDestino = person.Result.CORREO_ELECTRONICO, Nombre = person.Result.NOMBRE_COMPLETO, IdPersona = person.Result.ID_PER, CodEmail = 1 }); var error = reply.Error; //Que se hace con el error } return(Task.FromResult(new NewPassReply { //Error = (ErrorCode)person.Result.ERROR })); }
public MailService(ILogger <MailService> logger, IConfiguration configuration) { _logger = logger; // Setup gRPC server connection to mail sevrver. var channel = GrpcChannel.ForAddress(configuration["MailServerAddr"]); _grpcClinet = new Mailer.MailerClient(channel); }
static async Task Main(string[] args) { var mailboxName = GetMailboxName(args); // Server will only support Https on Windows and Linux var credentials = RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? ChannelCredentials.Insecure : ClientResources.SslCredentials; var channel = new Channel("localhost:50051", credentials); Console.WriteLine($"Connecting to mailbox '{mailboxName}'"); Console.WriteLine(); await channel.ConnectAsync(); Console.WriteLine("Connected"); Console.WriteLine("Press escape to disconnect. Press any other key to forward mail."); var client = new Mailer.MailerClient(channel); using (var mailbox = client.Mailbox(headers: new Metadata { new Metadata.Entry("mailbox-name", mailboxName) })) { _ = Task.Run(async() => { while (await mailbox.ResponseStream.MoveNext(CancellationToken.None)) { var response = mailbox.ResponseStream.Current; Console.ForegroundColor = response.Reason == MailboxMessage.Types.Reason.Received ? ConsoleColor.White : ConsoleColor.Green; Console.WriteLine(); Console.WriteLine(response.Reason == MailboxMessage.Types.Reason.Received ? "Mail received" : "Mail forwarded"); Console.WriteLine($"New mail: {response.New}, Forwarded mail: {response.Forwarded}"); Console.ResetColor(); } }); while (true) { var result = Console.ReadKey(intercept: true); if (result.Key == ConsoleKey.Escape) { break; } await mailbox.RequestStream.WriteAsync(new ForwardMailMessage()); } await mailbox.RequestStream.CompleteAsync(); } Console.WriteLine("Disconnecting"); await channel.ShutdownAsync(); Console.WriteLine("Disconnected. Press any key to exit."); Console.ReadKey(); }
private void InitDBMailQueue(CancellationToken stoppingToken) { var _client = new Mailer.MailerClient(_dbGrpcChannel.Channel); foreach (var type in Enum.GetValues <DBMailQueueType>()) { var proxy = new DBMailCallProxy(_client, _dbMailQueueRepository, type, _logger); proxy.Start(); _dbMailCallProxies.Add(proxy); } }
static async Task Main(string[] args) { var mailboxName = GetMailboxName(args); Console.WriteLine($"Creating client to mailbox '{mailboxName}'"); Console.WriteLine(); var channel = GrpcChannel.ForAddress("https://localhost:5001"); var invoker = channel.Intercept(new ClientLoggerInterceptor()); var client = new Mailer.MailerClient(invoker); Console.WriteLine("Client created."); Console.WriteLine("Press escape to disconnect. Press any other key to forward mail."); using (var call = client.Mailbox(headers: new Grpc.Core.Metadata { new Metadata.Entry("mailbox-name", mailboxName) })) { var responseTask = Task.Run(async() => { await foreach (var message in call.ResponseStream.ReadAllAsync()) { Console.ForegroundColor = message.Reason == MailboxMessage.Types.Reason.Received ? ConsoleColor.White : ConsoleColor.Green; Console.WriteLine(); Console.WriteLine(message.Reason == MailboxMessage.Types.Reason.Received ? "Mail received" : "Mail forwarded"); Console.WriteLine($"New mail:{message.New},Forwarded mail:{message.Forwarded}"); Console.ResetColor(); } }); while (true) { var result = Console.ReadKey(intercept: true); if (result.Key == ConsoleKey.Escape) { break; } await call.RequestStream.WriteAsync(new ForwardMailMessage()); } Console.WriteLine("Disconnecting"); await call.RequestStream.CompleteAsync(); await responseTask; } Console.WriteLine("Disconnected. Press any key to exit..."); Console.ReadKey(); }
public DBMailCallProxy(Mailer.MailerClient client, DBMailQueueRepository dbMailQueueRepository, DBMailQueueType type, ILogger logger) { _client = client; _dbMailQueueRepository = dbMailQueueRepository; _type = type; _logger = logger; _mailChannel = Channel.CreateUnbounded <MailPacket>(); var outgoMailQueue = _dbMailQueueRepository.GetOrAddOutgoMailQueue(_type); outgoMailQueue.OnRead += OnRead; EventCancelled += OnCancelled; }
public override async Task OnConnectedAsync() { var userId = long.Parse(Context.UserIdentifier); var nickname = Context.User.FindFirst("nickname").Value; var headicon = Context.User.FindFirst("headicon").Value; var mailMetadata = new Mail.MailMetadata { UserId = userId, NickName = nickname, HeadIcon = headicon }; var _client = new Mailer.MailerClient(ChannelService.Channel); var _call = _client.Mailbox(headers: new Metadata { new Metadata.Entry("mailbox-name", "agent"), new Metadata.Entry("metadata" + Metadata.BinaryHeaderSuffix, mailMetadata.ToByteArray()) }); Context.Items.Add("_client", _client); Context.Items.Add("_call", _call); var CancellationToken = Context.ConnectionAborted; var ConnectionId = Context.ConnectionId; var HttpContext = Context.GetHttpContext(); _ = Task.Run(async() => { await foreach (var message in _call.ResponseStream.ReadAllAsync()) { var packet = new NetPacket { Id = message.Id, Content = message.Content.ToBase64(), Reserve = message.Reserve }; await _hubContext.Clients.Client(ConnectionId).SendAsync("StoCMessage", packet); if (message.Id == 999999) { break; } } if (!CancellationToken.IsCancellationRequested) { HttpContext.Abort(); } //Console.ForegroundColor = ConsoleColor.Green; //Console.WriteLine("!!!end"); //Console.ResetColor(); }); await base.OnConnectedAsync(); }
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)); }
/// <summary> /// API constructor /// </summary> protected EmailClient(GrpcChannel channel) { m_channel = channel; m_client = new Mailer.MailerClient(m_channel); }