diff --git a/pyproject.toml b/pyproject.toml index 3e965954..faf272d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ dynamic = [ "version" ] dependencies = [ "aiohttp>=3.8.3", "aioresponses>=0.7.6", - "aleph-message>=1.0.1", + "aleph-message>=1.0.2", "aleph-superfluid>=0.3", "base58==2.1.1", # Needed now as default with _load_account changement "coincurve; python_version>='3.9'", diff --git a/src/aleph/sdk/client/http.py b/src/aleph/sdk/client/http.py index c8dda3c7..bd3090e3 100644 --- a/src/aleph/sdk/client/http.py +++ b/src/aleph/sdk/client/http.py @@ -39,6 +39,8 @@ ForgottenMessageError, InvalidHashError, MessageNotFoundError, + RemovedMessageError, + ResourceNotFoundError, ) from ..query.filters import MessageFilter, PostFilter from ..query.responses import MessagesResponse, Post, PostsResponse, PriceResponse @@ -231,6 +233,9 @@ async def download_file_to_buffer( ) else: raise FileTooLarge(f"The file from {file_hash} is too large") + if response.status == 404: + raise ResourceNotFoundError() + return None async def download_file_ipfs_to_buffer( self, @@ -400,6 +405,10 @@ async def get_message( raise ForgottenMessageError( f"The requested message {message_raw['item_hash']} has been forgotten by {', '.join(message_raw['forgotten_by'])}" ) + if message_raw["status"] == "removed": + raise RemovedMessageError( + f"The requested message {message_raw['item_hash']} has been removed by {', '.join(message_raw['reason'])}" + ) message = parse_message(message_raw["message"]) if message_type: expected_type = get_message_type_value(message_type) @@ -429,6 +438,10 @@ async def get_message_error( raise ForgottenMessageError( f"The requested message {message_raw['item_hash']} has been forgotten by {', '.join(message_raw['forgotten_by'])}" ) + if message_raw["status"] == "removed": + raise RemovedMessageError( + f"The requested message {message_raw['item_hash']} has been removed by {', '.join(message_raw['reason'])}" + ) if message_raw["status"] != "rejected": return None return { @@ -558,6 +571,8 @@ async def get_stored_content( resp = f"Message not found: {item_hash}" except ForgottenMessageError: resp = f"Message forgotten: {item_hash}" + except RemovedMessageError as e: + resp = f"Message resources not available {item_hash}: {str(e)}" return ( result if result diff --git a/src/aleph/sdk/conf.py b/src/aleph/sdk/conf.py index 86058074..57b0383f 100644 --- a/src/aleph/sdk/conf.py +++ b/src/aleph/sdk/conf.py @@ -136,10 +136,26 @@ class Settings(BaseSettings): rpc="https://eth-mainnet.public.blastapi.io", token="0x27702a26126e0B3702af63Ee09aC4d1A084EF628", ), + Chain.ETHERLINK: ChainInfo( + chain_id=42793, + rpc="https://node.mainnet.etherlink.com", + ), Chain.FRAXTAL: ChainInfo( chain_id=252, rpc="https://rpc.frax.com", ), + Chain.HYPE: ChainInfo( + chain_id=999, + rpc="https://rpc.hyperliquid.xyz/evm", + ), + Chain.INK: ChainInfo( + chain_id=57073, + rpc="https://rpc-gel.inkonchain.com", + ), + Chain.LENS: ChainInfo( + chain_id=232, + rpc="https://rpc.lens.xyz", + ), Chain.LINEA: ChainInfo( chain_id=59144, rpc="https://linea-rpc.publicnode.com", diff --git a/src/aleph/sdk/exceptions.py b/src/aleph/sdk/exceptions.py index 05ed755f..ae0f634a 100644 --- a/src/aleph/sdk/exceptions.py +++ b/src/aleph/sdk/exceptions.py @@ -69,6 +69,18 @@ class ForgottenMessageError(QueryError): pass +class RemovedMessageError(QueryError): + """The requested message was removed""" + + pass + + +class ResourceNotFoundError(QueryError): + """A message resource was expected but could not be found.""" + + pass + + class InsufficientFundsError(Exception): """Raised when the account does not have enough funds to perform an action"""