Handles token related callback handling.
This commit is contained in:
parent
97b80aaf38
commit
103b7885b1
@ -7,7 +7,6 @@ from datetime import timedelta
|
|||||||
import celery
|
import celery
|
||||||
from cic_types.condiments import MetadataPointer
|
from cic_types.condiments import MetadataPointer
|
||||||
|
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from cic_ussd.account.balance import get_balances, calculate_available_balance
|
from cic_ussd.account.balance import get_balances, calculate_available_balance
|
||||||
from cic_ussd.account.statement import generate
|
from cic_ussd.account.statement import generate
|
||||||
@ -17,6 +16,7 @@ from cic_ussd.db.models.base import SessionBase
|
|||||||
from cic_ussd.db.models.account import Account
|
from cic_ussd.db.models.account import Account
|
||||||
from cic_ussd.account.statement import filter_statement_transactions
|
from cic_ussd.account.statement import filter_statement_transactions
|
||||||
from cic_ussd.account.transaction import transaction_actors
|
from cic_ussd.account.transaction import transaction_actors
|
||||||
|
from cic_ussd.account.tokens import collate_token_metadata, process_token_data
|
||||||
from cic_ussd.error import AccountCreationDataNotFound
|
from cic_ussd.error import AccountCreationDataNotFound
|
||||||
from cic_ussd.tasks.base import CriticalSQLAlchemyTask
|
from cic_ussd.tasks.base import CriticalSQLAlchemyTask
|
||||||
|
|
||||||
@ -122,6 +122,35 @@ def statement_callback(self, result, param: str, status_code: int):
|
|||||||
generate(param, queue, sender_transaction)
|
generate(param, queue, sender_transaction)
|
||||||
|
|
||||||
|
|
||||||
|
@celery_app.task
|
||||||
|
def token_data_callback(result: dict, param: str, status_code: int):
|
||||||
|
"""
|
||||||
|
:param result:
|
||||||
|
:type result:
|
||||||
|
:param param:
|
||||||
|
:type param:
|
||||||
|
:param status_code:
|
||||||
|
:type status_code:
|
||||||
|
:return:
|
||||||
|
:rtype:
|
||||||
|
"""
|
||||||
|
|
||||||
|
if status_code != 0:
|
||||||
|
raise ValueError(f'Unexpected status code: {status_code}.')
|
||||||
|
|
||||||
|
for key, value in result.items():
|
||||||
|
token_symbol = result[key].get('symbol')
|
||||||
|
identifier = token_symbol.encode('utf-8')
|
||||||
|
token_meta_key = cache_data_key(identifier, MetadataPointer.TOKEN_META_SYMBOL)
|
||||||
|
token_info_key = cache_data_key(identifier, MetadataPointer.TOKEN_PROOF_SYMBOL)
|
||||||
|
token_meta = get_cached_data(token_meta_key)
|
||||||
|
token_info = get_cached_data(token_info_key)
|
||||||
|
token_data = collate_token_metadata(token_info=token_info, token_metadata=token_meta)
|
||||||
|
token_data = {**token_data, **result[key]}
|
||||||
|
token_data_key = cache_data_key(identifier, MetadataPointer.TOKEN_DATA)
|
||||||
|
cache_data(token_data_key, json.dumps(token_data))
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task(bind=True)
|
@celery_app.task(bind=True)
|
||||||
def transaction_balances_callback(self, result: list, param: dict, status_code: int):
|
def transaction_balances_callback(self, result: list, param: dict, status_code: int):
|
||||||
"""
|
"""
|
||||||
@ -175,6 +204,8 @@ def transaction_callback(result: dict, param: str, status_code: int):
|
|||||||
source_token_symbol = result.get('source_token_symbol')
|
source_token_symbol = result.get('source_token_symbol')
|
||||||
source_token_value = result.get('source_token_value')
|
source_token_value = result.get('source_token_value')
|
||||||
|
|
||||||
|
process_token_data(token_symbol=destination_token_symbol)
|
||||||
|
|
||||||
recipient_metadata = {
|
recipient_metadata = {
|
||||||
"alt_blockchain_address": sender_blockchain_address,
|
"alt_blockchain_address": sender_blockchain_address,
|
||||||
"blockchain_address": recipient_blockchain_address,
|
"blockchain_address": recipient_blockchain_address,
|
||||||
|
Loading…
Reference in New Issue
Block a user