2023-07-04 14:05:25 +02:00

31 lines
946 B
TypeScript

import BaseService from "@Services/BaseService";
import { Service } from "typedi";
import pinataSDK from "@pinata/sdk";
import { BackendVariables } from "@Common/config/variables/Variables";
import { Readable } from "stream";
@Service()
export default class FilesService extends BaseService {
private ipfsClient: pinataSDK;
constructor(protected variables: BackendVariables) {
super();
this.ipfsClient = new pinataSDK({ pinataApiKey: variables.PINATA_API_KEY, pinataSecretApiKey: variables.PINATA_API_SECRET });
}
/**
* @description : pin a file
* @throws {Error} If file cannot be pinned
*/
public async pinFile(stream: Readable, fileName: string) {
return this.ipfsClient.pinFileToIPFS(stream, { pinataMetadata: { name: fileName } });
}
/**
* @description : unpin a file
* @throws {Error} If file cannot be unpinned
*/
public async unpinFile(hashToUnpin: string) {
return this.ipfsClient.unpin(hashToUnpin);
}
}