예제 #1
0
        public IActionResult CreatePost([FromBody] PostPayload payload)
        {
            String[] authorization = Request.Headers["authorization"].ToString().Split(" ");
            var      token         = authorization[1];
            var      id            = ((JwtSecurityToken) new JwtSecurityTokenHandler().ReadToken(token)).Claims.First(claim => claim.Type == "id").Value;

            try
            {
                var newPost = new Post
                {
                    Title  = payload.Title,
                    Text   = payload.Text,
                    ImgUrl = payload.ImgUrl,
                    Date   = DateTime.Now,
                    UserId = Int32.Parse(id)
                };

                _db.Posts.Add(newPost);
                _db.SaveChanges();
                return(Ok(new { message = "success" }));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, $"Internal server error {ex}"));
            }
        }
 public IActionResult PostSomething(PostPayload postPayload)
 {
     return(Ok(new {
         RequestPayload = postPayload,
         Claims = User.Claims.Select(c => new {
             c.Type, c.Value
         })
     }));
 }
예제 #3
0
        public async Task <IActionResult> addpost([FromBody] PostPayload postPayload)
        {
            var post = new Post();

            post.UserName  = postPayload.UserName;
            post.imageLink = postPayload.imgLink;
            post.text      = postPayload.text;

            _db.Posts.Add(post);
            _db.SaveChanges();

            return(Ok(new { status = true }));
        }
예제 #4
0
        public async Task <ActionResult <SucceedInfomation> > createpostcontent([FromForm] PostPayload postpayload)
        {
            SucceedInfomation succeedinformation = new SucceedInfomation();
            post Newpost = new post()
            {
                posttitle = postpayload.posttitle
            };

            if (postpayload.imgfile == null || postpayload.posttitle.Length < 3)
            {
                succeedinformation.Issucceed     = false;
                succeedinformation.SucceedDetail = "Please complete the form";
                return(Ok(succeedinformation));
            }
            if (postpayload.imgfile.FileName.EndsWith(".jpg"))
            {
                Newpost.titleimgurl = await _imgservice.SaveFileJpg(postpayload.imgfile);
            }
            else if (postpayload.imgfile.FileName.EndsWith(".png"))
            {
                Newpost.titleimgurl = await _imgservice.SaveFilePng(postpayload.imgfile);
            }
            // else if(postpayload.imgfile.Length  == 0)
            // {
            //  succeedinformation.Issucceed = false;
            //  succeedinformation.SucceedDetail = "file format invalide , pls use jpg or png";
            //  return Ok(succeedinformation);
            // }
            content Newcontent = new content()
            {
                contentdetail = postpayload.contentdetail
            };

            _Context.posts.Add(Newpost);
            _Context.contents.Add(Newcontent);
            _Context.SaveChanges();
            var Newposcontent = new postcontent()
            {
                postid             = Newpost.postid,
                contentid          = Newcontent.contentid,
                userid             = postpayload.userid,
                categoryid         = postpayload.categoryid,
                postcontentcreated = DateTime.UtcNow
            };

            _Context.postcontents.Add(Newposcontent);
            _Context.SaveChanges();
            return(succeedinformation);
        }
예제 #5
0
        public async Task <IActionResult> RunAsyncToken([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "directlinetoken")] HttpRequest req, ILogger log)
        {
            log.LogInformation("Enttering RunAsyncToken");

            var pp = new PostPayload()
            {
                user = new User()
                {
                    id   = "dl_" + Guid.NewGuid().ToString(),
                    name = "You"
                }
            };

            HttpRequestMessage request = new HttpRequestMessage(
                HttpMethod.Post,
                Environment.GetEnvironmentVariable("DirectLineConversationEndpoint"));

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer",
                                                                          Environment.GetEnvironmentVariable("DirectLineSecret"));

            //
            request.Content = new StringContent(JsonConvert.SerializeObject(pp), Encoding.UTF8, "application/json");

            var response = await htc.SendAsync(request);

            var cnt = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                string token = JsonConvert.DeserializeObject <DirectLineToken>(cnt).token;

                var config = new ChatConfig()
                {
                    Token = token, UserId = pp.user.id
                };

                return((IActionResult) new OkObjectResult(config));
            }
            else
            {
                throw new Exception("");
            }
        }
예제 #6
0
 public ActionResult <Post> Create([FromBody] PostPayload payload)
 {
     try
     {
         var postToAdd = new Post
         {
             Author   = payload.Author,
             BodyPost = payload.BodyPost,
             LikesNum = payload.LikesNum
         };
         _db.Posts.Add(postToAdd);
         _db.SaveChanges();
         return(Ok(postToAdd));
     }
     catch (Exception)
     {
         return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
     }
 }
