Commit 9c4fb40a5895ae6b15a97fd152cb7698b6cee509
update invite to latest
Ev Bogue committed on 8/30/2017, 4:42:59 PMParent: 641c937da32870fce2e530c38a158c29bde32bb9
Files changed
plugins/invite.js | changed |
plugins/invite.js | ||
---|---|---|
@@ -1,4 +1,5 @@ | ||
1 … | +'use strict' | |
1 | 2 … | var crypto = require('crypto') |
2 | 3 … | var ssbKeys = require('ssb-keys') |
3 | 4 … | var toAddress = require('../lib/util').toAddress |
4 | 5 … | var cont = require('cont') |
@@ -26,8 +27,12 @@ | ||
26 | 27 … | function isObject(o) { |
27 | 28 … | return o && 'object' === typeof o |
28 | 29 … | } |
29 | 30 … | |
31 … | +function isNumber(n) { | |
32 … | + return 'number' === typeof n && !isNaN(n) | |
33 … | +} | |
34 … | + | |
30 | 35 … | module.exports = { |
31 | 36 … | name: 'invite', |
32 | 37 … | version: '1.0.0', |
33 | 38 … | manifest: mdm.manifest(apidoc), |
@@ -59,14 +64,19 @@ | ||
59 | 64 … | }) |
60 | 65 … | }) |
61 | 66 … | |
62 | 67 … | return { |
63 | - create: valid.async(function (n, cb) { | |
64 | - var modern = false | |
65 | - if(isObject(n) && n.modern) { | |
66 | - n = 1 | |
67 | - modern = true | |
68 … | + create: valid.async(function (opts, cb) { | |
69 … | + opts = opts || {} | |
70 … | + if(isNumber(opts)) | |
71 … | + opts = {uses: opts} | |
72 … | + else if(isObject(opts)) { | |
73 … | + if(opts.modern) | |
74 … | + opts.uses = 1 | |
68 | 75 … | } |
76 … | + else if(isFunction(opts)) | |
77 … | + cb = opts, opts = {} | |
78 … | + | |
69 | 79 … | var addr = server.getAddress() |
70 | 80 … | var host = ref.parseAddress(addr).host |
71 | 81 … | if(!config.allowPrivate && (ip.isPrivate(host) || 'localhost' === host)) |
72 | 82 … | return cb(new Error('Server has no public ip address, ' |
@@ -85,32 +95,35 @@ | ||
85 | 95 … | // store metadata under the generated pubkey |
86 | 96 … | var owner = server.id |
87 | 97 … | codesDB.put(keyCap.id, { |
88 | 98 … | id: keyCap.id, |
89 | - total: +n, | |
99 … | + total: +opts.uses || 1, | |
100 … | + note: opts.note, | |
90 | 101 … | used: 0, |
91 | 102 … | permissions: {allow: ['invite.use', 'getAddress'], deny: null} |
92 | 103 … | }, function (err) { |
93 | 104 … | // emit the invite code: our server address, plus the key-seed |
94 | 105 … | if(err) cb(err) |
95 | - else if(modern && server.ws && server.ws.getAddress) { | |
106 … | + else if(opts.modern && server.ws && server.ws.getAddress) { | |
96 | 107 … | cb(null, server.ws.getAddress()+':'+seed.toString('base64')) |
97 | 108 … | } |
98 | 109 … | else { |
99 | 110 … | addr = ref.parseAddress(addr) |
100 | 111 … | cb(null, [addr.host, addr.port, addr.key].join(':') + '~' + seed.toString('base64')) |
101 | 112 … | } |
102 | 113 … | }) |
103 | - }, 'number|object'), | |
114 … | + }, 'number|object', 'string?'), | |
104 | 115 … | use: valid.async(function (req, cb) { |
105 | 116 … | var rpc = this |
106 | 117 … | |
107 | 118 … | // fetch the code |
108 | 119 … | codesDB.get(rpc.id, function(err, invite) { |
109 | 120 … | if(err) return cb(err) |
110 | 121 … | |
111 | 122 … | // check if we're already following them |
112 | - server.friends.all('follow', function(err, follows) { | |
123 … | + server.friends.get(function (err, follows) { | |
124 … | +// server.friends.all('follow', function(err, follows) { | |
125 … | +// if(hops[req.feed] == 1) | |
113 | 126 … | if (follows && follows[server.id] && follows[server.id][req.feed]) |
114 | 127 … | return cb(new Error('already following')) |
115 | 128 … | |
116 | 129 … | // although we already know the current feed |
@@ -142,9 +155,10 @@ | ||
142 | 155 … | server.publish({ |
143 | 156 … | type: 'contact', |
144 | 157 … | contact: req.feed, |
145 | 158 … | following: true, |
146 | - pub: true | |
159 … | + pub: true, | |
160 … | + note: invite.note || undefined | |
147 | 161 … | }, cb) |
148 | 162 … | }) |
149 | 163 … | }) |
150 | 164 … | }) |
@@ -170,8 +184,9 @@ | ||
170 | 184 … | |
171 | 185 … | opts = ref.parseAddress(ref.parseInvite(invite).remote) |
172 | 186 … | |
173 | 187 … | ssbClient(null, { |
188 … | + caps: config.caps, | |
174 | 189 … | remote: invite, |
175 | 190 … | manifest: {invite: {use: 'async'}, getAddress: 'async'} |
176 | 191 … | }, function (err, rpc) { |
177 | 192 … | if(err) return cb(explain(err, 'could not connect to server')) |
@@ -213,5 +228,4 @@ | ||
213 | 228 … | } |
214 | 229 … | } |
215 | 230 … | } |
216 | 231 … | |
217 | - |
Built with git-ssb-web