kopia lustrzana https://github.com/bugout-dev/moonstream
88 wiersze
2.3 KiB
Python
88 wiersze
2.3 KiB
Python
import logging
|
|
import json
|
|
|
|
import boto3 # type: ignore
|
|
from bugout.data import BugoutResource, BugoutResources
|
|
from bugout.exceptions import BugoutResponseException
|
|
|
|
|
|
from ..actions import get_all_entries_from_search, apply_moonworm_tasks
|
|
from ..settings import MOONSTREAM_ADMIN_ACCESS_TOKEN, MOONSTREAM_MOONWORM_TASKS_JOURNAL
|
|
from ..settings import bugout_client as bc
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def get_list_of_addresses():
|
|
"""
|
|
Return list of addresses of tasks
|
|
"""
|
|
|
|
entries = get_all_entries_from_search(
|
|
journal_id=MOONSTREAM_MOONWORM_TASKS_JOURNAL,
|
|
search_query=f"?tag:type:event ?tag:type:function",
|
|
limit=100,
|
|
token=MOONSTREAM_ADMIN_ACCESS_TOKEN,
|
|
)
|
|
|
|
addresses = set()
|
|
|
|
for entry in entries:
|
|
|
|
addresses.add(entry.title)
|
|
|
|
print(addresses)
|
|
|
|
|
|
def add_subscription(id: str):
|
|
"""
|
|
Return list of tags depends on query and tag
|
|
"""
|
|
|
|
try:
|
|
subscription_resource: BugoutResource = bc.get_resource(
|
|
token=MOONSTREAM_ADMIN_ACCESS_TOKEN,
|
|
resource_id=id,
|
|
)
|
|
|
|
except BugoutResponseException as e:
|
|
logging.error(f"Bugout error: {str(e)}")
|
|
except Exception as e:
|
|
logger.error(f"Error get resource: {str(e)}")
|
|
|
|
s3_client = boto3.client("s3")
|
|
|
|
if subscription_resource.resource_data["abi"] is not None:
|
|
|
|
bucket = subscription_resource.resource_data["bucket"]
|
|
key = subscription_resource.resource_data["s3_path"]
|
|
|
|
if bucket is None or key is None:
|
|
logger.error(f"Error subscription not have s3 path to abi")
|
|
|
|
s3_path = f"s3://{bucket}/{key}"
|
|
|
|
try:
|
|
|
|
response = s3_client.get_object(
|
|
Bucket=bucket,
|
|
Key=key,
|
|
)
|
|
|
|
except s3_client.exceptions.NoSuchKey as e:
|
|
logger.error(
|
|
f"Error getting Abi for subscription {str(id)} S3 {s3_path} does not exist : {str(e)}"
|
|
)
|
|
|
|
abi = json.loads(response["Body"].read())
|
|
|
|
apply_moonworm_tasks(
|
|
subscription_type=subscription_resource.resource_data[
|
|
"subscription_type_id"
|
|
],
|
|
abi=abi,
|
|
address=subscription_resource.resource_data["address"],
|
|
)
|
|
else:
|
|
logging.info("For apply to moonworm tasks subscriptions must have an abi.")
|