generated from fission-codes/project-template
/
file.ts
35 lines (25 loc) · 890 Bytes
/
file.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import type { CID } from "multiformats/cid"
import * as protocol from "../protocol/index.js"
import { AddResult, FileContent } from "../../ipfs/index.js"
import { isObject } from "../../common/index.js"
import BaseFile from "../base/file.js"
export class BareFile extends BaseFile {
static create(content: FileContent): BareFile {
return new BareFile(content)
}
static async fromCID(cid: CID): Promise<BareFile> {
const content = await protocol.basic.getFile(cid)
return new BareFile(content)
}
static instanceOf (obj: any): obj is BareFile {
return isObject(obj) && obj.content !== undefined
}
async put(): Promise<CID> {
const { cid } = await this.putDetailed()
return cid
}
async putDetailed(): Promise<AddResult> {
return protocol.basic.putFile(await protocol.pub.normalizeFileContent(this.content))
}
}
export default BareFile