-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.js
More file actions
38 lines (31 loc) · 993 Bytes
/
index.js
File metadata and controls
38 lines (31 loc) · 993 Bytes
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
var Q = require('q');
var dns = require('dns');
var debug = require('debug')('popcorn:dnstxt')
module.exports = function(addr) {
if (typeof addr !== 'string')
return Q(addr);
if (! addr.match(/^dnstxt/i))
return Q(addr);
debug ('processing', addr);
addr = addr.replace(/^dnstxt:\/\//, '')
var end = addr.split('/').splice(1).join('/');
addr = addr.replace(/\/.*/, '');
var d = Q.defer();
dns.resolveTxt(addr, function (err, addresses) {
if (err) {
debug ('rejecting error', err);
return d.reject(err);
}
if (!addresses || !addresses.length
|| !addresses[0] || !addresses[0].length) {
debug('rejecting, addresses is malformed', addresses)
return d.reject (addresses)
}
var ret = addresses[0][0]
if (end)
ret += '/' + end;
debug ('resolving', ret);
return d.resolve(ret);
});
return d.promise;
}