-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathFunctions-request-create-species-source.js
98 lines (88 loc) · 2.3 KB
/
Functions-request-create-species-source.js
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
const imageURI = args[0]
const randomness = args[1]
if (!secrets.imageApiKey) {
throw Error("Image API Key unavailable.")
}
if (!secrets.nftStorageApiKey) {
throw Error("NFT Storage API Key unavailable.")
}
const colors = [
"rgba(240,128,128,0.85)",
"rgba(255,0,255,0.22)",
"rgba(34,139,34,0.77)",
"rgba(0,0,205,0.31)",
"rgba(70,130,180,0.48)",
"rgba(218,112,214,0.96)",
"rgba(0,128,0,0.64)",
"rgba(138,43,226,0.56)",
"rgba(255,165,0,0.93)",
"rgba(128,0,0,0.41)",
"rgba(0,255,0,0.8)",
"rgba(123,104,238,0.15)",
"rgba(70,130,180,0.29)",
"rgba(173,216,230,0.72)",
"rgba(154,205,50,0.6)",
"rgba(250,128,114,0.27)",
"rgba(0,255,127,0.33)",
"rgba(240,230,140,0.87)",
"rgba(139,69,19,0.52)",
"rgba(0,191,255,0.43)",
]
const color = colors[randomness % 20]
const editImageRequest = Functions.makeHttpRequest({
url: `https://rest.apitemplate.io/v2/create-image`,
method: "POST",
headers: { Authorization: `Token ${secrets.imageApiKey}`, "Content-Type": "application/json" },
params: {
template_id: "06a77b23a4c61dae",
expiration: "0",
},
data: JSON.stringify({
overrides: [
{
name: "rect_1",
stroke: "grey",
backgroundColor: color,
},
{
name: "img_1",
stroke: "grey",
src: imageURI,
},
],
}),
})
const [editImageResponse] = await Promise.all([editImageRequest])
if (editImageResponse.error) {
throw Error("Edit Image errored")
}
const metadata = {
name: "Relic",
description: "Relics created for a NFT relationship",
image: editImageResponse.data.download_url_png,
attributes: [
{
trait_type: "Rarity",
value: randomness % 20,
},
],
}
new File()
const metadataString = JSON.stringify(metadata)
const storeNFTmetadataRequest = Functions.makeHttpRequest({
url: "https://zixins-be1.adaptable.app/auth/store",
method: "POST",
headers: {
Authorization: `Bearer ${secrets.nftStorageApiKey}`,
},
data: {
metadataString: metadataString,
},
})
const [storeNFTmetadataResponse] = await Promise.all([storeNFTmetadataRequest])
if (!storeNFTmetadataResponse.error) {
const metadataUri = "https://" + storeNFTmetadataResponse.data.value.cid + ".ipfs.nftstorage.link/metadata.json"
return Functions.encodeString(metadataUri)
} else {
throw Error("NFT Storage Error")
}