예제 #7
0
        public IActionResult UploadToWorkspace(PostPayload upload)
        {
            if (!SetVersion <T> .CanModify())
            {
                throw new AuthenticationException("User is not a Set Version Operator.");
            }

            var formFile = upload.file;

            try
            {
                var size = formFile.Length;

                var filePaths = new List <string>();

                if (formFile.Length <= 0)
                {
                    return(null);
                }

                // full path to file in temp location
                var filePath = Path.GetTempFileName();
                filePaths.Add(filePath);

                var str          = new StreamReader(formFile.OpenReadStream()).ReadToEnd();
                var packageModel = str.FromJson <SetVersion <T> .Payload>();
                var objs         = packageModel.Items.ToJson().FromJson <List <T> >();

                Data <T> .RemoveAll();

                Data <T> .Save(objs, null, true);

                Data <T> .New().AfterSetUpdate();

                return(Ok(new { size, filePaths }));
            } catch (Exception e)
            {
                Log.Add(e);
                throw;
            }
        }
예제 #8
0
 public ActionResult <Post> Update([FromBody] PostPayload payload)
 {
     try
     {
         if (payload.Id.HasValue)
         {
             var postToBeUpdated = _db.Posts.Single(post => payload.Id.Value == post.Id);
             postToBeUpdated.Author   = payload.Author;
             postToBeUpdated.BodyPost = payload.BodyPost;
             postToBeUpdated.LikesNum = payload.LikesNum;
             _db.SaveChanges();
             return(Ok(postToBeUpdated));
         }
         else
         {
             return(new StatusCodeResult(StatusCodes.Status400BadRequest));
         }
     }
     catch (Exception)
     {
         return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
     }
 }
예제 #9
0
        public IHttpActionResult Post(PostPayload postPayload)
        {
            var authenticatedUser = User as ClaimsPrincipal;

            if (authenticatedUser == null)
            {
                return(Unauthorized());
            }
            if (!authenticatedUser.Identity.IsAuthenticated)
            {
                return(Unauthorized());
            }

            return(Ok(new {
                RequestPayload = postPayload,
                Claims = authenticatedUser.Claims
                         .Select(c => new {
                    c.Type, c.Value
                })
                         .ToList()
            }
                      ));
        }
예제 #10
0
        public ActionResult <Post> AddPost([FromBody] PostPayload 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 postToAdd = new Post
                    {
                        Title    = payload.Title,
                        Text     = payload.Text,
                        Username = payload.Username,
                        UserId   = payload.UserId,
                        ImgUrl   = payload.ImgUrl,
                    };

                    _db.Posts.Add(postToAdd);
                    _db.SaveChanges();

                    return(Ok(postToAdd));
                }
                catch (Exception)
                {
                    return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
                }
            }
            else
            {
                return(new StatusCodeResult(StatusCodes.Status401Unauthorized));
            }
        }
        private MattermostMessage PostCreated(PostPayload payload)
        {
            var p = payload.post;

            if (_config.IgnoredTopicTitles.Contains(p.topic_title))
            {
                throw new WarningException("Post title matches an ignored title");
            }

            if (_config.IgnorePrivateMessages)
            {
                //We're not really doing anything here yet
                //TODO: Revisit in the future
                try
                {
                    JObject.Parse(
                        new WebClient().DownloadString($"{_discourseUrl}/t/{p.topic_id}.json"));
                }
                catch
                {
                    throw new WarningException("Unable to retrieve topic, possibly a PM so we should ignore this.");
                }
            }

            if (p.cooked == "")
            {
                throw new WarningException("Body empty, nothing to post.");
            }


            var retVal = new MattermostMessage
            {
                Channel  = _config.MattermostConfig.Channel,
                IconUrl  = new Uri(_config.MattermostConfig.IconUrl),
                Username = _config.MattermostConfig.Username,


                Attachments = new List <MattermostAttachment>
                {
                    new MattermostAttachment
                    {
                        Fallback   = "New Post in Discourse Topic",
                        Title      = p.topic_title,
                        TitleLink  = new Uri($"{_discourseUrl}/t/{p.topic_id}/{p.post_number}"),
                        Text       = new Converter().Convert(ExpandDiscourseUrls(p.cooked, _discourseUrl)),
                        AuthorName = p.username,
                        AuthorLink = new Uri($"{_discourseUrl}/u/{p.username}"),
                        AuthorIcon = new Uri($"{_discourseUrl}{p.avatar_template.Replace("{size}","16")}")
                    }
                }
            };

            if (p.post_number.ToString() == "1")
            {
                retVal.Text = "#NewTopic\n";
            }

            retVal.Text += $"#{p.topic_slug}";

            return(retVal);
        }
예제 #12
0
 //[ValidateAntiForgeryToken]
 public ActionResult <IEnumerable <string> > Post(PostPayload postPayload)
 {
     return(new string[] { "This", "is", "an", "antiforgery", "test" });
 }