UNPKG

ipfs-http-client

Version:
40 lines (33 loc) 1.09 kB
'use strict' const configure = require('../lib/configure') const toUrlSearchParams = require('../lib/to-url-search-params') const { Value } = require('./response-types') const uint8ArrayToString = require('uint8arrays/to-string') const uint8ArrayFromString = require('uint8arrays/from-string') /** * @typedef {import('../types').HTTPClientExtraOptions} HTTPClientExtraOptions * @typedef {import('ipfs-core-types/src/dht').API<HTTPClientExtraOptions>} DHTAPI */ module.exports = configure(api => { /** * @type {DHTAPI["get"]} */ async function get (key, options = {}) { const res = await api.post('dht/get', { timeout: options.timeout, signal: options.signal, searchParams: toUrlSearchParams({ arg: key instanceof Uint8Array ? uint8ArrayToString(key) : key, ...options }), headers: options.headers }) for await (const message of res.ndjson()) { if (message.Type === Value) { return uint8ArrayFromString(message.Extra, 'base64pad') } } throw new Error('not found') } return get })