Stworzenie mikroserwisu, który będzie udostępniał API do obsługi obrazków

Zlecenie zamknięte
software-house.eu
software-house.eu
Zleceniodawca
6 umów
Kategoria zlecenia:
Usługi programowania
Budżet:

Do negocjacji

Opublikowano:
Ważne do:

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.

Wymagane funkcje: