1.0.0 • Published 4 years ago

dweb-link-resolve v1.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

dweb-link-resolve

resolve urls, links to a dweb key using common methods

npm travis standard

Supports

  • Common dweb key representations (dweb://, etc.)
  • URLs with keys in them (dwebx.org/6161616161616161616161616161616161616161616161616161616161616161)
  • dwebfs-key or dweb-key headers
  • Url to JSON http request that returns {key: <dweb-key>}
  • DWeb-DNS resolution (via dweb-dns)

Install

npm install dweb-link-resolve

Usage

var datResolve = require('dweb-link-resolve')

datResolve(link, function (err, key) {
  console.log('found key', key)
})

API

datResolve(link, callback(err, key))

Link can be string or buffer.

Resolution order:

  1. Validate buffers or any strings with 64 character hashes in them via dweb-encoding
  2. Check headers in http request
  3. Check JSON request response for key
  4. DWeb-DNS resolution via dweb-dns

Refering to dwebs

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.

Examples

Note that dweb-link-resolve also supports other methods, such as detection of dweb keys in paths and http headers.

Simplest

  • Plain: 40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9
  • DNS: dbrowser.com

With version

  • Plain: 40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9+5
  • DNS: dbrowser.com+5

With scheme

With path

  • https: 40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9/path1
  • dweb: dbrowser.com/path2

Combinations

Notes

  1. browsers expect http and https schemes with traditional hostname, not a dweb key
  2. browsers expect http and https schemes with traditional hostname, no +5 (version) support

Contributing

Contributions welcome! Please read the contributing guidelines first.

License

MIT