instant post
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