Class NewsController
- Namespace
- GastroSky.Controllers.V1
- Assembly
- GastroSky.dll
Endpoints for reading and writing news articles.
[ApiController]
[Authorize]
[Route("api/v1/news")]
[Produces("application/json", new string[] { })]
public class NewsController : GastroSkyControllerBase
- Inheritance
-
NewsController
- Inherited Members
Constructors
NewsController(GastroSkyDatabaseContext, ISlugGenerator, IConfiguration, IRemoteFileStorage, IMapper, ILogger<NewsController>)
Endpoints for reading and writing news articles.
public NewsController(GastroSkyDatabaseContext db, ISlugGenerator slugGenerator, IConfiguration configuration, IRemoteFileStorage remoteFileStorage, IMapper mapper, ILogger<NewsController> logger)
Parameters
dbGastroSkyDatabaseContextslugGeneratorISlugGeneratorconfigurationIConfigurationremoteFileStorageIRemoteFileStoragemapperIMapperloggerILogger<NewsController>
Methods
CreateNewsArticle(NewsCreationRequestDto)
Creates a news article draft.
[HttpPost]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/news:W")]
[Route("")]
[ProducesResponseType(400)]
[ProducesResponseType(403)]
[ProducesResponseType(500)]
[ProducesResponseType<ResponseBodyDto<NewsResponseDto>>(201)]
public Task<IActionResult> CreateNewsArticle(NewsCreationRequestDto dto)
Parameters
dtoNewsCreationRequestDtoRequest DTO containing the news article creation details. Check out the API DocFX documentation on NewsCreationRequestDto for more information.
Returns
Remarks
Sample request:
POST /api/v1/news
{
"slug": "news01",
"titleTranslationsJson": "JSON-string here",
"subtitleTranslationsJson": "JSON-string here",
"markdownTranslationsJson": "JSON-string here",
"authorName": "Maria Bernasconi"
}
DeleteNewsArticle(string)
Deletes a news article.
[HttpDelete]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/news:R")]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/news:W")]
[Route("{slug}")]
[ProducesResponseType(204)]
[ProducesResponseType(404)]
[ProducesResponseType(500)]
public Task<IActionResult> DeleteNewsArticle(string slug)
Parameters
slugstringNews article slug string.
Returns
GetHiddenNewsArticle(string)
Gets a specific news article (published or draft).
[HttpGet]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/news:R")]
[Route("hidden/{slug}")]
[ProducesResponseType(404)]
[ProducesResponseType<ResponseBodyDto<NewsResponseDto>>(200)]
public Task<IActionResult> GetHiddenNewsArticle(string slug)
Parameters
slugstringNews article slug string.
Returns
GetHiddenNewsArticles(PaginationFilter?, SortingOrder)
Gets a list of news articles (published or drafts).
[HttpGet]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/news:R")]
[Route("hidden")]
[ProducesResponseType<ResponseBodyDto<NewsReducedResponseDto>>(200)]
public Task<IActionResult> GetHiddenNewsArticles(PaginationFilter? paginationFilter = null, SortingOrder sortingOrder = SortingOrder.Descending)
Parameters
paginationFilterPaginationFilterPagination filter. PaginationFilter
sortingOrderSortingOrderDesired sorting order. Can be
0forSortingOrder.Ascendingor1forSortingOrder.Descending. SortingOrder
Returns
GetPublicNewsArticle(string)
Gets a specific public news article.
[HttpGet]
[AllowAnonymous]
[Route("{slug}")]
[ProducesResponseType(404)]
[ProducesResponseType<ResponseBodyDto<NewsResponseDto>>(200)]
public Task<IActionResult> GetPublicNewsArticle(string slug)
Parameters
slugstringNews article slug string.
Returns
GetPublicNewsArticles(string?, PaginationFilter?, TimeRangeFilter?, SortingOrder)
Gets a list of public news articles with optional query filters applied.
[HttpGet]
[AllowAnonymous]
[Route("")]
[ProducesResponseType<ResponseBodyDto<NewsReducedResponseDto>>(200)]
public Task<IActionResult> GetPublicNewsArticles(string? titleFilter = null, PaginationFilter? paginationFilter = null, TimeRangeFilter? timeRangeFilter = null, SortingOrder sortingOrder = SortingOrder.Descending)
Parameters
titleFilterstringCase-insensitive article title filter.
paginationFilterPaginationFilterPagination filter. PaginationFilter
timeRangeFilterTimeRangeFilterTime range filter for filtering based on the news article publication date. TimeRangeFilter
sortingOrderSortingOrderDesired sorting order. Can be
0forSortingOrder.Ascendingor1forSortingOrder.Descending. SortingOrder
Returns
PublishNewsArticle(NewsPublicationRequestDto)
Publishes a news article draft.
[HttpPut]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/news:W")]
[Route("publish")]
[ProducesResponseType(400)]
[ProducesResponseType(403)]
[ProducesResponseType(500)]
[ProducesResponseType<ResponseBodyDto<NewsResponseDto>>(200)]
public Task<IActionResult> PublishNewsArticle(NewsPublicationRequestDto dto)
Parameters
dtoNewsPublicationRequestDtoRequest DTO containing the news article publication details. Check out the API DocFX documentation on NewsPublicationRequestDto for more information.
Returns
Remarks
Sample request:
PUT /api/v1/news/publish
{
"slug": "news01",
"publish": true
}
UpdateNewsArticle(NewsModificationRequestDto)
Modifies a news article draft.
[HttpPut]
[Authorize(Policy = "https://api.gastrosky.ch/identity/claims/resources/news:W")]
[Route("")]
[ProducesResponseType(400)]
[ProducesResponseType(403)]
[ProducesResponseType(500)]
[ProducesResponseType<ResponseBodyDto<NewsResponseDto>>(200)]
public Task<IActionResult> UpdateNewsArticle(NewsModificationRequestDto dto)
Parameters
dtoNewsModificationRequestDtoRequest DTO containing the news article modification details. Check out the API DocFX documentation on NewsModificationRequestDto for more information.
Returns
Remarks
Sample request:
PUT /api/v1/news
{
"slug": "news01",
"titleTranslationsJson": "JSON-string here",
"subtitleTranslationsJson": "JSON-string here",
"markdownTranslationsJson": "JSON-string here",
"authorName": "Maria Bernasconi"
}