Package ru.skypro.homework.controller
Class AdController
java.lang.Object
ru.skypro.homework.controller.AdController
Контроллер для управления объявлениями.
Обрабатывает HTTP-запросы для создания, получения, обновления и удаления объявлений.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionДобавление объявления.getAdsMe()Получение объявлений авторизованного пользователя.Получение всех объявлений.getExtendedAd(int id) Получение информации об объявлении.voidremoveAd(int id) Удаление объявления.updateAds(int id, CreateOrUpdateAd createOrUpdateAd) Обновление информации об объявлении.byte[]updateImage(int id, org.springframework.web.multipart.MultipartFile image) Обновление картинки объявления.
-
Constructor Details
-
AdController
public AdController()
-
-
Method Details
-
getAllAds
Получение всех объявлений.
Endpoint: GET /ads- Returns:
- объект
Adsс информацией о количестве объявлений и их списком
-
addAd
@PostMapping(consumes="multipart/form-data", produces="application/json") @PreAuthorize("isAuthenticated()") public Ad addAd(@RequestParam("properties") String jsonString, @RequestPart("image") org.springframework.web.multipart.MultipartFile image) throws IOException Добавление объявления.
Доступ к методу имеет только аутентифицированный пользователь.
Endpoint: POST /ads- Parameters:
jsonString- строка с информацией объявленияimage- файл с изображением объявления- Returns:
- объект
Adсозданное объявление - Throws:
IOException- Если произошла ошибка при обработке изображения
-
getExtendedAd
@GetMapping("/{id}") @PreAuthorize("isAuthenticated()") public ExtendedAd getExtendedAd(@PathVariable("id") int id) Получение информации об объявлении.
Доступ к методу имеет только аутентифицированный пользователь.
Endpoint: GET /ads/{id}- Parameters:
id- идентификатор объявления- Returns:
- объект
ExtendedAdполная информация об объявлении
-
removeAd
@DeleteMapping("/{id}") @PreAuthorize("hasAuthority(\'ADMIN\') or @adService.isAdAuthor(#id, authentication.principal.username)") public void removeAd(@PathVariable("id") int id) Удаление объявления.
Доступ к методу имеет пользователь с ролью ADMIN, либо автор объявления.
Endpoint: DELETE /ads/{id}- Parameters:
id- идентификатор объявления
-
updateAds
@PatchMapping("/{id}") @PreAuthorize("isAuthenticated()") public Ad updateAds(@PathVariable("id") int id, @RequestBody CreateOrUpdateAd createOrUpdateAd) Обновление информации об объявлении.
Доступ к методу имеет только аутентифицированный пользователь.
Endpoint: PATCH /ads/{id}- Parameters:
id- идентификатор объявленияcreateOrUpdateAd- информация для обновления объявления- Returns:
- объект
Adобновленное объявление
-
getAdsMe
Получение объявлений авторизованного пользователя.
Доступ к методу имеет только аутентифицированный пользователь.
Endpoint: GET /ads/me- Returns:
- объект
Adsс информацией о количестве объявлений и их списком
-
updateImage
@PatchMapping("/{id}/image") @PreAuthorize("isAuthenticated()") public byte[] updateImage(@PathVariable("id") int id, @RequestParam("image") org.springframework.web.multipart.MultipartFile image) throws IOException Обновление картинки объявления.
Доступ к методу имеет только аутентифицированный пользователь.
Endpoint: PATCH /ads/{id}/image- Parameters:
id- идентификатор объявленияimage- файл с новой картинкой объявления- Returns:
- объект
массив байтов, содержащий данные обновлённого изображения
invalid reference
byte[] - Throws:
IOException- Если произошла ошибка при обработке изображения
-