moonstream/crawlers/mooncrawl/mooncrawl/settings.py

234 wiersze
7.5 KiB
Python
Czysty Zwykły widok Historia

import os
2022-09-08 09:51:41 +00:00
from typing import Optional, Dict
from uuid import UUID
from bugout.app import Bugout
2022-09-08 09:51:41 +00:00
from moonstreamdb.blockchain import AvailableBlockchainType
2021-12-21 15:23:26 +00:00
BUGOUT_RESOURCE_TYPE_SUBSCRIPTION = "subscription"
BUGOUT_RESOURCE_TYPE_DASHBOARD = "dashboards"
# Bugout
BUGOUT_BROOD_URL = os.environ.get("BUGOUT_BROOD_URL", "https://auth.bugout.dev")
BUGOUT_SPIRE_URL = os.environ.get("BUGOUT_SPIRE_URL", "https://spire.bugout.dev")
2021-11-13 15:51:32 +00:00
bugout_client = Bugout(brood_api_url=BUGOUT_BROOD_URL, spire_api_url=BUGOUT_SPIRE_URL)
BUGOUT_REQUEST_TIMEOUT_SECONDS_RAW = os.environ.get(
"MOONSTREAM_BUGOUT_TIMEOUT_SECONDS", 30
2022-08-17 14:42:37 +00:00
)
try:
2022-08-17 14:56:35 +00:00
BUGOUT_REQUEST_TIMEOUT_SECONDS = int(BUGOUT_REQUEST_TIMEOUT_SECONDS_RAW)
except:
raise Exception(
f"Could not parse MOONSTREAM_BUGOUT_TIMEOUT_SECONDS_RAW as int: {BUGOUT_REQUEST_TIMEOUT_SECONDS_RAW}"
)
2022-08-17 14:25:00 +00:00
HUMBUG_REPORTER_CRAWLERS_TOKEN = os.environ.get("HUMBUG_REPORTER_CRAWLERS_TOKEN")
2021-11-13 15:51:32 +00:00
# Origin
RAW_ORIGINS = os.environ.get("MOONSTREAM_CORS_ALLOWED_ORIGINS")
if RAW_ORIGINS is None:
raise ValueError(
"MOONSTREAM_CORS_ALLOWED_ORIGINS environment variable must be set (comma-separated list of CORS allowed origins)"
)
ORIGINS = RAW_ORIGINS.split(",")
# OpenAPI
DOCS_TARGET_PATH = "docs"
2021-11-14 14:15:07 +00:00
# Crawler label
2021-12-16 19:43:32 +00:00
CRAWLER_LABEL = "moonworm-alpha"
2022-08-31 13:50:36 +00:00
VIEW_STATE_CRAWLER_LABEL = "view-state-alpha"
METADATA_CRAWLER_LABEL = "metadata-crawler"
MOONSTREAM_STATE_CRAWLER_DB_STATEMENT_TIMEOUT_MILLIS = 30000
MOONSTREAM_STATE_CRAWLER_DB_STATEMENT_TIMEOUT_MILLIS_RAW = os.environ.get(
"MOONSTREAM_QUERY_API_DB_STATEMENT_TIMEOUT_MILLIS"
)
try:
if MOONSTREAM_STATE_CRAWLER_DB_STATEMENT_TIMEOUT_MILLIS_RAW is not None:
MOONSTREAM_STATE_CRAWLER_DB_STATEMENT_TIMEOUT_MILLIS = int(
MOONSTREAM_STATE_CRAWLER_DB_STATEMENT_TIMEOUT_MILLIS_RAW
)
except:
raise Exception(
f"Could not parse MOONSTREAM_QUERY_API_DB_STATEMENT_TIMEOUT_MILLIS as int: {MOONSTREAM_STATE_CRAWLER_DB_STATEMENT_TIMEOUT_MILLIS_RAW}"
)
2021-11-14 14:15:07 +00:00
# Geth connection address
MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI = os.environ.get(
2021-12-22 12:36:06 +00:00
"MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI", ""
)
2021-12-22 12:36:06 +00:00
if MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI == "":
raise Exception("MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI env variable is not set")
2022-05-24 08:21:53 +00:00
MOONSTREAM_POLYGON_WEB3_PROVIDER_URI = os.environ.get(
2021-12-22 12:36:06 +00:00
"MOONSTREAM_POLYGON_WEB3_PROVIDER_URI", ""
)
2021-12-22 12:36:06 +00:00
if MOONSTREAM_POLYGON_WEB3_PROVIDER_URI == "":
raise Exception("MOONSTREAM_POLYGON_WEB3_PROVIDER_URI env variable is not set")
2022-08-10 16:55:49 +00:00
MOONSTREAM_MUMBAI_WEB3_PROVIDER_URI = os.environ.get(
"MOONSTREAM_MUMBAI_WEB3_PROVIDER_URI", ""
)
if MOONSTREAM_MUMBAI_WEB3_PROVIDER_URI == "":
raise Exception("MOONSTREAM_MUMBAI_WEB3_PROVIDER_URI env variable is not set")
2022-05-24 08:21:53 +00:00
MOONSTREAM_XDAI_WEB3_PROVIDER_URI = os.environ.get(
"MOONSTREAM_XDAI_WEB3_PROVIDER_URI", ""
)
if MOONSTREAM_XDAI_WEB3_PROVIDER_URI == "":
raise Exception("MOONSTREAM_XDAI_WEB3_PROVIDER_URI env variable is not set")
MOONSTREAM_CRAWL_WORKERS = 4
MOONSTREAM_CRAWL_WORKERS_RAW = os.environ.get("MOONSTREAM_CRAWL_WORKERS")
try:
if MOONSTREAM_CRAWL_WORKERS_RAW is not None:
MOONSTREAM_CRAWL_WORKERS = int(MOONSTREAM_CRAWL_WORKERS_RAW)
except:
raise Exception(
f"Could not parse MOONSTREAM_CRAWL_WORKERS as int: {MOONSTREAM_CRAWL_WORKERS_RAW}"
)
2021-08-18 14:24:09 +00:00
# Etherscan
2021-08-18 14:24:09 +00:00
MOONSTREAM_ETHERSCAN_TOKEN = os.environ.get("MOONSTREAM_ETHERSCAN_TOKEN")
2021-09-22 08:37:07 +00:00
# NFT crawler
2021-09-23 10:13:06 +00:00
NFT_HUMBUG_TOKEN = os.environ.get("NFT_HUMBUG_TOKEN", "")
if NFT_HUMBUG_TOKEN == "":
raise ValueError("NFT_HUMBUG_TOKEN env variable is not set")
2021-09-22 08:37:07 +00:00
2021-09-22 13:53:11 +00:00
MOONSTREAM_ADMIN_ACCESS_TOKEN = os.environ.get("MOONSTREAM_ADMIN_ACCESS_TOKEN", "")
if MOONSTREAM_ADMIN_ACCESS_TOKEN == "":
2021-09-22 08:37:07 +00:00
raise ValueError("MOONSTREAM_ADMIN_ACCESS_TOKEN env variable is not set")
2021-09-22 13:53:11 +00:00
MOONSTREAM_DATA_JOURNAL_ID = os.environ.get("MOONSTREAM_DATA_JOURNAL_ID", "")
if MOONSTREAM_DATA_JOURNAL_ID == "":
2021-09-22 08:37:07 +00:00
raise ValueError("MOONSTREAM_DATA_JOURNAL_ID env variable is not set")
2021-11-14 12:58:15 +00:00
MOONSTREAM_S3_SMARTCONTRACTS_ABI_PREFIX = os.environ.get(
"MOONSTREAM_S3_SMARTCONTRACTS_ABI_PREFIX"
)
if MOONSTREAM_S3_SMARTCONTRACTS_ABI_PREFIX is None:
raise ValueError(
"MOONSTREAM_S3_SMARTCONTRACTS_ABI_PREFIX environment variable must be set"
)
2021-12-09 12:56:38 +00:00
MOONSTREAM_MOONWORM_TASKS_JOURNAL = os.environ.get(
"MOONSTREAM_MOONWORM_TASKS_JOURNAL", ""
)
if MOONSTREAM_MOONWORM_TASKS_JOURNAL == "":
raise ValueError(
"MOONSTREAM_MOONWORM_TASKS_JOURNAL environment variable must be set"
)
2022-02-16 16:12:42 +00:00
2022-08-25 12:22:01 +00:00
# queries
MOONSTREAM_QUERY_API_DB_STATEMENT_TIMEOUT_MILLIS = 30000
2022-08-25 12:22:01 +00:00
MOONSTREAM_QUERY_API_DB_STATEMENT_TIMEOUT_MILLIS_RAW = os.environ.get(
"MOONSTREAM_QUERY_API_DB_STATEMENT_TIMEOUT_MILLIS"
)
try:
if MOONSTREAM_QUERY_API_DB_STATEMENT_TIMEOUT_MILLIS_RAW is not None:
2022-08-25 12:22:01 +00:00
MOONSTREAM_QUERY_API_DB_STATEMENT_TIMEOUT_MILLIS = int(
MOONSTREAM_QUERY_API_DB_STATEMENT_TIMEOUT_MILLIS_RAW
)
except:
raise Exception(
2022-10-05 15:18:12 +00:00
f"Could not parse MOONSTREAM_QUERY_API_DB_STATEMENT_TIMEOUT_MILLIS as int: {MOONSTREAM_QUERY_API_DB_STATEMENT_TIMEOUT_MILLIS_RAW}"
)
2022-02-16 16:12:42 +00:00
MOONSTREAM_S3_QUERIES_BUCKET = os.environ.get("MOONSTREAM_S3_QUERIES_BUCKET", "")
if MOONSTREAM_S3_QUERIES_BUCKET == "":
raise ValueError("MOONSTREAM_S3_QUERIES_BUCKET environment variable must be set")
2022-03-08 13:18:27 +00:00
MOONSTREAM_S3_QUERIES_BUCKET_PREFIX = os.environ.get(
"MOONSTREAM_S3_QUERIES_BUCKET_PREFIX", ""
2022-03-08 13:18:27 +00:00
)
if MOONSTREAM_S3_QUERIES_BUCKET_PREFIX == "":
2022-03-08 13:18:27 +00:00
raise ValueError(
"MOONSTREAM_S3_QUERIES_BUCKET_PREFIX environment variable must be set"
2022-03-08 13:18:27 +00:00
)
2022-03-17 19:19:48 +00:00
# Node balancer
NB_ACCESS_ID_HEADER = os.environ.get("NB_ACCESS_ID_HEADER", "x-node-balancer-access-id")
NB_DATA_SOURCE_HEADER = os.environ.get(
"NB_DATA_SOURCE_HEADER", "x-node-balancer-data-source"
)
NB_CONTROLLER_ACCESS_ID: Optional[UUID] = None
NB_CONTROLLER_ACCESS_ID_RAW = os.environ.get("NB_CONTROLLER_ACCESS_ID", "")
try:
NB_CONTROLLER_ACCESS_ID = UUID(NB_CONTROLLER_ACCESS_ID_RAW)
except:
pass
2022-09-08 09:51:41 +00:00
2022-10-05 15:18:12 +00:00
# HTTPProvider for web3 client
WEB3_CLIENT_REQUEST_TIMEOUT_SECONDS = 600
WEB3_CLIENT_REQUEST_TIMEOUT_SECONDS_RAW = os.environ.get(
"WEB3_CLIENT_REQUEST_TIMEOUT_SECONDS"
)
try:
if WEB3_CLIENT_REQUEST_TIMEOUT_SECONDS_RAW is not None:
WEB3_CLIENT_REQUEST_TIMEOUT_SECONDS = int(
WEB3_CLIENT_REQUEST_TIMEOUT_SECONDS_RAW
)
except:
raise Exception(
f"Could not parse WEB3_CLIENT_REQUEST_TIMEOUT_SECONDS as int: {WEB3_CLIENT_REQUEST_TIMEOUT_SECONDS_RAW}"
)
2022-09-08 09:51:41 +00:00
multicall_contracts: Dict[AvailableBlockchainType, str] = {
AvailableBlockchainType.POLYGON: "0xc8E51042792d7405184DfCa245F2d27B94D013b6",
AvailableBlockchainType.MUMBAI: "0xe9939e7Ea7D7fb619Ac57f648Da7B1D425832631",
AvailableBlockchainType.ETHEREUM: "0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696",
}
2022-11-03 14:42:54 +00:00
# Custom Crawler
MOONSTREAM_S3_PUBLIC_DATA_BUCKET = os.environ.get(
"MOONSTREAM_S3_PUBLIC_DATA_BUCKET", ""
2022-11-09 20:09:17 +00:00
) # S3 bucket for storing custom crawler data
if MOONSTREAM_S3_PUBLIC_DATA_BUCKET == "":
raise ValueError(
"MOONSTREAM_S3_PUBLIC_DATA_BUCKET environment variable must be set"
)
MOONSTREAM_S3_PUBLIC_DATA_BUCKET_PREFIX = os.environ.get(
"MOONSTREAM_S3_PUBLIC_DATA_BUCKET_PREFIX", "dev"
)
# infura config
INFURA_PROJECT_ID = os.environ.get("INFURA_PROJECT_ID")
infura_networks = {
AvailableBlockchainType.ETHEREUM: {
"name": "mainnet",
"url": f"https://mainnet.infura.io/v3/{INFURA_PROJECT_ID}",
},
AvailableBlockchainType.POLYGON: {
"name": "polygon",
"url": f"https://polygon-mainnet.infura.io/v3/{INFURA_PROJECT_ID}",
},
AvailableBlockchainType.MUMBAI: {
"name": "mumbai",
"url": f"https://polygon-mumbai.infura.io/v3/{INFURA_PROJECT_ID}",
},
}