31 lines
946 B
TypeScript
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);
|
|
}
|
|
}
|