method: from_str

This commit is contained in:
ytemiloluwa
2024-06-30 18:20:41 +01:00
parent 65cfb57605
commit 9b431b020f

View File

@@ -1,12 +1,14 @@
from dataclasses import dataclass, field from dataclasses import dataclass, field
from enum import Enum from enum import Enum
from typing import Optional from typing import Optional
from urllib.parse import urlparse
class Scheme (Enum): class Scheme (Enum):
STRATUM_V1 = "stratum+tcp" STRATUM_V1 = "stratum+tcp"
STRATUM_V2 = "stratum2+tcp" STRATUM_V2 = "stratum2+tcp"
@dataclass @dataclass
class PoolUrl: class PoolUrl:
scheme: Scheme scheme: Scheme
@@ -20,6 +22,15 @@ class PoolUrl:
else: else:
return f"{self.scheme.value}://{self.host}:{self.port}" return f"{self.scheme.value}://{self.host}:{self.port}"
@classmethod
def from_str(cls, url: str) -> 'PoolUrl':
parsed_url = urlparse(url)
scheme = Scheme(parsed_url.scheme)
host = parsed_url.hostname
port = parsed_url.port
pubkey = parsed_url.path.lstrip('/') if scheme == Scheme.STRATUM_V2 else None
return cls(scheme=scheme, host=host, port=port, pubkey=pubkey)
@dataclass @dataclass
class PoolMetrics: class PoolMetrics: