UNPKG

ipfs-http-client

Version:
32 lines 1.2 kB
import { CID } from 'multiformats/cid'; import { configure } from '../lib/configure.js'; import { multipartRequest } from 'ipfs-core-utils/multipart-request'; import { toUrlSearchParams } from '../lib/to-url-search-params.js'; import { abortSignal } from '../lib/abort-signal.js'; import { AbortController } from 'native-abort-controller'; export const createPut = (codecs, options) => { const fn = configure(api => { const put = async (dagNode, options = {}) => { const settings = { format: 'dag-cbor', hashAlg: 'sha2-256', inputEnc: 'raw', ...options }; const codec = await codecs.getCodec(settings.format); const serialized = codec.encode(dagNode); const controller = new AbortController(); const signal = abortSignal(controller.signal, settings.signal); const res = await api.post('dag/put', { timeout: settings.timeout, signal, searchParams: toUrlSearchParams(settings), ...await multipartRequest([serialized], controller, settings.headers) }); const data = await res.json(); return CID.parse(data.Cid['/']); }; return put; }); return fn(options); };