Skip to content

damianut/public-MarsDige

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

REST API do pobierania zdjęć z NASA zrobionych w trakcie polskich świąt w 2019.

Projekt jest rozwiązaniem następującego zadania rekrutacyjnego:
https://github.com/hellodigers/recruitment-task-junior-symfony-developer

.1. Wymagania:
.1.1. serwer HTTP (korzystałem z Symfony Development Server)
.1.2. serwer MySQL (korzystałem z MySQL Community Server 8.0.20 GPL)
.1.3. Composer (do instalacji paczek Symfony)
.1.4. przeglądarka i połączenie z Internetem


.2. Struktura projektu:
.2.1. mySQL z bazą danych `nasa_data`a
.2.2. uruchomiony Symfony Development Server
.2.3. MarsDige (sklonowany projekt)


.3. Szczegóły projektu:
Odniosę się teraz do trzech punktów z zadania.

.3.1. Lista polskich świąt w 2019 roku się nie zmieni. Dlatego nie stworzyłem
komendy do odświeżania tej listy (a było takie polecenie w zadaniu). 
W zamian za to stworzyłem następujący endpoint z listą polskich świąt z mojej
bazy danych:
`127.0.0.1:8000/polish_holidays`

.3.2. "Komenda" do odświeżania danych o zdjęciach 
zrobionych w czasie polskich świąt:
`127.0.0.1:8000/refresh_database`

.3.3. Korzystanie z "anonymous API with two endpoints",
szczegółowo opisane jest w FrontController.php:
`src/Controller/FrontController.php`

.3.3.1. Pierwszy endpoint to następujący URL:
`127.0.0.1:8000/query`

Dzięki niemu możemy uzyskać dane o wszystkich zdjęciach.
Aby uzyskać dane o obrazach spełniających pewne warunki,
należy dodać do URL parametry opisane w FrontController.php.

.3.3.2. Drugi endpoint to następujący URL:
`127.0.0.1:8000/single_photo?id=`

Po `=` należy wpisać `id` np. `677817`.
Jeśli w `nasa_data` jest zdjęcie o takim `id`, to w odpowiedzi uzyskamy JSON
z informacjami o tym zdjęciu. Wraz z URLem zdjęcia.

`id` można uzyskać, korzystając z pierwszego endpoint:
`127.0.0.1:8000/query`

Jeśli wpiszemy w pierwszym endpoint datę lub zakres dat w których
odbyło się polskie święto, w czasie którego jakikolwiek z łazików zrobił zdjęcie
to uzyskamy `id` tego zdjęcia w JSON.


.4. Aby przetestować projekt na własnym serwerze należy:
.4.1. Sklonować całe repozytorium `https://github.com/damianut/MarsDige`
.4.2. W folderze ze sklonowanym repozytorium wykonać komendę `composer install`,
czyli zainstalować zależności.
.4.3. Utworzyć na swoim serwerze mySQL bazę danych `nasa_data` z metodą
porównywania napisów: `utf8mb4_polish_ci`
.4.4. Utworzyć użytkownika, który będzie miał wszystkie uprawnienia do
`nasa_data`
.4.5. Zaimportować do tej bazy plik `nasa_data.sql` z pobranego repozytorium.
To może trochę potrwać.
Ten plik zawiera tylko część tabeli, aby móc przetestować pobieranie zdjęć - 
reszta zostanie utworzona po uruchomieniu odpowiedniej "komendy".
.4.6. Utworzyć plik '.env.local' i zapisać w nim następujące dane:
DB_HOST={adres hosta, np: 127.0.0.1}
DB_USER={login}
DB_PASS={hasło}
DB_NAME={nazwa bazy danych}

Gdzie '{login}' to nazwa utworzonego użytkownika z wszystkimi uprawnieniami
do bazy danych `nasa_data`/
.4.7. Uruchomić Symfony Developer Server. Powinien on nasłuchiwać adres i port:
`127.0.0.1:8000`
.4.8. Wejść na stronę `127.0.0.1:8000/refresh_database` w celu aktualizacji
bazy danych (to może trochę potrwać)
.4.9. Wysłać zapytanie zgodnie z opisem z FrontController.php lub README
(o ile serwer nasłuchuje adres i port podany w .4.6.)


.5. Uwagi:
.5.1. Nie skorzystałem z 'curl_multi_init', bo NASA blokuje za dużą liczbę
połączeń w krótkim czasie.
.5.2. Ze względu na powyższe (.5.2.), aktualizacja bazy danych trochę trwa.
/*............................................................................*/

About

REST API for retrieving photos from Mars!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published