DTrombett / portaleargo-api

A Node.js library to interact with the argo API for students and parents

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Endpoint mancanti

ReLoia opened this issue · comments

commented

Ciao, ho notato di recente questa libreria e l'ho provata oggi.
Tuttavia, ho riscontrato un problema con diversi endpoint mancanti, ad esempio argomenti, assenze, compiti e note.
Purtroppo, non ho un telefono con root, quindi non posso cercare gli endpoint mancanti da solo. Però chi ha partecipato a questo issue potrebbe essere d'aiuto nella ricerca degli endpoint mancanti.

Ciao! Innanzitutto, ho già visto quell'issue e mi ha dato proprio lo spunto per iniziare le mie ricerche. Inoltre, se vuoi ispezionare le richieste dell'app puoi tranquillamente usare un emulatore ufficiale da Android Studio con l'app HTTP Toolkit.
Detto questo, l'app utilizza un solo endpoint per caricare tutti i dati necessari: /dashboard. Tale endpoint viene chiamato nel login (seguiamo il comportamento dell'app ufficiale). Effettua il login e accedi alle proprietà di cui hai bisogno:

import { Client } from "portaleargo-api";

const client = new Client({
        // Sostituisci con i tuoi dati o usa le variabili d'ambiente
	schoolCode: "SS13325",
	username: "dtrombett",
	password: "password123",
});

// Effettua il login
await client.login();
// `client.dashboard` contiene la maggior parte dei dati di cui hai bisogno
// Mostra in console tutte le attività svolte
console.log(client.dashboard.registro.map((event) => event.attività));
// Mostra tutti i compiti assegnati fino ad ora
console.log(client.dashboard.registro.map((event) => event.compiti));
// Mostra gli eventi dell'appello
console.log(client.dashboard.appello.map((event) => event.descrizione));
// Mostra i dati riguardo le note
console.log(client.dashboard.note);

Posso immaginare che questo metodo non è proprio intuitivo ma ci rifacciamo totalmente all'app ufficiale e importiamo tutti i dati disponibili allo stesso modo.
Sto ancora attivamente testando il progetto in scenari di lavoro più realistici per capire come semplificare al meglio il sistema. Se hai dei suggerimenti sono ben accetti! 😄

Sinceramente potremmo anche implementare una documentazione apposita con le varie interfaces e i vari types, ma considerando il fatto che il progetto è in TypeScript direi che sia abbastanza self-explanatory.

commented

Allora, prima di tutto volevo ringraziarvi per la risposta tempestiva. Sono felice di sapere che un progetto che avevo creato casualmente per allernarmi in TypeScript sia stato di ispirazione per la creazione di questo progetto.

Comunque, ho provato ad ottenere i dati usando quel codice ma il problema persiste:
Screenshot from 2023-05-08 21-50-04
vedo solo un evento nel registro.

Inoltre, note, voti e appello sembrano ritornare un array vuoto Screenshot from 2023-05-08 22-00-34

Ovviamente capisco che la libreria sia ancora in beta e che state ancora cercando endpoint, ho visto il codice ed è molto interessante anche se secondo me è un po è troppo ordinato ahaha. Spero si riesca a risolvere al più presto e che non sia colpa della mia scuola o del mio codice ahaha.

Testerò a breve o lo farà @DTrombett chiunque lo faccia per prima così vediamo se è un problema della tua scuola (dubito) o semplicemente dello snippet che ha dato DTrombett. In ogni caso ti farò / farà sapere.

Allora, prima di tutto volevo ringraziarvi per la risposta tempestiva. Sono felice di sapere che un progetto che avevo creato casualmente per allernarmi in TypeScript sia stato di ispirazione per la creazione di questo progetto.

Comunque, ho provato ad ottenere i dati usando quel codice ma il problema persiste: Screenshot from 2023-05-08 21-50-04 vedo solo un evento nel registro.

Inoltre, note, voti e appello sembrano ritornare un array vuoto Screenshot from 2023-05-08 22-00-34

Ovviamente capisco che la libreria sia ancora in beta e che state ancora cercando endpoint, ho visto il codice ed è molto interessante anche se secondo me è un po è troppo ordinato ahaha. Spero si riesca a risolvere al più presto e che non sia colpa della mia scuola o del mio codice ahaha.

Update: ho letteralmente utilizzato lo stesso identico codice di @DTrombett, purtroppo non riesco a replicare il tuo problema. Ci sono casi in cui ricevo dei null e delle array vuote, ma nella maggior parte dei casi è causato dal fatto che io effettivamente non abbia note / argomenti in quei casi specifici.

Posso confermarti che non sappiamo come è sviluppato il tipo delle note, ma per gli altri sono più che certo in quanto derivano da test effettuati su dati reali. Potrebbe essere successo che in qualche ultimo aggiornamento della libreria sia sorto qualche bug ma posso assicurarti che l'ultima volta che ho provato, tutto funzionava alla meraviglia. Domani proverò nuovamente per capire dove potrebbe essere il problema.
Grazie mille per aver segnalato questo problema intanto!

@ReLoia Questo è il codice che ho usato:

const client = new Client();

client
	.login()
	.then(() => {
		console.log(client.dashboard);
	})

E questo è il risultato mostrato:
image
Come puoi notare, tutti i dati necessari sono presenti, compresi ben 851 eventi del registro, 51 voti e 13 eventi dell'appello.
Prova anche tu questo codice e, se il problema persiste, fammi sapere se hai un'idea riguardo cosa potrebbe causare ciò.
Inoltre, assicurati sempre di utilizzare il codice aggiornato, visto che ogni tanto effettuo qualche commit

commented

Aggiornamento
Scusatemi per la tarda risposta, questi giorni ho avuto altri impegni.
Sembra che tutto sia risolto semplicmenete cancellando la cartella ./argoData
Ora tutto funziona correttamente. Inoltre, note e promemoria contengono i dati corretti.
Posso chiudere questo issue come risolto.