From 7af562d9e2eadd7e641dad81b743ef8d46a1e103 Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Mon, 30 Nov 2015 23:05:26 +0100 Subject: [PATCH] Fix #236 better know identity informations --- app/controllers/wot.js | 34 +++++++++++++++++++++++++++++++--- app/lib/streams/bma.js | 2 +- doc/HTTP_API.md | 28 ++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/app/controllers/wot.js b/app/controllers/wot.js index 3149cd2f3..3990193ac 100644 --- a/app/controllers/wot.js +++ b/app/controllers/wot.js @@ -1,11 +1,9 @@ "use strict"; var co = require('co'); -var util = require('util'); var async = require('async'); var _ = require('underscore'); var Q = require('q'); -var stream = require('stream'); -var unix2dos = require('../lib/unix2dos'); +var moment = require('moment'); var dos2unix = require('../lib/dos2unix'); var http2raw = require('../lib/streams/parsers/http2raw'); var jsoner = require('../lib/streams/jsoner'); @@ -122,6 +120,7 @@ function WOTBinding (server) { if (certifier) { cert.uid = certifier.uid; cert.isMember = certifier.member; + cert.sigDate = moment(certifier.time).unix(); cert.wasMember = true; // As we checked if(certified) if (!cert.cert_time) { // TODO: would be more efficient to save medianTime on certification reception @@ -138,6 +137,7 @@ function WOTBinding (server) { var json = { pubkey: idty.pubkey, uid: idty.uid, + sigDate: moment(idty.time).unix(), isMember: idty.member, certifications: [] }; @@ -148,6 +148,7 @@ function WOTBinding (server) { isMember: cert.isMember, wasMember: cert.wasMember, cert_time: cert.cert_time, + sigDate: cert.sigDate, written: cert.linked ? { number: cert.written_block, hash: cert.written_hash @@ -231,6 +232,7 @@ function WOTBinding (server) { if (certified) { cert.uid = certified.uid; cert.isMember = certified.member; + cert.sigDate = moment(certified.time).unix(); cert.wasMember = true; // As we checked if(certified) if (!cert.cert_time) { // TODO: would be more efficient to save medianTime on certification reception @@ -247,6 +249,7 @@ function WOTBinding (server) { var json = { pubkey: idty.pubkey, uid: idty.uid, + sigDate: moment(idty.time).unix(), isMember: idty.member, certifications: [] }; @@ -257,6 +260,7 @@ function WOTBinding (server) { isMember: cert.isMember, wasMember: cert.wasMember, cert_time: cert.cert_time, + sigDate: cert.sigDate, written: cert.linked ? { number: cert.written_block, hash: cert.written_hash @@ -275,6 +279,30 @@ function WOTBinding (server) { }); }; + this.identityOf = function (req, res) { + res.type('application/json'); + return co(function *() { + try { + let search = yield ParametersService.getSearchP(req); + let idty = yield IdentityService.findMemberWithoutMemberships(search); + if (!idty) { + throw 'Identity not found'; + } + if (!idty.member) { + throw 'Not a member'; + } + var json = { + pubkey: idty.pubkey, + uid: idty.uid, + sigDate: moment(idty.time).unix() + }; + res.send(200, JSON.stringify(json, null, " ")); + } catch(e) { + res.send(400, e); + } + }); + }; + this.add = function (req, res) { res.type('application/json'); var onError = http400(res); diff --git a/app/lib/streams/bma.js b/app/lib/streams/bma.js index fc3dad18d..16b24c455 100644 --- a/app/lib/streams/bma.js +++ b/app/lib/streams/bma.js @@ -1,6 +1,5 @@ var http = require('http'); var express = require('express'); -var async = require('async'); var log4js = require('log4js'); var co = require('co'); var Q = require('q'); @@ -93,6 +92,7 @@ module.exports = function(server, interfaces, httpLogs) { answerForGet( '/wot/requirements/:pubkey', wot.requirements); answerForGet( '/wot/certifiers-of/:search', wot.certifiersOf); answerForGet( '/wot/certified-by/:search', wot.certifiedBy); + answerForGet( '/wot/identity-of/:search', wot.identityOf); var transactions = require('../../controllers/transactions')(server); var dividend = require('../../controllers/uds')(server); diff --git a/doc/HTTP_API.md b/doc/HTTP_API.md index 28a795ea2..1da478db1 100644 --- a/doc/HTTP_API.md +++ b/doc/HTTP_API.md @@ -465,6 +465,7 @@ Each certification also has: "pubkey": "HsLShAtzXTVxeUtQd7yi5Z5Zh4zNvbu8sTEZ53nfKcqY", "uid": "user identifier", "isMember": true, + sigDate: 1421787461, "certifications": [ { "pubkey": "9WYHTavL1pmhunFCzUwiiq4pXwvgGG5ysjZnjz9H8yB", @@ -473,6 +474,7 @@ Each certification also has: "block": 88, "medianTime": 1509991044 }, + sigDate: 1421787461, "written": { "number": 872768, "hash": "D30978C9D6C5A348A8188603F039423D90E50DC5" @@ -511,6 +513,7 @@ Each certification also has: "pubkey": "HsLShAtzXTVxeUtQd7yi5Z5Zh4zNvbu8sTEZ53nfKcqY", "uid": "user identifier", "isMember": true, + sigDate: 1421787461, "certifications": [ { "pubkey": "9WYHTavL1pmhunFCzUwiiq4pXwvgGG5ysjZnjz9H8yB", @@ -519,6 +522,7 @@ Each certification also has: "block": 88, "medianTime": 1509991044 }, + sigDate: 1421787461, "written": { "number": 872768, "hash": "D30978C9D6C5A348A8188603F039423D90E50DC5" @@ -531,6 +535,30 @@ Each certification also has: } ``` +#### `wot/identity-of/[search]` + + +**Goal** + +GET identity data written for a member. + +**Parameters** + +Name | Value | Method +---- | ----- | ------ +`search` | Public key or uid of a *member* we want see the attached identity. | URL + +**Returns** + +Identity data written in the blockchain. +```json +{ + "pubkey": "HsLShAtzXTVxeUtQd7yi5Z5Zh4zNvbu8sTEZ53nfKcqY", + "uid": "user identifier", + "sigDate": 1390739944 +} +``` + ### currency/* #### `currency/parameters` -- GitLab