/
metadata.go
85 lines (75 loc) · 2.79 KB
/
metadata.go
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
package imx
import (
"context"
"github.com/immutable/imx-core-sdk-golang/imx/api"
)
/*
AddMetadataSchemaToCollection Add metadata schema to collection
@param ctx context.Context - for cancellation, deadlines, tracing, etc or context.Background().
@param l1signer Ethereum signer used for ownership authentication.
@param contractAddress Collection contract address
@param addMetadataSchemaToCollectionRequest The request struct with all the params.
@return SuccessResponse
*/
func (c *Client) AddMetadataSchemaToCollection(
ctx context.Context,
l1signer L1Signer,
contractAddress string,
addMetadataSchemaToCollectionRequest api.AddMetadataSchemaToCollectionRequest,
) (*api.SuccessResponse, error) {
timestamp, signature, err := generateIMXAuthorisationHeaders(l1signer)
if err != nil {
return nil, err
}
successResponse, httpResponse, err := c.metadataAPI.AddMetadataSchemaToCollection(ctx, contractAddress).
AddMetadataSchemaToCollectionRequest(addMetadataSchemaToCollectionRequest).
IMXTimestamp(timestamp).
IMXSignature(signature).
Execute()
if err != nil {
return nil, NewIMXError(httpResponse, err)
}
return successResponse, nil
}
/*
GetMetadataSchema Gets collection metadata schema
@param ctx context.Context - for cancellation, deadlines, tracing, etc or context.Background().
@param collectionContractAddress Collection contract address
@return []MetadataSchemaProperty
*/
func (c *Client) GetMetadataSchema(ctx context.Context, collectionContractAddress string) ([]api.MetadataSchemaProperty, error) {
metadataSchemaProperties, httpResponse, err := c.metadataAPI.GetMetadataSchema(ctx, collectionContractAddress).Execute()
if err != nil {
return nil, NewIMXError(httpResponse, err)
}
return metadataSchemaProperties, nil
}
/*
UpdateMetadataSchemaByName Update metadata schema by name
@param ctx context.Context - for cancellation, deadlines, tracing, etc or context.Background().
@param l1signer Ethereum signer used for ownership authentication.
@param contractAddress Collection contract address
@param metadataSchemaName Metadata schema name
@param metadataSchemaRequest The request struct with all the params.
@return SuccessResponse
*/
func (c *Client) UpdateMetadataSchemaByName(
ctx context.Context,
l1signer L1Signer,
contractAddress, metadataSchemaName string,
metadataSchemaRequest api.MetadataSchemaRequest,
) (*api.SuccessResponse, error) {
timestamp, signature, err := generateIMXAuthorisationHeaders(l1signer)
if err != nil {
return nil, err
}
successResponse, httpResponse, err := c.metadataAPI.UpdateMetadataSchemaByName(ctx, contractAddress, metadataSchemaName).
MetadataSchemaRequest(metadataSchemaRequest).
IMXTimestamp(timestamp).
IMXSignature(signature).
Execute()
if err != nil {
return nil, NewIMXError(httpResponse, err)
}
return successResponse, nil
}