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); }
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); }
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))); }