SlideShare une entreprise Scribd logo
1  sur  9
ERYEM
CAMPS
Dashboard Yammer sous SharePoint
Partie 1/2
1
Présenté par :
Barbar MITRI bmitri@eryem.com
Levallois 15/01/2015
Plan
1. Présentation du sujet
1. Utilisation de NodeJS
2. Architecture applicative
2. Démo
3. Référence
2
NodeJS
 Les évènements
 Les modules Node.js et NPM
 Le framework Express.js
3
4
Architecture technique
YammerControl
YamSQL
SQLServerProxy
SPAppYammerDurandal
Bibliothèque de classes pour
interroger API Yammer
Projet pour insérer les
données Yammer dans la
base
Proxy NodeJS pour exposer
les requêtes de base de
données en tant que Web
Services JSON
App SharePoint qui
consomme les données
retournées par le proxy
5
Architecture applicative
4
Yammer
SQL Server
1°)2°)
3°)
4°)
5°)
Proxy nodeJS
1 => connexion à l’application
Sharepoint
2 => Sharepoint renvoie le
contenu Statique au client :
html + CSS + JS
3 => avec l’autorisation de
Sharepoint on redirige le client
vers le serveur Proxy (NodeJS)
4 => Le proxy solicite le
serveur de base de données
5 => réponse de la base
6 => Le proxy retourne les
données vers le client
6
public ZipArchive GetExport(DateTime exportStartDate)
{
try
{
var url =
String.Format("https://www.yammer.com/api/v1/export?model=Message&model=User&model=Group&mo
del=Topic&model=UploadedFileVersion&model=DocumentVersion&access_token={0}&include=csv&incl
ude_ens=false&since=" + exportStartDate.ToString("yyyy-MM-dd") + "T00%3A00%3A00%2B00%3A00",
this.accessToken);
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Headers.Add("Authorization", "Bearer" + " " + this.accessToken);
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
using (var stream = response.GetResponseStream())
{
return new ZipArchive(stream);
}
}
}
catch (Exception ex)
{
throw new Exception("GetExport : " + " " + ex.Message);
}
}
Récupération des données deYammer
Requête GET à l’API Yammer en passant en paramètre le jeton
d’accès (access token)
7
function runSQL(strReq, callback) {
var connection = new sql.Connection(connection_string, function (err) {
if (err)
console.log(err);
var request = new sql.Request(connection); // or: var request = connection.request();
request.query(strReq, function (err, recordset) {
if(err)
console.log(err);
callback(recordset);
});
connection.close();
});
};
app.get('/StatFilebyUser', function (req, res) {
var strReq = 'SELECT y.name, count(*) as number_file'
+ ' FROM [dbo].[file] '
+ ' inner join [dbo].[YammerUser] y on y.[UserID] = [uploader_id]'
+ ' group by [UserID] ,y.name';
runSQL(strReq, function (result) {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(result));
res.end();
});
});
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type, X-Requested-With");
res.type('application/json');
next();
});
https.createServer(httpsOptions, app).listen("8000", ip.address());
Proxy : Nodejs
runSQL: encapsule la
connexion à la base de
données
app.get: définit un point de
terminaison et le traitement
à effectuer en réponse à la
requête
app.use: fonction exécutée
avant toute requête,
permet de fixer les headers
http.createServer.listen:
ouvre le port pour écoute
Conclusion
8
Utilisation des Yammer API dans un client .Net
Utilisation du NodeJS pour exposer les données
Références
9
Tutoriels et exemples Node Js :
http://nodejs.org/
Yammer Developer :
https://developer.yammer.com/
Newtonsoft.json:
https://www.nuget.org/packages/Newtonsoft.Json/

Contenu connexe

Similaire à Yammer et nodejs

Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013Philippe Sfeir
 
Solution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScriptSolution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScriptRaphaël Semeteys
 
Room ou Realm : Quelle base de données pour vos applications Android ?
Room ou Realm : Quelle base de données pour vos applications Android ?Room ou Realm : Quelle base de données pour vos applications Android ?
Room ou Realm : Quelle base de données pour vos applications Android ?Ludovic ROLAND
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec JavaFrancois ANDRE
 
Ajax GTI780 & MTI780 ETS A09
Ajax  GTI780 & MTI780  ETS  A09Ajax  GTI780 & MTI780  ETS  A09
Ajax GTI780 & MTI780 ETS A09Claude Coulombe
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 EeST informatique services
 
Activity
ActivityActivity
Activitydido
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JSAntoine Rey
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Softshake 2013 Apiness SA l'envers du décor
Softshake 2013 Apiness SA l'envers du décorSoftshake 2013 Apiness SA l'envers du décor
Softshake 2013 Apiness SA l'envers du décormichaelmiguel2013
 
Softshake apiness l'envers du décor
Softshake apiness l'envers du décorSoftshake apiness l'envers du décor
Softshake apiness l'envers du décorApinessSA
 
NodeJS et SocketIO en mode scalable dans le Cloud - GAB 2015
NodeJS et SocketIO en mode scalable dans le Cloud - GAB 2015NodeJS et SocketIO en mode scalable dans le Cloud - GAB 2015
NodeJS et SocketIO en mode scalable dans le Cloud - GAB 2015Stéphane ESCANDELL
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Abdelouahed Abdou
 

Similaire à Yammer et nodejs (20)

Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013
 
Solution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScriptSolution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScript
 
