示例#1
0
        public async Task <BaseResponse <MailgunMessage> > update(MailgunMessageRequest messageRequest)
        {
            var message = _mapper.Map <MailgunMessage>(messageRequest);

            MailgunMessage messageFound = null;

            var finalResponse = BaseResponseFactory <MailgunMessage> .CreateDefaultBaseResponse();

            var filter = false;

            if (messageRequest.Token.NotEmpty())
            {
                messageFound = await _context.MailgunMessages.FirstOrDefaultAsync(e => e.Token == messageRequest.Token);

                if (messageFound == null)
                {
                    finalResponse.Errors.Add(new ApiError {
                        description = "Token not found."
                    });
                }

                filter = true;
            }

            if (messageRequest.MessageId.NotEmpty())
            {
                messageFound = await _context.MailgunMessages.FirstOrDefaultAsync(e => e.MessageId == messageRequest.MessageId);

                if (messageFound == null)
                {
                    finalResponse.Errors.Add(new ApiError {
                        description = "MessageId not found."
                    });
                }

                filter = true;
            }

            if (messageFound != null)
            {
                _context.Attach(messageFound).State = EntityState.Modified;
                await _context.SaveChangesAsync();

                finalResponse.Data.Add(messageFound);
            }

            if (!filter)
            {
                finalResponse.Errors.Add(new ApiError {
                    description = "inform either MessageId or Token to delete."
                });
            }

            return(finalResponse);
        }
示例#2
0
        public async Task <BaseResponse <MailgunMessage> > create(MailgunMessageRequest messageRequest)
        {
            var response = BaseResponseFactory <MailgunMessage> .CreateDefaultBaseResponse();

            messageRequest.RemoteIpAddress = _accessor.HttpContext.Connection.RemoteIpAddress.ToString();

            var message = _mapper.Map <MailgunMessage>(messageRequest);

            var tokenFound = await _context.MailgunMessages.FirstOrDefaultAsync(e => e.Token == message.Token);

            if (tokenFound != null)
            {
                response.Errors.Add(new ApiError {
                    description = "Token already used."
                });
                return(response);
            }

            var mailgunApiToken = Encoding.ASCII.GetBytes(_options.Value.mailgunApiToken);
            var hash            = new HMACSHA256(mailgunApiToken);

            if (BitConverter.ToString(hash.ComputeHash(Encoding.ASCII.GetBytes(message.Timestamp + message.Token))).Replace("-", "").ToLower().Equals(message.Signature))
            {
                message.Valid = true;
            }

            message.Validated = DateTime.Now;

            await _context.AddAsync(message);

            await _context.SaveChangesAsync();

            response.Data.Add(message);

            return(response);
        }
示例#3
0
        public async Task <BaseResponse <MailgunMessage> > delete(MailgunMessageRequest messageRequest)
        {
            var message = _mapper.Map <MailgunMessage>(messageRequest);

            MailgunMessage messageFound = null;

            var finalResponse = BaseResponseFactory <MailgunMessage> .CreateDefaultBaseResponse();

            IList <ApiError> errors = new List <ApiError>();

            var filter = false;

            if (messageRequest.Token.NotEmpty())
            {
                messageFound = await _context.MailgunMessages.FirstOrDefaultAsync(e => e.Token == message.Token);

                if (messageFound == null)
                {
                    errors.Add(new ApiError {
                        description = "Token not found."
                    });
                }

                filter = true;
            }

            if (messageRequest.MessageId.NotEmpty())
            {
                messageFound = await _context.MailgunMessages.FirstOrDefaultAsync(e => e.Id == Guid.Parse(message.MessageId));

                if (messageFound == null)
                {
                    errors.Add(new ApiError {
                        description = "MessageId not found."
                    });
                }

                filter = true;
            }

            if (messageFound != null)
            {
                _context.Remove(messageFound);
                await _context.SaveChangesAsync();

                finalResponse.Data.Add(messageFound);
            }

            if (!filter)
            {
                errors.Add(new ApiError {
                    description = "inform either MessageId or Token to delete."
                });
            }

            if (errors.Any())
            {
                finalResponse.Errors = errors.ToArray();
            }

            return(finalResponse);
        }
 public async Task <IActionResult> Post([FromForm] MailgunMessageRequest message)
 {
     return(Ok(await _messageService.create(message)));
 }
 public async Task <IActionResult> Delete(MailgunMessageRequest message)
 {
     return(Ok(await _messageService.delete(message)));
 }
 public async Task <IActionResult> Delete([FromBody] MailgunMessageRequest request)
 {
     return(Ok(await _messageService.delete(request)));
 }