From eab7b49141a1d86656a561360b22b02d2b35cd2e Mon Sep 17 00:00:00 2001 From: JeshuaRen <270813223@qq.com> Date: Wed, 5 Jun 2024 15:44:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Eipfs=20pin=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/pkgs/downloader/downloader.go | 11 +++++++-- common/pkgs/downloader/ipfs_pin.go | 36 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 common/pkgs/downloader/ipfs_pin.go diff --git a/common/pkgs/downloader/downloader.go b/common/pkgs/downloader/downloader.go index 513736d..d81e8f9 100644 --- a/common/pkgs/downloader/downloader.go +++ b/common/pkgs/downloader/downloader.go @@ -2,14 +2,13 @@ package downloader import ( "fmt" - "io" - lru "github.com/hashicorp/golang-lru/v2" "gitlink.org.cn/cloudream/common/pkgs/iterator" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" stgglb "gitlink.org.cn/cloudream/storage/common/globals" stgmod "gitlink.org.cn/cloudream/storage/common/models" coormq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/coordinator" + "io" ) const ( @@ -71,6 +70,14 @@ func (d *Downloader) DownloadObjects(reqs []DownloadReqeust) DownloadIterator { return iterator.FuseError[*Downloading](fmt.Errorf("request to coordinator: %w", err)) } + // 测试使用:将文件pin到ipfs + go func() { + err := PinFileToIPFS(*objDetails) + if err != nil { + print(err) + } + }() + req2s := make([]downloadReqeust2, len(reqs)) for i, req := range reqs { req2s[i] = downloadReqeust2{ diff --git a/common/pkgs/downloader/ipfs_pin.go b/common/pkgs/downloader/ipfs_pin.go new file mode 100644 index 0000000..73f4b94 --- /dev/null +++ b/common/pkgs/downloader/ipfs_pin.go @@ -0,0 +1,36 @@ +package downloader + +import ( + stgglb "gitlink.org.cn/cloudream/storage/common/globals" + coormq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/coordinator" +) + +type PinConfig struct { + IpfsPin IpfsConfig +} + +type IpfsConfig struct { + IpfsUrl string `json:"ipfsUrl"` +} + +// PinFileToIPFS pin file to IPFS +func PinFileToIPFS(objDetails coormq.GetObjectDetailsResp) error { + + client, err := stgglb.IPFSPool.Acquire() + if err != nil { + print(err) + } + + objs := objDetails.Objects + // 遍历objDetails + for _, obj := range objs { + cid := obj.Object.FileHash + err := client.Pin(cid) + if err != nil { + return err + } + print("IPFS pin success, filehash: " + cid) + } + + return nil +}