Room ou Realm : Quelle base de données pour vos applications Android ?
Room ou Realm : Quelle base de données pour vos applications Android ?Room ou Realm : Quelle base de données pour vos applications Android ?
Room ou Realm : Quelle base de données pour vos applications Android ?
 
Présentation nouveauté java7
Présentation nouveauté java7Présentation nouveauté java7
Présentation nouveauté java7
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec Java
 
Ajax GTI780 & MTI780 ETS A09
Ajax  GTI780 & MTI780  ETS  A09Ajax  GTI780 & MTI780  ETS  A09
Ajax GTI780 & MTI780 ETS A09
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 Ee
 
Activity
ActivityActivity
Activity
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JS
 
Struts
StrutsStruts
Struts
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Softshake 2013 Apiness SA l'envers du décor
Softshake 2013 Apiness SA l'envers du décorSoftshake 2013 Apiness SA l'envers du décor
Softshake 2013 Apiness SA l'envers du décor
 
Softshake apiness l'envers du décor
Softshake apiness l'envers du décorSoftshake apiness l'envers du décor
Softshake apiness l'envers du décor
 
Services rest & jersey
Services rest & jerseyServices rest & jersey
Services rest & jersey
 
Serveur http
Serveur httpServeur http
Serveur http
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
NodeJS et SocketIO en mode scalable dans le Cloud - GAB 2015
NodeJS et SocketIO en mode scalable dans le Cloud - GAB 2015NodeJS et SocketIO en mode scalable dans le Cloud - GAB 2015
NodeJS et SocketIO en mode scalable dans le Cloud - GAB 2015
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)
 

Yammer et nodejs

  • 1. ERYEM CAMPS Dashboard Yammer sous SharePoint Partie 1/2 1 Présenté par : Barbar MITRI bmitri@eryem.com Levallois 15/01/2015
  • 2. Plan 1. Présentation du sujet 1. Utilisation de NodeJS 2. Architecture applicative 2. Démo 3. Référence 2
  • 3. NodeJS  Les évènements  Les modules Node.js et NPM  Le framework Express.js 3
  • 4. 4 Architecture technique YammerControl YamSQL SQLServerProxy SPAppYammerDurandal Bibliothèque de classes pour interroger API Yammer Projet pour insérer les données Yammer dans la base Proxy NodeJS pour exposer les requêtes de base de données en tant que Web Services JSON App SharePoint qui consomme les données retournées par le proxy
  • 5. 5 Architecture applicative 4 Yammer SQL Server 1°)2°) 3°) 4°) 5°) Proxy nodeJS 1 => connexion à l’application Sharepoint 2 => Sharepoint renvoie le contenu Statique au client : html + CSS + JS 3 => avec l’autorisation de Sharepoint on redirige le client vers le serveur Proxy (NodeJS) 4 => Le proxy solicite le serveur de base de données 5 => réponse de la base 6 => Le proxy retourne les données vers le client
  • 6. 6 public ZipArchive GetExport(DateTime exportStartDate) { try { var url = String.Format("https://www.yammer.com/api/v1/export?model=Message&model=User&model=Group&mo del=Topic&model=UploadedFileVersion&model=DocumentVersion&access_token={0}&include=csv&incl ude_ens=false&since=" + exportStartDate.ToString("yyyy-MM-dd") + "T00%3A00%3A00%2B00%3A00", this.accessToken); HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.Headers.Add("Authorization", "Bearer" + " " + this.accessToken); using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { using (var stream = response.GetResponseStream()) { return new ZipArchive(stream); } } } catch (Exception ex) { throw new Exception("GetExport : " + " " + ex.Message); } } Récupération des données deYammer Requête GET à l’API Yammer en passant en paramètre le jeton d’accès (access token)
  • 7. 7 function runSQL(strReq, callback) { var connection = new sql.Connection(connection_string, function (err) { if (err) console.log(err); var request = new sql.Request(connection); // or: var request = connection.request(); request.query(strReq, function (err, recordset) { if(err) console.log(err); callback(recordset); }); connection.close(); }); }; app.get('/StatFilebyUser', function (req, res) { var strReq = 'SELECT y.name, count(*) as number_file' + ' FROM [dbo].[file] ' + ' inner join [dbo].[YammerUser] y on y.[UserID] = [uploader_id]' + ' group by [UserID] ,y.name'; runSQL(strReq, function (result) { res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify(result)); res.end(); }); }); app.use(function (req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Content-Type, X-Requested-With"); res.type('application/json'); next(); }); https.createServer(httpsOptions, app).listen("8000", ip.address()); Proxy : Nodejs runSQL: encapsule la connexion à la base de données app.get: définit un point de terminaison et le traitement à effectuer en réponse à la requête app.use: fonction exécutée avant toute requête, permet de fixer les headers http.createServer.listen: ouvre le port pour écoute
  • 8. Conclusion 8 Utilisation des Yammer API dans un client .Net Utilisation du NodeJS pour exposer les données
  • 9. Références 9 Tutoriels et exemples Node Js : http://nodejs.org/ Yammer Developer : https://developer.yammer.com/ Newtonsoft.json: https://www.nuget.org/packages/Newtonsoft.Json/

Notes de l'éditeur

  1. 1 => connexion à l’application Sharepoint 2 => Sharepoint renvoie le contenu Statique au client : html + CSS + JS 3=> avec l’autorisation de Sharepoint on redirige le client vers le serveur Proxy (NodeJS) 4=> proxy solicite le serveur de base de données 5=> reponse de la base 6=> le proxy retourne les données vers le client