dat-link-resolvedeprecated

resolve urls, links to a dat key

Usage no npm install needed!

<script type="module">
  import datLinkResolve from 'https://cdn.skypack.dev/dat-link-resolve';
</script>

README

deprecated

More info on active projects and modules at dat-ecosystem.org


dat-link-resolve

resolve urls, links to a dat key using common methods

npm travis standard

Supports

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

Install

npm install dat-link-resolve

Usage

var datResolve = require('dat-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 dat-encoding
  2. Check headers in http request
  3. Check JSON request response for key
  4. Dat-DNS resolution via dat-dns

Refering to dats

Trying to tighten up a bit dat-link-resolve (and its dependencies dat-dns and dat-decode). I am noticing a few inconsistencies as I'm writing dat-shell.

Ideally, I'd like to launch dat-shell like this:

$ dat-shell dat://40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9+5/path4

and have it open the dat at version 5 and change directory to /path4.

Currently dat-shell google-fonts-kewitz.hashbase.io/fonts/ fails somewhere in dat-link-resolve.

Examples

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

Simplest

  • Plain: 40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9
  • DNS: pfrazee.hashbase.io

With version

  • Plain: 40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9+5
  • DNS: pfrazee.hashbase.io+5

With scheme

  • https: https://40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9/
  • dat: dat://pfrazee.hashbase.io

With path

  • https: 40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9/path1
  • dat: pfrazee.hashbase.io/path2

Combinations

  • 40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9+5/path3
  • dat://40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9+5/path4
  • https://40a7f6b6147ae695bcbcff432f684c7bb5291ea339c28c1755896cdeb80bd2f9/path5 (^1)
  • https://pfrazee.hashbase.io+5/path6 (^2)

Notes

  1. browsers expect http and https schemes with traditional hostname, not a dat 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