feat(Wallet): add API to fetch collectibles by owner and contract address

This commit is contained in:
Dario Gabriel Lipicar 2023-03-17 18:20:31 -03:00 committed by dlipicar
parent bbec93b501
commit bd82250cf7
2 changed files with 29 additions and 3 deletions

View File

@ -332,6 +332,16 @@ func (api *API) GetOpenseaAssetsByOwnerWithCursor(ctx context.Context, chainID u
return client.FetchAllAssetsByOwner(owner, cursor, limit) return client.FetchAllAssetsByOwner(owner, cursor, limit)
} }
func (api *API) GetOpenseaAssetsByOwnerAndContractAddressWithCursor(ctx context.Context, chainID uint64, owner common.Address, contractAddresses []common.Address, cursor string, limit int) (*opensea.AssetContainer, error) {
log.Debug("call to GetOpenseaAssetsByOwnerAndContractAddressWithCursor")
client, err := opensea.NewOpenseaClient(chainID, api.s.openseaAPIKey)
if err != nil {
return nil, err
}
return client.FetchAllAssetsByOwnerAndContractAddress(owner, contractAddresses, cursor, limit)
}
func (api *API) GetOpenseaAssetsByNFTUniqueID(ctx context.Context, chainID uint64, uniqueIDs []opensea.NFTUniqueID, limit int) (*opensea.AssetContainer, error) { func (api *API) GetOpenseaAssetsByNFTUniqueID(ctx context.Context, chainID uint64, uniqueIDs []opensea.NFTUniqueID, limit int) (*opensea.AssetContainer, error) {
log.Debug("call to GetOpenseaAssetsByNFTUniqueID") log.Debug("call to GetOpenseaAssetsByNFTUniqueID")

View File

@ -216,6 +216,22 @@ func (o *Client) FetchAllAssetsByOwnerAndCollection(owner common.Address, collec
return o.fetchAssets(queryParams, limit) return o.fetchAssets(queryParams, limit)
} }
func (o *Client) FetchAllAssetsByOwnerAndContractAddress(owner common.Address, contractAddresses []common.Address, cursor string, limit int) (*AssetContainer, error) {
queryParams := url.Values{
"owner": {owner.String()},
}
for _, contractAddress := range contractAddresses {
queryParams.Add("asset_contract_addresses", contractAddress.String())
}
if len(cursor) > 0 {
queryParams["cursor"] = []string{cursor}
}
return o.fetchAssets(queryParams, limit)
}
func (o *Client) FetchAllAssetsByOwner(owner common.Address, cursor string, limit int) (*AssetContainer, error) { func (o *Client) FetchAllAssetsByOwner(owner common.Address, cursor string, limit int) (*AssetContainer, error) {
queryParams := url.Values{ queryParams := url.Values{
"owner": {owner.String()}, "owner": {owner.String()},
@ -246,8 +262,8 @@ func (o *Client) fetchAssets(queryParams url.Values, limit int) (*AssetContainer
assets.PreviousCursor = queryParams["cursor"][0] assets.PreviousCursor = queryParams["cursor"][0]
} }
tmpLimit := limit tmpLimit := AssetLimit
if AssetLimit < limit { if limit > 0 && limit < tmpLimit {
tmpLimit = AssetLimit tmpLimit = AssetLimit
} }
@ -283,7 +299,7 @@ func (o *Client) fetchAssets(queryParams url.Values, limit int) (*AssetContainer
queryParams["cursor"] = []string{assets.NextCursor} queryParams["cursor"] = []string{assets.NextCursor}
if len(assets.Assets) >= limit { if limit > 0 && len(assets.Assets) >= limit {
break break
} }
} }