Skip to content

Commit 0a04862

Browse files
committed
Feature: new field for PriceRespond cost instead of filling required_token with cost
1 parent f2a50d0 commit 0a04862

File tree

3 files changed

+15
-11
lines changed

3 files changed

+15
-11
lines changed

src/aleph/sdk/client/http.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import os.path
44
import ssl
55
import time
6-
from decimal import Decimal
76
from io import BytesIO
87
from pathlib import Path
98
from typing import (
@@ -532,7 +531,10 @@ async def get_estimated_price(
532531
try:
533532
resp.raise_for_status()
534533
response_json = await resp.json()
534+
cost = response_json.get("cost", None)
535+
535536
return PriceResponse(
537+
cost=cost,
536538
required_tokens=response_json["required_tokens"],
537539
payment_type=response_json["payment_type"],
538540
)
@@ -544,16 +546,12 @@ async def get_program_price(self, item_hash: str) -> PriceResponse:
544546
try:
545547
resp.raise_for_status()
546548
response_json = await resp.json()
547-
token_value = response_json.get(
548-
"cost", response_json.get("required_tokens")
549-
)
550-
if isinstance(token_value, str):
551-
required_tokens = Decimal(token_value)
552-
else:
553-
required_tokens = Decimal(str(token_value))
549+
cost = response_json.get("cost", None)
550+
required_tokens = response_json["required_tokens"]
554551

555552
return PriceResponse(
556553
required_tokens=required_tokens,
554+
cost=cost,
557555
payment_type=response_json["payment_type"],
558556
)
559557
except aiohttp.ClientResponseError as e:

src/aleph/sdk/query/responses.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class PriceResponse(BaseModel):
8080
"""Response from an aleph.im node API on the path /api/v0/price/{item_hash}"""
8181

8282
required_tokens: Decimal
83+
cost: Optional[str] = None
8384
payment_type: str
8485

8586

tests/unit/test_price.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ async def test_get_program_price_cost_and_required_token():
4646

4747
# Expected model using the cost field as the source of truth
4848
expected_model = PriceResponse(
49-
required_tokens=Decimal("0.001527777777777777"),
49+
required_tokens=Decimal("0.001527777777777778"),
50+
cost=expected["cost"],
5051
payment_type=expected["payment_type"],
5152
)
5253

@@ -61,11 +62,15 @@ async def test_get_program_price_cost_and_required_token():
6162

6263
async with mock_session:
6364
response = await mock_session.get_program_price("cacacacacacaca")
64-
assert response == expected_model
65+
assert str(response.required_tokens) == str(expected_model.required_tokens)
66+
assert response.cost == expected_model.cost
67+
assert response.payment_type == expected_model.payment_type
6568

6669
async with mock_session_old:
6770
response = await mock_session_old.get_program_price("cacacacacacaca")
68-
assert response == expected_model_old
71+
assert str(response.required_tokens) == str(expected_model_old.required_tokens)
72+
assert response.cost == expected_model_old.cost
73+
assert response.payment_type == expected_model_old.payment_type
6974

7075

7176
@pytest.mark.asyncio

0 commit comments

Comments
 (0)