Skip to content
marco2012 edited this page Jan 10, 2018 · 15 revisions

Eventi Storici

Descrizione

Il progetto utilizza le API fornite da http://history.muffinlabs.com/ per cercare tutti gli eventi storici avvenuti in un giorno particolare.

Una volta ottenuti, tali eventi storici vengono salvati, con i link alla relativa pagina wikipedia, in un file su Dropbox acceduto tramite Oauth.

Inoltre gli eventi vengono salvati su CouchDB attraverso working queue fornita da RabbitMQ e un evento casuale viene pubblicato su Twitter e Telegram con link wikipedia, link vide youtube, immagine con relativa descrizione fornita da intelligenza artificiale.

Descrizione dettagliata

Tutto parte da http://localhost:3000/ .

All'avvio di app.js si viene reindirizzati tramite index.js su localhost:3000/auth.

Qui parte il processo di autenticazione su Dropbox tramite Oauth. Il controller auth.js chiama authenticate nel middleware dropbox.js Questo reindirizza all'url di autenticazione e una volta accettati i permessi viene richiesto il token al server Dropbox tramite oauth2callback.js.

Dopo aver ottenuto il token si torna in index.js e viene caricata la pagina iniziale dove selezionare la data. Dopo aver selezionato la data viene fatto un redirect su success.html. In questa pagina vengono loggati tramite websocket tutti i passaggi che esegue il server durante il reperimento delle informazioni.

A questo punto il controller date.js prende il token e la data contenuti nella url, fa la ricerca sul database tramite il modello date.js.

Se la data è già presente nel databse, questo modello chiama il metodo fetch nel file config db.js il quale restituisce da couchDB gli eventi accaduti in quel giorno del mese in JSON. Altrimenti inserisce tramite RabbitMQ gli eventi in CouchDB e poi li restituisce in JSON.

A questo punto il controllo torna al controller date.js, questo chiama il middleware dropbox.js che scrive in un file tutti gli eventi e lo carica su Dropbox. Inoltre il controller seleziona un evento casuale tra quelli restituiti, cerca attraverso varie API un video su youtube, un'immagine e una descrizione per l'evento e li pubblica in un tweet e su telegram.

API Utilizzate

Link Utili

Struttura

.
├── LICENSE.md
├── README.md
├── app.js
├── config
│   └── db.js
├── controllers
│   ├── auth.js
│   ├── date.js
│   ├── index.js
│   └── oauth2callback.js
├── helpers
│   └── helper.js
├── middlewares
│   ├── MicrosoftAI.js
│   ├── amqp.js
│   ├── dropbox.js
│   ├── get_links.js
│   ├── image_search.js
│   ├── telegram.js
│   ├── twitter.js
│   ├── ws.js
│   └── youtube.js
├── models
│   └── date.js
├── package-lock.json
├── package.json
├── receiver.js
└── views
    ├── img
    │   └── map.jpg
    ├── index.html
    ├── main_page.html
    ├── particles
    │   ├── app.js
    │   ├── particles.js
    │   ├── particles.json
    │   └── style.css
    ├── stylesheets
    │   ├── index_style.css
    │   ├── main_page_style.css
    │   ├── success_style.css
    │   └── whale_style.css
    ├── success.html
    └── video
        └── MP4
            └── history.mp4
Clone this wiki locally