-
Notifications
You must be signed in to change notification settings - Fork 5
/
store_retrieve.py
72 lines (57 loc) · 2.26 KB
/
store_retrieve.py
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import os
from pathlib import Path
from pygate_grpc.client import PowerGateClient
if __name__ == "__main__":
hostName = "127.0.0.1:5002"
# Create client
c = PowerGateClient(hostName, False)
# Create user
user = c.admin.users.create()
print("User created:")
print(user)
# Stage file
print("Staging 'testfile.txt' to IPFS storage...")
path = Path(os.path.abspath(__file__))
staged_file = c.data.stage_file(path.parent / "testfile.txt", user.token)
print("IPFS CID: " + staged_file.cid)
# Apply the default storage config to the given file
print("Applying Filecoin storage config to CID...")
job = c.config.apply(staged_file.cid, override=False, token=user.token)
# Report back the Job ID for the successful Filecoin storage job
print("File successfully added to Filecoin storage.")
print("Job ID: " + job.jobId)
# Override push with another config
print("Applying new config settings to file...")
addresses = c.wallet.addresses(user.token)
wallet = addresses[0].address
new_config = {
"hot": {"enabled": True, "allowUnfreeze": True, "ipfs": {"addTimeout": 30}},
"cold": {
"enabled": True,
"filecoin": {
"replicationFactor": 1,
"dealMinDuration": 518400,
"excludedMiners": ["t01101"],
"trustedMiners": ["t01000", "t02000"],
"countryCodes": ["ca", "nl"],
"renew": {"enabled": True, "threshold": 3},
"address": wallet,
"maxPrice": 50,
},
},
"repairable": True,
}
c.config.apply(staged_file.cid, override=True, config=new_config, token=user.token)
# Check that CID is stored
check = c.data.cid_info(staged_file.cid, user.token)
print("Checking CID storage...")
print(check)
# Get the data back
print("Retrieving file " + staged_file.cid + "...")
file_bytes = c.data.get(staged_file.cid, user.token)
# Write to a file on disk
with open(path.parent / "testfile_copy.txt", "wb") as f:
f.write(file_bytes)
print("Saved as 'testfile_copy.txt'")
cid_summary = c.data.cid_summary(cids=[staged_file.cid], token=user.token)
print("CID summary: ", cid_summary)