L' applicazione SpringBoot ha come obiettivo l'analisi e il monitoraggio dei domini presenti in rete. I dati relativi ai domini li otteniamo tramite la REST API Domains-Index.
Tra le funzioni di analisi abbiamo il filtraggio e il calcolo di statistiche.
L' utente, grazie al Client (ad esempio Postman), può accedere alle funzionalità dell'applicazione grazie al Web Service Tomcat integrato nel Framework Spring.
The SpringBoot application aims to analyze and monitor the domains present on the network. We obtain the data relating to the domains via the REST API Domains-Index.
Among the analysis functions we have the filtering and the calculation of statistics.
The user, thanks to the Client (for example Postman), can access the application functionalities thanks to the Web Service Tomcat integrated into the Framework Spring.
✅ Personalizzazione dei parametri durante la richiesta all'API
✅ Backup dei dati da locale in caso di url corrotto
✅ Filtri multipli e sovrapponibili
✅ Testing JUNIT
Tipo | Rotta | Descrizione |
---|---|---|
GET | /domains | Effettua l'analisi su un gruppo di domini. |
GET | /stats | Calcola la statistica su un gruppo di domini. |
POST | /filter | Effettua il filtraggio dei domini rispettando le condizioni specificate nel body della richiesta. |
Nelle rotte è possibile inserire dei parametri del tipo "domain" e "zone" per definire il gruppo di domini. Di default i campi saranno riempiti con "domain" = "facebook" e "zone" = "com".
{
"name": "your-facebook-address.com",
"createDate": "2020-07-25T06:07:00.044377",
"updateDate": "2020-07-25T06:07:00.044380",
"country": "US",
"isDead": "False"
}
Il JSON sopra riportato indica la rappresentazione utilizzata per indicare un dominio. I campi rappresentano:
- name = nome.
- createDate = data creazione.
- updateDate = data ultimo update.
- country = paese di hosting.
- isDead = scadenza.
Il programma restituisce i domini elaborati sotto forma di un JSONArray.
{
"Host countries": {
"DE": 3,
"null": 27,
"JP": 7,
"IT": 0,
"US": 11,
"NL": 1,
"TR": 1,
"altro": 0
},
"Keywords": {
"marketing": 1,
"pages": 2,
"business": 3,
"login": 1,
"vacances": 1,
"altro": 42
},
"Average update time(days)": 150.0,
"Average life time(days)": 150.0,
"Quantity": 50
}
Il JSON sopra riportato indica la rappresentazione utilizzata per indicare le statistiche elaborate su un gruppo di domini. I campi rappresentano:
- Host countries = nazioni di hosting.
- Keywords = parole chiave più comuni.
- Average update time(days) = media dei giorni trascorsi dall'ultimo update.
- Average lifetime(days) = media dei giorni trascorsi dalla creazione.
- Quantity = numero di domini analizzati.
Il programma restituisce le statistiche elaborate sotto forma di un JSONObject.
{
"name":"xn;cash;business",
"country":"US;DE;IT",
"createDate": "2020-07-25T05",
"updateDate": "T05",
"isDead":"false"
}
Il JSON sopra riportato indica la rappresentazione utilizzata nel body per indicare i filtri da applicare su un gruppo di domini. I campi rappresentano:
- name = una o più sottostringhe contenute nei domini.
- country = uno o più nazioni di hosting.
- createDate = data creazione.
- updateDate = data ultimo update.
- isDead = scadenza.
I campi name
e country
permettono di ospitare più valori contemporaneamente.
Questi valori verranno applicati come filtri con logica OR.
I campi restanti, invece, come createDate
, updateDate
e isDead
, possono contenere solo un valore.
I valori relativi a campi differenti vengono applicati come filtri con logica AND.
- I valori dei campi
name
,country
eisDead
possono essere indicati indifferentemente con maiuscole o minuscole, gli altri no. - I valori dei campi
name
ecountry
devono essere separati da ";", senza spazi. - Le date nei domini hanno una formattazione del tipo aaaa-mm-ggTore:minuti:secondi:millisecondi quindi i valori inseriti nei campi
createDate
eupdateDate
devono rispettarla. E' possibile tuttavia inserire delle sottostringhe (es:"createDate":"mm-ggTore"
oppure"updateDate":"Tore:minuti"
).
Il programma può lanciare eccezioni standard e personalizzate
Eccezioni personalizzate:
-
NoDataException
Viene richiamata quando il programma riconosce che il vettore domains non contiene alcun dominio. Viene visualizzato il seguente messaggio di errore:
I CAMPI DELLA RICHIESTA NON PRODUCONO ALCUN RISULTATO...
Riprova con diversi campi domain e zone!`
-
NoBodyException
Viene richiamata quando il programma ottiene in input un body vuoto. Viene visualizzato il seguente messaggio di errore:
IL BODY DELLA CHIAMATA POST NON CONTIENE NESSUN FILTRO
Eccezioni standard:
- Exception
- IOException
- FileNotFoundException
- RuntimeException
- ArithmeticException
- PatternSyntaxException
- ClassCastException
- ParseException
- IOException
Nel programma è presente anche una sezione di testing:
-
Test 1
Verifica che il vettore domains non sia null.
-
Test 2
Verifica se il filtro FilterCountry viene correttamente applicato.
-
Test 3
Verifica se le statistica Quantity viene correttamente calcolata.
-
Test 4
Verifica se l'eccezione NoDataException viene lanciata correttamente.
Nome | Contributo | |
---|---|---|
Paolo Beci | Link | 33,3% |
Emilio Grieco Joseph | Link | 33,3% |
Giuseppe Izzi | Link | 33,3% |