From 975560f46f34618bed9ecc672ea089338176336f Mon Sep 17 00:00:00 2001 From: Upstream Data Date: Wed, 30 Oct 2024 09:12:54 -0600 Subject: [PATCH] feature: add iceriver type parsing --- pyasic/miners/factory.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/pyasic/miners/factory.py b/pyasic/miners/factory.py index 7efd47c0..9c3e8d19 100644 --- a/pyasic/miners/factory.py +++ b/pyasic/miners/factory.py @@ -21,7 +21,6 @@ import ipaddress import json import re import warnings -from logging import warning from typing import Any, AsyncGenerator, Callable import anyio @@ -1064,6 +1063,39 @@ class MinerFactory: except (TypeError, LookupError): pass + async def get_miner_model_iceriver(self, ip: str) -> str | None: + async with httpx.AsyncClient(transport=settings.transport()) as client: + try: + # auth + await client.post( + f"http://{ip}/user/loginpost", + params={ + "post": "6", + "user": "admin", + "pwd": settings.get( + "default_iceriver_web_password", "12345678" + ), + }, + ) + except httpx.HTTPError: + return None + try: + resp = await client.post( + f"http://{ip}:/user/userpanel", params={"post": "4"} + ) + if not resp.status_code == 200: + return + result = resp.json() + software_ver = result["data"]["softver1"] + split_ver = software_ver.split("_") + if split_ver[-1] == "miner": + miner_ver = split_ver[-2] + else: + miner_ver = split_ver[-1].replace("miner", "") + return miner_ver.upper() + except httpx.HTTPError: + pass + miner_factory = MinerFactory()