Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on May 3, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
implemented upload metadata method
  • Loading branch information
ayshptk committed Nov 16, 2021
commit c50e1aca7e3c056a818a636bfeea83bc37278426
20 changes: 17 additions & 3 deletions thirdweb/modules/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class BaseModule(ABC):
""" Returns the account object. """
get_options: Optional[Callable[[], SdkOptions]]
""" Returns the options object. """
__nftlabsApiUrl = "https://upload.nftlabs.co"

def __init__(self):
self.get_client = None
Expand Down Expand Up @@ -102,12 +103,25 @@ def grant_role(self, role: Role, address: str):
)
self.execute_tx(tx)

def upload_ipfs(self, data) -> str:
def upload_metadata(self, data, contract_address: str, signer_address: str) -> str:
"""
Uploads to IPFS
"""
# todo
return self.get_storage().upload_ipfs(data)

if isinstance(data, str):
return data

if isinstance(data, dict) :
if data["image"] == "":
data["image"] = data["image_uri"]

image = data["image"]

if isinstance(image, io.TextIOWrapper):
data["image"] = storage.upload(data["image"], self.address, self.get_signer_address())

return storage.upload(json.dumps(data), self.address,self.get_signer_address())



def revoke_role(self, role: Role, address: str):
Expand Down
27 changes: 26 additions & 1 deletion thirdweb/storage/ipfs_storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,32 @@ def get(self, uri: str) -> str:
Upload data to IPFS, data parameter
"""


def upload(self, data, contract_address: str, signer_address: str) -> str:
if isinstance(data, str) and data.startswith("ipfs://"):
return data
if isinstance(data, io.TextIOWrapper):
form = {
'file': data
}
result = post(f'{self.__nftlabsApiUrl}/upload', data=form, headers={
'X-App-Name': f'CONSOLE-PYTHON-SDK-{contract_address}',
'X-Public-Address': signer_address,
})
if result.status_code != 200:
raise Exception("Failed to upload image")
response = result.json()
return response['IpfsUri']
form = {
'file': data
}
result = post(f'{self.__nftlabsApiUrl}/upload', files=form, headers={
'X-App-Name': f'CONSOLE-PYTHON-SDK-{contract_address}',
'X-Public-Address': signer_address,
})
if result.status_code != 200:
raise Exception(
"Failed to upload image. Please provide a valid URL.")

def upload_metadata(self, metadata: str, contract_address: str, signer_address: str) -> str:
if type(metadata) == str:
return self.upload(metadata, contract_address, signer_address)