1 | var check = require('check-types');
|
2 | var verify = check.verify;
|
3 | var crypto = require('crypto');
|
4 |
|
5 | module.exports = function (installable, capabilities) {
|
6 | check.map(installable, {
|
7 | oauthId: verify.string,
|
8 | oauthSecret: verify.string,
|
9 | groupId: verify.number,
|
10 | roomId: verify.maybe.number
|
11 | });
|
12 |
|
13 | check.map(capabilities, {
|
14 | links: {
|
15 | self: verify.webUrl,
|
16 | api: verify.webUrl,
|
17 | homepage: verify.webUrl
|
18 | },
|
19 | capabilities: {
|
20 | oauth2Provider: {
|
21 | tokenUrl: verify.webUrl
|
22 | }
|
23 | }
|
24 | });
|
25 |
|
26 | var webhookToken = crypto.createHash('sha1')
|
27 | .update(installable.oauthId)
|
28 | .update(installable.oauthSecret)
|
29 | .digest('hex');
|
30 |
|
31 | return {
|
32 | id: installable.oauthId,
|
33 | secret: installable.oauthSecret,
|
34 | group: installable.groupId,
|
35 | room: installable.roomId,
|
36 | webhookToken: webhookToken,
|
37 | links: {
|
38 | capabilities: capabilities.links.self,
|
39 | base: capabilities.links.homepage,
|
40 | api: capabilities.links.api,
|
41 | token: capabilities.capabilities.oauth2Provider.tokenUrl
|
42 | }
|
43 | };
|
44 | };
|