Opis zlecenia
Metody tego API powinny umożliwiać:
1. Odczyt obrazków z chmurowego storage. API powinno przyjmować w URL jako parametr informacje na temat obrazka. Przykładowy URL powinien mieć postać:
foo.bar/s1000/aef50c/86dbff4098e84771a20f9e10edbabe85/Nazwa-obrazka.
- Człon s1000 to rozmiar.
- Kolejny człon to identyfikator obrazu
- Następujący po nim GUID to identyfikator ogłoszenia
Podany w URL rozmiar powinien zostać zaokrąglony do najbliższej spośród predefiniowanych wartości: 2560, 1200, 1024, 700, 512, 400, 360, 192, 128 oraz 64. Zwrócony obraz powinien być w jednym z tych predefiniowanych rozmiarów. W razie niedostępności obrazka w podanym rozmiarze powinien zwracać obraz w maksymalnym dostępnym rozmiarze.
2. Zapis w chmurowym storage (Amazon S3) wgrywanych przez użytkownika plików graficznych (jpeg, png). Początkowo będzie je kompresował i zmniejszał do maksymalnego obsługiwanego przez nas rozmiaru, czyli 2560x2560 pixeli. Nie powinno zachodzić nigdy skalowanie obrazka w górę. Po wgraniu takiego obrazka serwis będzie zwracał URL do obrazu wgranego w maksymalnym rozmiarze (w formacie opisanym w punkcie a). Serwis powinien nadać obrazowi krótki identyfikator i zapisać w storage używając klucza rozmiar-idObrazu-idOgłoszenia.
3. Komunikację z systemową kolejką zdarzeń (RabbitMq):
- W sytuacji, gdy nastąpi upload obrazka do chmury, serwis powinien zamieszczać w kolejce komunikat informujący o dodaniu obrazu do ogłoszenia. Komunikat powinien zawierać rozmiar, id obrazu oraz id ogłoszenia.
- W sytuacji, gdy w kolejce pojawi się żądanie generacji miniatur, serwis powinien wygenerować i zapisać w chmurowym storage szereg obrazów pomniejszonych do predefiniowanych rozmiarów (jak w punkcie a). Serwis powinien zamieszczać w kolejce komunikat informujący o zakończeniu generowania miniatur.
- W sytuacji, gdy w kolejce pojawi się żądanie usunięcia ogłoszenia serwis powinien skasować wszystkie obrazy powiązane z ogłoszeniem i zamieścić w kolejce komunikat informujący o zakończeniu usuwania obrazów.