method: from_str
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user