From 2af26e91aab1bf59d3c8b60e4c5ffed83809fe82 Mon Sep 17 00:00:00 2001 From: Mell Date: Tue, 22 Aug 2023 17:50:59 +0300 Subject: [PATCH] Add new ipfs handler --- src/express-api/handlers/ipfsHandlers.ts | 22 +++++----------------- src/express-api/routes/ipfs.ts | 3 +-- src/ipfs/ipfsCluster.ts | 5 +++++ 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/src/express-api/handlers/ipfsHandlers.ts b/src/express-api/handlers/ipfsHandlers.ts index 335457fe..aee76c79 100644 --- a/src/express-api/handlers/ipfsHandlers.ts +++ b/src/express-api/handlers/ipfsHandlers.ts @@ -1,8 +1,7 @@ import * as express from 'express' import { newLogger, nonEmptyStr } from '@subsocial/utils' -import { ipfs, ipfsCluster } from '../../connections/ipfs' +import { ipfsCluster } from '../../connections/ipfs' import { maxFileSizeBytes, maxFileSizeMB } from '../config' -import { asIpfsCid } from '@subsocial/api' const log = newLogger('IPFS req handler') @@ -18,23 +17,12 @@ export const addContent = async (req: express.Request, res: express.Response) => } } -const getContentResponse = async (res: express.Response, cids: string[]) => { - try { - const ipfsCids = (Array.isArray(cids) ? cids : [ cids ]).map(asIpfsCid) - const contents = await ipfs.getContentArrayFromIpfs(ipfsCids) - log.debug(`${contents.length} content items loaded from IPFS`) - res.json(contents) - } catch (err) { - res.json(err) - } +export const saveData = async (req: express.Request, res: express.Response) => { + const cid = await ipfsCluster.saveData(req.body) + log.debug('Content added to IPFS with CID:', cid) + res.json(cid) } -export const getContentAsGetRequest = async (req: express.Request, res: express.Response) => - getContentResponse(res, req.query.cids as string[]) - -export const getContentAsPostRequest = async (req: express.Request, res: express.Response) => - getContentResponse(res, req.body.cids) - export const addFile = async (req: express.Request, res: express.Response) => { if (req.file.size > maxFileSizeBytes) { res.statusCode = 400 diff --git a/src/express-api/routes/ipfs.ts b/src/express-api/routes/ipfs.ts index e5fa3889..bca41c39 100644 --- a/src/express-api/routes/ipfs.ts +++ b/src/express-api/routes/ipfs.ts @@ -10,10 +10,9 @@ const createIpfsRoutes = () => { // IPFS API router.post('/addFile', upload.single('file'), ipfsReqHandlers.addFile) + router.post('/save', ipfsReqHandlers.saveData) router.post('/add', ipfsReqHandlers.addContent) - // router.get('/get', ipfsReqHandlers.getContentAsGetRequest) - // router.post('/get', ipfsReqHandlers.getContentAsPostRequest) router.delete('/pins/:cid', ipfsReqHandlers.deleteContent) return router diff --git a/src/ipfs/ipfsCluster.ts b/src/ipfs/ipfsCluster.ts index 1310eef9..967bfe78 100644 --- a/src/ipfs/ipfsCluster.ts +++ b/src/ipfs/ipfsCluster.ts @@ -126,6 +126,11 @@ export class IpfsClusterApi { return this.makeRequestAndPinCid(this.ipfsNodeRequest('dag/put', content)) } + /** Add a JSON object to IPFS via `/add` and pin it via IPFS cluster. */ + async saveData (content: string): Promise { + return this.makeRequestAndPinCid(this.ipfsClusterRequest('add', content)) + } + /** Delete a content from IPFS by unpinning it via IPFS cluster. */ async unpinContent (cid: IpfsCid) { try {