public async Task <ActionResult <int> > GetArticleContent([FromBody] NewArticleRequest articleRequest)
        {
            int articleId = await _articleRepository.SaveArticleRecord(
                articleRequest.ArticleAuthorId,
                articleRequest.ArticleFeatureImage,
                articleRequest.ArticleDisplayTitle,
                articleRequest.ArticleDisplaySubtitle,
                _mapper.Map <NewArticleContentRequest[], ArticleContentRequest[]>(articleRequest.ArticleContent)
                );

            return(Ok(articleId));
        }
Exemple #2
0
        public Task <SingleArticleResponse> Create(NewArticleRequest newArticle)
        {
            var options = new AjaxOptions
            {
                Url         = $"{this._settings.ApiUri}/articles",
                Type        = "POST",
                DataType    = "json",
                ContentType = "application/json",
                Data        = JsonConvert.SerializeObject(newArticle)
            };

            return(base.MakeAuthorizedCall <SingleArticleResponse>(options));
        }
        public async Task <IActionResult> Post([FromBody] NewArticleRequest newArticleRequest)
        {
            try
            {
                var tokenHeader = Request.Headers["Authorization"];
                var token       = tokenHeader.Count > 0
                    ? tokenHeader.First().Split(' ')[1]
                    : null;

                User currentUser = null;

                if (!string.IsNullOrWhiteSpace(token))
                {
                    currentUser = UserService.GetCurrentUser(token);
                }

                if (currentUser == null)
                {
                    return(Unauthorized());
                }

                var article = await ArticleService.CreateArticle(newArticleRequest.Article, token);

                return(article != null
                    ? Created($"api/articles/{article.Slug}",
                              new SingleArticleResponse
                {
                    Article = new ArticleModel(
                        article.Slug,
                        article.Title,
                        article.Description,
                        article.Body,
                        article.ArticleTags.Select(t => t.Tag.TagName).ToList(),
                        article.CreatedAt,
                        article.UpdatedAt,
                        article.GetFavorited(currentUser),
                        article.FavoritesCount,
                        article.Author.Profile
                        )
                })
                    : (IActionResult)BadRequest("Not created."));
            }
            catch (Exception ex)
            {
                var genericErrorModel = new GenericErrorModel(new GenericErrorModelErrors(new[] { ex.ToString() }));
                return(BadRequest(genericErrorModel));
            }
        }
        public async Task <Article> CreateArticleAsync(NewArticle article, string token, CancellationToken cancellationToken = default)
        {
            var body = new NewArticleRequest {
                Article = article
            };
            var requestBody = JsonSerializer.Serialize(body, _jsonSerializerOptions);
            var httpRequest = new HttpRequestMessage(HttpMethod.Post, new Uri($"api/articles", UriKind.Relative))
            {
                Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
            };

            httpRequest.Headers.Add("Authorization", $"Token {token}");

            var response = await HandleRequest <ArticleObject>(httpRequest, cancellationToken);

            return(response.Article);
        }
Exemple #5
0
        public async Task Create()
        {
            // todo validations
            var newArticel = new NewArticleRequest
            {
                Article = new NewArticle
                {
                    Title       = this.Title.Self(),
                    Body        = this.Body.Self(),
                    Description = this.Description.Self(),
                    TagList     = this.Tags.Self().Split(',').ToArray()
                }
            };

            var article = await this._articleResources.Create(newArticel);

            this._navigator.Navigate(SpafApp.ArticleId, new Dictionary <string, object>()
            {
                { "slug", article.Article.Slug }
            });
        }