UNPKG

@pinata/sdk

Version:

Official SDK for the Pinata IPFS platform

48 lines (41 loc) 1.64 kB
import axios from 'axios'; import { baseUrl } from '../../constants'; import { createConfigForAxiosHeaders, validateMetadata, validatePinataOptions } from '../../util/validators'; import { handleError } from '../../util/errorResponse'; import { PinataConfig } from '../..'; import { PinataPinOptions, PinataPinResponse } from './pinFileToIPFS'; export default function pinJSONToIPFS(config: PinataConfig, body: any, options? : PinataPinOptions):Promise<PinataPinResponse> { let requestBody: any = body; if (typeof body !== 'object') { throw new Error('body must be a valid JSON object'); } if (options) { requestBody = { pinataContent: body }; if (options.pinataMetadata) { validateMetadata(options.pinataMetadata); requestBody.pinataMetadata = options.pinataMetadata; } if (options.pinataOptions) { validatePinataOptions(options.pinataOptions); requestBody.pinataOptions = options.pinataOptions; } } const endpoint = `${baseUrl}/pinning/pinJSONToIPFS`; return new Promise((resolve, reject) => { axios.post( endpoint, requestBody, {...createConfigForAxiosHeaders(config)}) .then(function (result) { if (result.status !== 200) { reject(new Error(`unknown server response while pinning JSON to IPFS: ${result}`)); } resolve(result.data); }).catch(function (error) { const formattedError = handleError(error); reject(formattedError); }); }); }