coronavirus

CoronaMailing (Java8+API+Mail+GSON)

Aplikacja konsumująca API, przetwarzająca JSON na obiekt i wysyłająca dane we wiadomości e-mail z HTML

Kwarantanna. Dzień n-ty.

Newsletter Postmana nt. tzw. „spraw bieżących” ( https://covid-19-apis.postman.com/ ) zainspirował mnie do napisania aplikacji z wykorzystaniem tego API. Jako, że temat najwyraźniej niestety zostanie z nami jeszcze jakiś czas to myślę, że nie jest to ostateczna wersja projektu, swoją drogą przełomowego, bo wkraczam na nieznane terytoria popularnych bibliotek. Zaskakujące są ich możliwości konfiguracji, elastyczność (log4j).
Poniższy projekt ma charakter ćwiczeniowo-edukacyjno-warsztatowy, moją wersje aplikacji znajdziesz wkrótce na GitHubie

Cel

Otrzymać na skrzynkę raport dzienny ze statystyką zachorowań.

Wymagania

  • pobrać dane z publicznego API
  • dane w postaci JSONa przekształcić na obiekt
  • przygotować strawny dla oka mail
  • wysłać wiadomość
  • plik konfiguracyjny
  • przygotować środowisko do wdrożenia
  • system budowania
  • testy
  • logi

Realizacja cz. 1 – kod

Składniki:

  • IDE Intelij Idea
  • Java 8 + Maven + JUnit4
  • GSON – parsowanie plików JSON
  • OkHttp – klient HTTP, użyjemy go do pobierania danych z zasobów darmowego API
  • Apache Common, Mail – całkiem przyjemna biblioteka do wysyłania
  • log4j2 – logowanie

Kod pod linkiem: https://github.com/connoisseur0/CoronaMailing

TODO:

  • testy
  • serializacja danych (DB)
  • wykres

Realizacja cz. 2 – wdrożenie

Składniki

  • Raspberry Pi 4
  • CentOs 7 (AltArch)
  • OpenJdk
  • cron
  • fat .jar  (.jar z zależnościami)
  • plik properties (.xml)

Na Malince zainstalowałem CentOs 7 (architektura ARM – nie jest tutaj dostępna 8), sieć,serwer FTP, przerzucam .jar z aplikacją. Instaluje OpenJdk.

Umieszczam aplikacje w katalogu.
Nie zapominamy o umieszczeniu pliku properties w tym samym katalogu!

Przechodze do katalogu i odpalam aplikację poleceniem:

Jednorazowe wykonanie aplikacji wysyła maila. Sprawdzam. Trafił na skrzynkę. Jest Ok.
Teraz mogę przystąpić do konfiguracji harmonogramu zadań – „cron”, tak bym dostawał codziennie wieczorem raport.
Upewniamy się czy czas na serwerze jest ok (TODO: konfiguracja synchronizacji z serwerem czasu).

Teraz tworzę skrypt .sh uruchamiajacy, ktory bedzie odpalany w harmonogramie:

Uruchamiam crontab przy uzyciu edytora nano:

Dopisuję wiersz (jeśli chcesz dowiedzieć się więcej o składni to zapraszam do notatki [LINK[), skrypt start.sh odpala się codziennie o 19:30:

Sprawdzamy wpis poleceniem.

Powinien zwrócić wpis.

 

To tyle.

Pozostało czekać na wiadomość.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *