resolve urls, links to a dweb key using common methods
- Common dweb key representations (
dweb://
, etc.) - URLs with keys in them (
dwebx.org/6161616161616161616161616161616161616161616161616161616161616161
) dwebfs-key
ordweb-key
headers- Url to JSON http request that returns
{key: <dweb-key>}
- DWeb-DNS resolution (via dweb-dns)
npm install dweb-link-resolve
var datResolve = require('dweb-link-resolve')
datResolve(link, function (err, key) {
console.log('found key', key)
})
Link can be string or buffer.
Resolution order:
- Validate buffers or any strings with 64 character hashes in them via dweb-encoding
- Check headers in http request
- Check JSON request response for
key
- DWeb-DNS resolution via dweb-dns
Trying to tighten up a bit dweb-link-resolve (and its dependencies dweb-dns and dweb-decode). I am noticing a few inconsistencies as I'm writing dweb-shell.
Ideally, I'd like to launch dweb-shell like this:
$ dweb-shell dweb://40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9+5/path4
and have it open the dweb at version 5 and change directory to /path4.
Currently dweb-shell google-fonts-kewitz.hashbase.io/fonts/
fails somewhere in dweb-link-resolve.
Note that dweb-link-resolve also supports other methods, such as detection of dweb keys in paths and http headers.
- Plain: 40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9
- DNS: dbrowser.com
- Plain: 40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9+5
- DNS: dbrowser.com+5
- https: https://40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9/
- dweb: dweb://dbrowser.com
- https: 40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9/path1
- dweb: dbrowser.com/path2
- 40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9+5/path3
- dweb://40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9+5/path4
- https://40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9/path5 (^1)
- https://dbrowser.com+5/path6 (^2)
- browsers expect http and https schemes with traditional hostname, not a dweb key
- browsers expect http and https schemes with traditional hostname, no +5 (version) support
Contributions welcome! Please read the contributing guidelines first.