forked from 1self/api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutil.js
More file actions
108 lines (95 loc) · 3.16 KB
/
Copy pathutil.js
File metadata and controls
108 lines (95 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
var crypto = require('crypto');
var mongoDbConnection = require('./lib/connection.js');
var mongoRespository = require('./mongoRepository.js');
var q = require('q');
var moment = require("moment");
var Util = function () {
};
Util.prototype.createStream = function (callback) {
crypto.randomBytes(16, function (ex, buf) {
if (ex) throw ex;
var streamid = [];
for (var i = 0; i < buf.length; i++) {
var charCode = String.fromCharCode((buf[i] % 26) + 65);
streamid.push(charCode);
}
var writeToken = crypto.randomBytes(22).toString('hex');
var readToken = crypto.randomBytes(22).toString('hex');
var stream = {
streamid: streamid.join(''),
writeToken: writeToken,
readToken: readToken
};
mongoDbConnection(function (qdDb) {
qdDb.collection('stream').insert(stream, function (err, insertedRecords) {
if (err) {
console.log(err);
callback(err, null);
} else {
console.log("Inserted records", insertedRecords[0]);
callback(null, insertedRecords[0]);
}
});
});
});
};
var generateStream = function (appId, callbackUrl) {
var deferred = q.defer();
crypto.randomBytes(16, function (ex, buf) {
if (ex) {
deferred.reject(ex);
}
var streamid = [];
for (var i = 0; i < buf.length; i++) {
var charCode = String.fromCharCode((buf[i] % 26) + 65);
streamid.push(charCode);
}
var writeToken = crypto.randomBytes(22).toString('hex');
var readToken = crypto.randomBytes(22).toString('hex');
var stream = {
streamid: streamid.join(''),
writeToken: writeToken,
readToken: readToken,
callbackUrl: callbackUrl,
appId: appId
};
deferred.resolve(stream);
});
return deferred.promise;
};
Util.prototype.createV1Stream = function (appId, callbackUrl) {
return generateStream(appId, callbackUrl)
.then(function (stream) {
return mongoRespository.insert('stream', stream);
});
};
Util.prototype.registerApp = function (appEmail) {
var appId = crypto.randomBytes(16).toString('hex');
var appSecret = crypto.randomBytes(32).toString('hex');
var appDetails = {
appEmail: appEmail,
createdOn: moment.utc().toDate(),
appId: "app-id-" + appId,
appSecret: "app-secret-" + appSecret
};
return mongoRespository.insert('registeredApps', appDetails);
};
Util.prototype.streamExists = function (streamId, readToken) {
var query = {
streamid: streamId,
readToken: readToken
};
var deferred = q.defer();
mongoRespository.findOne('stream', query)
.then(function (stream) {
if (stream) {
deferred.resolve(true);
} else {
deferred.resolve(false);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
};
module.exports = new Util();