Skip to content

Proposta #1

Description

@mattmezza

Provo a raffinare l'idea di @grosa1 espressa qui: realizzare un notifier per i cambiamenti dei dati della carriera dello studente.

Mia idea

  • Gli studenti richiedo tramite i client MyUnimol di sottoscriversi ai cambiamenti dei dati, accettano di inviare username e password per la memorizzazione su di un server.
  • Gli studenti si possono sottoscrivere a diversi canali
    • Nuovo esame registrato
    • Nuovo appello disponibile
    • Nuova news pubblicata
      • in ateneo
      • in Dipartimento
      • in corso di studi (per i corsi di studi supportati)
    • etc... (aggiungere altre)
  • Ad ogni cambio della configurazione corrisponde una chiamata ad una API da realizzare che fa cose su un db (CRUD operations basicamente)
  • Il notifier gira (ogni tot minuti, da una certa ora ad una certa ora, diciamo dalle 8am alle 11pm ogni 15min) e per ogni utente nel db esegue una serie di chiamate alle API di MyUnimol (in base a quali servizi lo studente particolare sia sottoscritto) salvando le info risultato, l'md5 delle stesse e il timestamp nel db
  • Ad ogni chiamata si effettua un controllo se i due digest (vecchio e nuovo) siano o meno uguali
    • se uguali skip
    • se differenti si controlla il campo (eventuale) already_notified
      • se true skip
      • se false si controlla il timestamp
        • se < di tot tempo skip
        • altrimenti si prende il contenuto vecchio (non il digest, ma tutta l'info), si fa un diff e si estraggono le info che sono cambiate, poi si notifica allo studente (a seconda del canale scelto)

Note: ad ogni chiamata si deve verficare che la password non sia stata cambiata, nel cui caso si deve inviare una notifica allo studente per fargli risettare la password.

Si hosta il notifier sulla stessa macchina delle api magari, cosi le mandiamo in localhost.

Che ne pensate?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions