예제 #1
0
 public ActionResult <Comment> Create([FromBody] CommentPayload payload)
 {
     try
     {
         var commentToAdd = new Comment
         {
             Author   = payload.Author,
             BodyComm = payload.BodyComm,
             PostId   = payload.PostId
         };
         _db.Comments.Add(commentToAdd);
         _db.SaveChanges();
         return(Ok(commentToAdd));
     }
     catch (Exception)
     {
         return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
     }
 }
예제 #2
0
        public IActionResult AddComment([FromBody] CommentPayload payload)
        {
            String[] authorization = Request.Headers["authorization"].ToString().Split(" ");
            String   token         = authorization[1];
            String   userId        = ((JwtSecurityToken) new JwtSecurityTokenHandler().ReadToken(token)).Claims.First(claim => claim.Type == "id").Value;

            try
            {
                Comment comment = new Comment
                {
                    Text   = payload.Text,
                    Date   = DateTime.Now,
                    PostId = payload.PostId,
                    UserId = Int32.Parse(userId)
                };
                _db.Comments.Add(comment);
                _db.SaveChanges();
                return(Ok(new { message = "comment added" }));
            }catch (Exception ex)
            {
                return(StatusCode(500, $"Internal server error {ex}"));
            }
        }
예제 #3
0
    public async Task Handle(CommentNotification notification, CancellationToken cancellationToken)
    {
        var payload = new CommentPayload(
            notification.Username,
            notification.Email,
            notification.IPAddress,
            notification.PostTitle,
            ContentProcessor.MarkdownToContent(notification.CommentContent, ContentProcessor.MarkdownConvertType.Html),
            notification.CreateTimeUtc
            );

        var response = await _client.SendNotification(MailMesageTypes.NewCommentNotification, payload);

        var respBody = await response.Content.ReadAsStringAsync(cancellationToken);

        if (response.IsSuccessStatusCode)
        {
            _logger.LogInformation($"Email is sent, server response: '{respBody}'");
        }
        else
        {
            throw new($"Email sending failed, response code: '{response.StatusCode}', response body: '{respBody}'");
        }
    }
예제 #4
0
        public ActionResult <Comment> AddComment([FromBody] CommentPayload payload)
        {
            var token      = HttpContext.Request.Headers["token"].ToString();
            var validation = ValidateJwtToken(token);

            if (validation != null)
            {
                if (payload.UserId != validation)
                {
                    return(new StatusCodeResult(StatusCodes.Status401Unauthorized));
                }
                try
                {
                    var commentToAdd = new Comment
                    {
                        UserId   = payload.UserId,
                        Text     = payload.Text,
                        PostId   = payload.PostId,
                        Username = payload.Username,
                    };

                    _db.Comments.Add(commentToAdd);
                    _db.SaveChanges();

                    return(Ok(commentToAdd));
                }
                catch (Exception)
                {
                    return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
                }
            }
            else
            {
                return(new StatusCodeResult(StatusCodes.Status401Unauthorized));
            }
        }