Skip to content

Commit

Permalink
Merge pull request #92 from fireblocks/add_nft_endpoints
Browse files Browse the repository at this point in the history
add NFT endpoints
  • Loading branch information
idanya authored Nov 30, 2022
2 parents 75139a0 + db7ff6b commit 6845dbb
Showing 1 changed file with 85 additions and 1 deletion.
86 changes: 85 additions & 1 deletion fireblocks_sdk/sdk.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from operator import attrgetter
from typing import List, Dict

import requests
import urllib
Expand Down Expand Up @@ -47,6 +48,85 @@ def __init__(self, private_key, api_key, api_base_url="https://api.fireblocks.io
self.token_provider = SdkTokenProvider(private_key, api_key)
self.timeout = timeout

def get_nft(self, id: str):
url = "/v1/nfts/tokens/" + id

return self._get_request(url)

def get_nfts(self, ids: List[str], page_cursor: str = '', page_size: int = 100):
"""
Example list: "1,2,3,4"
"""
url = f"/v1/nfts/tokens"

if len(ids) <= 0:
raise FireblocksApiException("Invalid token_ids. Should contain at least 1 token id")

params = {
"ids": ",".join(ids),
}

if page_cursor:
params['pageCursor'] = page_cursor

if page_size:
params['pageSize'] = page_size

return self._get_request(url, query_params=params)

def refresh_nft_metadata(self, id: str):
"""
:param id:
:return:
"""
url = "/v1/nfts/tokens/" + id
return self._put_request(path=url)

def refresh_nft_ownership_by_vault(self, blockchain_descriptor: str, vault_account_id: str):
"""
:param blockchain_descriptor:
:param vault_account_id:
:return:
"""
url = "/v1/nfts/ownership/tokens"

params = {}
if blockchain_descriptor:
params['blockchainDescriptor'] = blockchain_descriptor

if vault_account_id:
params['vaultAccountId'] = vault_account_id

return self._get_request(url, query_params=params)

def get_owned_nfts(self, blockchain_descriptor: str, vault_account_id: str, ids: List[str] = None,
page_cursor: str = '', page_size: int = 100):
"""
"""
url = f"/v1/nfts/ownership/tokens"

params = {}

if blockchain_descriptor:
params['blockchainDescriptor'] = blockchain_descriptor

if vault_account_id:
params['vaultAccountId'] = vault_account_id

if ids:
params['ids'] = ",".join(ids)

if page_cursor:
params['pageCursor'] = page_cursor

if page_size:
params['pageSize'] = page_size

return self._get_request(url, query_params=params)

def get_supported_assets(self):
"""Gets all assets that are currently supported by Fireblocks"""

Expand Down Expand Up @@ -1481,7 +1561,11 @@ def remove_fee_payer_configuration(self, base_asset):

return self._delete_request(url)

def _get_request(self, path, page_mode=False):
def _get_request(self, path, page_mode=False, query_params: Dict = None):

if query_params:
path = path + "?" + urllib.parse.urlencode(query_params)

token = self.token_provider.sign_jwt(path)
headers = {
"X-API-Key": self.api_key,
Expand Down

0 comments on commit 6845dbb

Please sign in to comment.