Sei sulla pagina 1di 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.

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.

Application Server
Client
Data
Protocol

Web Services
Persistence

Social
Network
API

Social
Network

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

Le specifiche di progetto
Larchitettura generale
Il lato server
Linterfacciamento con Twitter

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
Autenticazione

Application Server

Management
Permission

Web Services

Social

Social
Network

Client
Persistence

Oauth
Social
Handler

Libreria in comune

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)

[1]

Questi metodi
richiedono l
autenticazione

Permission
+givePermission(user, login, socialNetwork) [1] [2]
+revokePermission(user, login, socialNetwork) [1] [2]
Social
+login(SocialAccount account) [1]
+loginWithData(SocialAccount account, SocialAuthentication data) [1]
+post(SocialAccount account, Content content) [1]

[2] Questi

metodi
possono
essere
invocati solo
dalladmin
proprietario
dellaccount

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 richiesta dellutente
2 login
2
3
8
9
7
4
1

3 Request token e link per


lautenticazione
4 Invio del link
5 Autenticazione
5

6 Verification PIN
6

7 SocialAuthentication
8 Autenticazione Oauth
9 Access token