instant post

13
Instant Post Progetto e sviluppo di un applicazione client-server per la diffusione di contenuti multimediali sui social networks Damiano Bellucci X Team s.r.l.

Upload: valentina-meoni

Post on 08-Sep-2015

233 views

Category:

Documents


0 download

DESCRIPTION

Web project for an application to use multiple social account at once.

TRANSCRIPT

  • Instant Post

    Progetto e sviluppo di un applicazione client-server per la diffusione di contenuti multimediali sui social

    networks

    Damiano Bellucci X Team s.r.l.

  • Lidea

    Instant Post stato concepito per permettere ad aziende o organizzazioni di pubblicare in maniera rapida contenuti multimediali su tutti i social networks.

    Unazienda pu memorizzare i dati dei propri account su Instant Post, diffondervi contenuti multimediali e pu concedere ad un altro utente il diritto di utilizzare uno dei propri account su un social network.

  • Larchitettura

    Larchitettura generale del sistema basata sul paradigma three tier.

    Presentation -

    Client

    Business Logic -

    Server

    Database

    Nello Specifico sono stati aggiunti componenti particolari per la definizione di un protocollo di comunicazione tra il client ed il server e un modulo lato server che si interfaccia con i social network.

    Client Application Server

    Web Services

    Persistence

    Social Network

    Data

    Protocol Social

    Network

    API

  • Il progetto

    Le specifiche di progetto

    Larchitettura generale

    Il lato server

    Linterfacciamento con Twitter

    Il progetto stato realizzato da un team, nello specifico mi sono

    occupato di:

  • Le specifiche di progetto

    Le specifiche sono state redatte in maniera chiara e sintetica cercando di cogliere tutte le richieste del committente, il tutor aziendale.

    Sono stati individuati 2 tipi di utenti: amministratore e utente generico.

    Lamministratore fa le veci dellorganizzazione inserendo informazioni sugli account e distribuendo permessi sugli stessi agli altri utenti.

    Lutente generico pu diffondere contenuti multimediali attraverso gli account di cui dispone il permesso.

  • Larchitettura generale

    Client

    Application Server

    Autenticazione

    Libreria in comune

    Web Services

    Social Handler

    Persistence

    Management

    Permission

    Social Social

    Network

    Oauth

    Data

  • La libreria Common Files Contiene tutte le classi che rappresentano gli oggetti comuni fra client e

    server, questi oggetti modellano i dati scambiati. Vi sono inoltre alcune

    classi di utility in cui non entrer nel dettaglio.

    SocialAccount

    - username (String) - socialNetwork (String) - organization (String)

    + getter e setter per ogni variabile + persistence()

    SocialAnswer

    - SocialAccount (String) -Code (String) specifico: contenuto in una classe di utility

    -

    + getter e setter per ogni variabile

    SocialAuthentication

    - Data (String/int..)

    + getter e setter + authenticate(input, output)

    Content

    -Text (String) -Media (Collection di byte[])

    + getter e setter - Metodi che richiamano le utility per la conversione file/byte[]

  • Lapplication Server La business logic divisa in 2 macro progetti:

    InstantPostServer e InstantPostEJB.

    La parte server contiene i web services e i social handler. Questa porzione del sistema accoglie le richieste del client e usufruisce dei servizi del modulo EJB. I Social Handler dialogano con i social networks

    La parte EJB si occupa dellinterrogazione e della persistenza dei dati attraverso Entity e Bean.

    La tecnologia utilizzata per lAS Jboss Wildfly 8.2, questa scelta stata esplicitamente espressa dal committente. I Web Services sono stati realizzati sia con SOAP che con RESTful.

  • I Web Services Authentication

    + login(username, password) + isAdmin(username)

    Management

    + insertNewAccount(login, socialNetwork, organization)[1]

    + deleteAccount(login, socialNetwork) [1] + getAccounts(username, password)

    Questi metodi

    richiedono l

    autenticazione

    [1]

    Permission

    +givePermission(user, login, socialNetwork) [1] [2] +revokePermission(user, login, socialNetwork) [1] [2]

    [2] Questi metodi

    possono

    essere

    invocati solo

    dalladmin

    proprietario

    dellaccount

    Social

    +login(SocialAccount account) [1] +loginWithData(SocialAccount account, SocialAuthentication data) [1] +post(SocialAccount account, Content content) [1]

  • La persistenza

    Il database stato realizzato con Postgres su esplicita richiesta del committente.

    La tecnologia utilizzata per manipolare i dati viene in parte fornita dallAS attraverso un datasource.

    La logica di accesso ai dati contenuta nel modulo EJB utilizza delle classi Entity per mappare la tabelle del DB (ORM with POJO)

    Le classi Entity vengono manipolate dai Beans. Esiste un bean per ogni Web Service.

  • I Social Handler

    I Social Handler interpretano le richieste fatte dal client al Social Web Service e le rigirano ai social network.

    Gli Handler lavorano utilizzando gli altri oggetti presenti nel CommonFiles.

    Esiste un Social Handler specifico per ogni social Network, verr preso come esempio Twitter per illustrarne il funzionamento.

  • TwitterHandler SocialHandler

    # SocialAccount account

    +SocialHandler(SocialAccount account) +post(Content content): SocialAnswer +login(): SocialAnswer +loginWithData(SocialAuthentication data): SocialAnswer

    TwitterHandler

    -String accessToken - String accessTokenSecret -String consumerKey -String consumerSecret -Twitter twitter *

    -storeAccessToken(): void -loadAccessToken(): void

    * stata

    utilizzata

    la libreria

    Twitter4J

  • Il Protocollo OAuth

    Open Auth un protocollo aperto usato per garantire ad applicazioni

    autorizzate dagli utenti controllo sugli account sui social network senza per

    dover condividere la password.

    1

    2 3

    1 richiesta dellutente

    2 login

    3 Request token e link per lautenticazione

    4 Invio del link

    5 Autenticazione

    6 Verification PIN

    7 SocialAuthentication

    8 Autenticazione Oauth

    9 Access token

    4 5

    6

    7

    8 9