L'applicazione nel repository permette, tramite REST API (GET), di ottenere i friends Twitter di un utente e di analizzare le descrizioni dei singoli friend al fine di effettuare analisi del testo, dei link, degli hashtag e dei tag presenti nella descrizione del profilo dei vari utenti. E' inoltre possibile effettuare delle statistiche su tali dati e applicare una serie di filtri.
-
Statistiche:
- Numero di caratteri medio delle descrizioni;
- Precentuale sul totale di utenti con descrizione;
- Presenza di link e percentuale sul totale;
- Presenza di hashtag e percentuale sul totale;
- Presenza di tag e percentuale sul totale;
- Descrizione più lunga;
- Descrizione più corta.
-
Possibilità di filtraggio (specifiche):
- Descrizioni presenti o meno;
- Numero minimo di caratteri;
- Numero massimo di caratteri;
- Numero di caratteri reintrante in un range dato;
- Presenza o meno di tag;
- Presenza o meno di link;
- Presenza o meno di hashtag.
Più nello specifico viene effettuato lo stream di un file JSON contenente tutti i friends tramite l'API "https://wd4hfxnxxa.execute-api.us-east-2.amazonaws.com/dev/api/1.1/friends/list.json?screen_name=efrontoni&count=100". Come si può notare nella parte finale della stringa, vengono richiesti 100 friends dell'utente corrispondente allo screen_name di "efrontoni". In seguito i dati di interesse vengono prelevati dal file e salvati in un database costituito da un Vector.
Il client si intefraccerà con l'applicazione tramite un API testing (ad esempio Postman) che sarà in ascolto sulla porta 8080 del webserver generato da SpringBoot, accessibile da https://localhost:8080 dopo aver lanciato l'applicazione come SpringBootApp.
Le azioni effettuabili dal client sono:
La seguente tabella mostra le richieste possibili.
TIPO | ROTTA | DESCRIZIONE |
---|---|---|
GET | /metadata | restituisce i metadati dei friends Twitter |
GET | /friends | restituisce nome e descrizione dei friends Twitter |
GET | /stats | restituisce delle statistiche sulle descrizioni dei friends |
GET | /filter | restituisce i friends che rispettano il tipo di filtraggio |
In particolare le possibilità di filtraggio sono:
ROTTA | PARAMETRO | DESCRIZIONE |
---|---|---|
/filter/description | --- | restituisce i friends che hanno descrizione non vuota |
/filter/notDescription | --- | restituisce i friends che hanno descrizione vuota |
/filter/link | --- | restituisce i friends che hanno un link nella descrizione |
/filter/hashtag | --- | restituisce i friends che hanno un hashtag nella descrizione |
/filter/tag | --- | restituisce i friends che hanno un tag nella descrizione |
/filter/word | word = parola_data | restituisce i friends che hanno la parola specificata nella descrizione |
/filter/less | max = valore_massimo | restituisce i friends che hanno una descrizione con numero di caratteri minore del massimo specificato |
/filter/more | min = valore_minimo | restituisce i friends che hanno una descrizione con numero di caratteri maggiore del minimo specificato |
/filter/between | min = valore_minimo, max = valore_massimo | restituisce i friends che hanno una descrizione con numero di caratteri maggiore del minimo e minore del massimo specificati |
- it.SpringBootAPI.ADSProjectOOP
- Application
- it.SpringBootAPI.ADSProjectOOP.controller
- it.SpringBootAPI.ADSProjectOOP.fetch
- it.SpringBootAPI.ADSProjectOOP.model
- it.SpringBootAPI.ADSProjectOOP.database
- it.SpringBootAPI.ADSProjectOOP.util.stats
- it.SpringBootAPI.ADSProjectOOP.util.filters
- it.SpringBootAPI.ADSProjectOOP.exceptions
- Chiamata GET /metadata :
Il Controller esegue una chiamata
getMetadata()
a Database che, passando per User, richiama la FetchClass ottenendo i friends Twitter e restituisce al Controller un Vector di User contenente i metadati degli stessi.
- Chiamata GET /friends :
Il Controller esegue una chiamata
getFriends()
a FrontDatabase che, passando per FrontUser, richiama la FetchClass ottenendo i friends Twitter e restituisce al Controller un Vector di User contenente i dati di interesse per il client (nome e descrizione) degli stessi.
- Chiamata GET /stats :
Il Controller esegue una chiamata
getStats()
a DescriptionStats da cui il costruttore chiama le funzioni interne alla classe per inizializzare gli attributi relativi alle varie statistiche. Ogni funzione interna chiama a sua volta Database per prelevare i dati da analizzare.
- Chiamata GET /filter/description :
Il Controller esegue una chiamata
getFilteredDescription()
alla superclasse Filter invocandone il metodofilterVector()
. Tale metodo, dopo aver prelevato tutti i friends da Database (Vector di User), tramite un for, itera la chiamata al metodofilter()
(overridato) per ogni elemento del vettore. Se il friend risulta positivo al filtro allora il suo elemento corrispondente di FrontDatabase viene caricato in un nuovo Vector di FrontUser. Questo vettore viene ritornato al Controller.
Le altre chiamate corrispondenti ai vari filtri (tranne/filter/between
) sono assimilabili con quanto appena descritto e non sono riportate in questo documento per brevità dello stesso.
- Chiamata GET /filter/between :
Il Controller esegue una chiamata
getFilteredGap()
alla superclasse Filter invocandone il metodofilterVector()
. Tale metodo, dopo aver prelevato tutti i friends da Database (Vector di User), tramite un for, itera la chiamata al metodofilter()
(overridato) per ogni elemento del vettore. In questo casofilter()
invoca l'omonimo metodo di FilterCharacterLess e FilterCharacterMore per valutare se il numero di carattei della descrizione è interno al range dato. Se il friend risulta positivo al filtro allora il suo elemento corrispondente di FrontDatabase viene caricato in un nuovo Vector di FrontUser. Questo vettore viene ritornato al Controller.
- Eclipse - ambiente di sviluppo integrato
- Spring Boot - framework per sviluppo applicazioni Java
- Maven - strumento di gestione di progetti