improve conversation view

Change-Id: I63189d0b61d45e659ac7618a977282f7b4500753
diff --git a/routes/jami.js b/routes/jami.js
index 9ba97a7..5d50002 100644
--- a/routes/jami.js
+++ b/routes/jami.js
@@ -7,6 +7,7 @@
 
     getRouter() {
         const router = express.Router({mergeParams: true})
+        router.use(express.json());
 
         // Accounts
         router.get(['/accounts'], (req, res, next) => {
@@ -14,7 +15,10 @@
             res.json(this.jami.getAccountList().map(account => account.getSummary()))
         })
 
-        router.get(['/accounts/:accountId'], (req, res, next) => {
+        const accountRouter = express.Router({mergeParams: true})
+        router.use('/accounts/:accountId', accountRouter)
+
+        accountRouter.get(['/'], (req, res, next) => {
             console.log(`Get account ${req.params.accountId}`)
             const account = this.jami.getAccount(req.params.accountId)
             if (account)
@@ -24,7 +28,7 @@
         })
 
         // Contacts
-        router.get(['/accounts/:accountId/contacts'], (req, res, next) => {
+        accountRouter.get(['/contacts'], (req, res, next) => {
             console.log(`Get account ${req.params.accountId}`)
             const account = this.jami.getAccount(req.params.accountId)
             if (account)
@@ -34,24 +38,79 @@
         })
 
         // Conversations
-        const conversationRouter = express.Router({mergeParams: true})
-        conversationRouter.get('/', (req, res, next) => {
+        accountRouter.get('/conversations', (req, res, next) => {
             console.log(`Get conversations for account ${req.params.accountId}`)
             const account = this.jami.getAccount(req.params.accountId)
             if (!account)
                 res.sendStatus(404)
-            res.json(account.getConversationIds())
+            const conversations = account.getConversations()
+            res.json(Object.keys(conversations).map(conversationId => conversations[conversationId].getObject({
+                memberFilter: member => member.contact.getUri() !== account.getUri()
+            })))
+            //res.json(account.getConversations())
         })
 
-        conversationRouter.get('/:conversationId', (req, res, next) => {
+        accountRouter.post('/conversations', (req, res, next) => {
+            console.log(`Create conversations for account, contact ${req.params.accountId}`)
+            console.log(req.body)
+            const account = this.jami.getAccount(req.params.accountId)
+            if (!account)
+                res.sendStatus(404)
+            if (req.body.members.length === 1) {
+                const details = this.jami.addContact(req.params.accountId, req.body.members[0])
+                res.json(details)
+            } else
+                res.sendStatus(400)
+        })
+
+        accountRouter.get('/conversations/:conversationId', (req, res, next) => {
             console.log(`Get conversation ${req.params.conversationId} for account ${req.params.accountId}`)
             const account = this.jami.getAccount(req.params.accountId)
             if (!account)
                 res.sendStatus(404)
-            res.json(account.getConversation(req.params.conversationId))
+            const conversation = account.getConversation(req.params.conversationId)
+            if (!conversation)
+                res.sendStatus(404)
+            else {
+                res.json(conversation.getObject({
+                    memberFilter: member => member.contact.getUri() !== account.getUri()
+                }))
+            }
         })
 
-        router.use('/accounts/:accountId/conversations', conversationRouter)
+        // Nameserver
+        const nsRouter = express.Router({mergeParams: true})
+        accountRouter.use('/ns', nsRouter)
+
+        nsRouter.get(['/name/:nameQuery'], (req, res, next) => {
+            console.log(`Name lookup ${req.params.nameQuery}`)
+            this.jami.lookupName(req.params.accountId, req.params.nameQuery)
+                .then(result => {
+                    if (result.state == 0)
+                        res.json(result)
+                    else if (result.state == 1)
+                        res.sendStatus(400)
+                    else
+                        res.sendStatus(404)
+                }).catch(e => {
+                    res.sendStatus(404)
+                })
+        })
+        nsRouter.get(['/addr/:addrQuery'], (req, res, next) => {
+            console.log(`Address lookup ${req.params.addrQuery}`)
+            this.jami.lookupAddress(req.params.accountId, req.params.addrQuery)
+                .then(result => {
+                    if (result.state == 0)
+                        res.json(result)
+                    else if (result.state == 1)
+                        res.sendStatus(400)
+                    else
+                        res.sendStatus(404)
+                }).catch(e => {
+                    res.sendStatus(404)
+                })
+        })
+
         return router
     }
 }