Skip to content

Commit b42348e

Browse files
Bug fix for paginating post requests
1 parent 12b182a commit b42348e

11 files changed

+47
-45
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ requires = ['setuptools>=61.0']
33
build-backend = 'setuptools.build_meta'
44
[project]
55
name = "koios-api"
6-
version = "1.1.0.0"
6+
version = "1.1.0.1"
77
authors = [
88
{ name="APEX Stake Pool", email="[email protected]" },
99
]

src/koios_api/__config__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@
1111
if "SLEEP_TIME" not in env:
1212
SLEEP_TIME = 1
1313
else:
14-
SLEEP_TIME = env["SLEEP_TIME"]
14+
SLEEP_TIME = int(env["SLEEP_TIME"])
1515
if "API_RESP_COUNT" not in env:
1616
API_RESP_COUNT = 1000
1717
else:
18-
API_RESP_COUNT = env["API_RESP_COUNT"]
18+
API_RESP_COUNT = int(env["API_RESP_COUNT"])
1919
if "REQUEST_TIMEOUT" not in env:
2020
REQUEST_TIMEOUT = 60
2121
else:
22-
REQUEST_TIMEOUT = env["REQUEST_TIMEOUT"]
22+
REQUEST_TIMEOUT = int(env["REQUEST_TIMEOUT"])
2323
if "CARDANO_NET" not in env:
2424
CARDANO_NET = "mainnet"
2525
if "API_BASE_URL" not in env:

src/koios_api/account.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def get_account_info(addr: [str, list]) -> list:
4343
parameters["_stake_addresses"] = addr
4444
else:
4545
parameters["_stake_addresses"] = [addr]
46-
return koios_post_request(url, parameters)
46+
return koios_post_request(url, {}, parameters)
4747

4848

4949
def get_account_info_cached(addr: [str, list]) -> list:
@@ -60,7 +60,7 @@ def get_account_info_cached(addr: [str, list]) -> list:
6060
parameters["_stake_addresses"] = addr
6161
else:
6262
parameters["_stake_addresses"] = [addr]
63-
return koios_post_request(url, parameters)
63+
return koios_post_request(url, {}, parameters)
6464

6565

6666
def get_account_utxos(
@@ -76,6 +76,7 @@ def get_account_utxos(
7676
"""
7777
url = API_BASE_URL + "/account_utxos"
7878
parameters = {}
79+
qs_parameters = {"limit": API_RESP_COUNT}
7980
if isinstance(addr, list):
8081
parameters["_stake_addresses"] = addr
8182
else:
@@ -84,8 +85,8 @@ def get_account_utxos(
8485
utxos = []
8586
while True:
8687
if offset > 0:
87-
parameters["offset"] = offset
88-
resp = koios_post_request(url, parameters)
88+
qs_parameters["offset"] = offset
89+
resp = koios_post_request(url, qs_parameters, parameters)
8990
utxos += resp
9091
if len(resp) < API_RESP_COUNT:
9192
if 0 < limit <= len(utxos):
@@ -141,7 +142,7 @@ def get_account_rewards(addr: [str, list], epoch: int = 0) -> list:
141142
parameters["_stake_addresses"] = [addr]
142143
if isinstance(epoch, int) and epoch > 0:
143144
parameters["_epoch_no"] = epoch
144-
resp = koios_post_request(url, parameters)
145+
resp = koios_post_request(url, {}, parameters)
145146
return resp
146147

147148

@@ -158,7 +159,7 @@ def get_account_updates(addr: [str, list]) -> list:
158159
parameters["_stake_addresses"] = addr
159160
else:
160161
parameters["_stake_addresses"] = [addr]
161-
return koios_post_request(url, parameters)
162+
return koios_post_request(url, {}, parameters)
162163

163164

164165
def get_account_addresses(
@@ -180,7 +181,7 @@ def get_account_addresses(
180181
parameters["_stake_addresses"] = [addr]
181182
parameters["_first_only"] = str(first_only).lower()
182183
parameters["_empty"] = str(empty).lower()
183-
return koios_post_request(url, parameters)
184+
return koios_post_request(url, {}, parameters)
184185

185186

186187
def get_account_assets(addr: [str, list]) -> list:
@@ -192,7 +193,7 @@ def get_account_assets(addr: [str, list]) -> list:
192193
"""
193194
url = API_BASE_URL + "/account_assets"
194195
parameters = {}
195-
qs_parameters = {}
196+
qs_parameters = {"limit": API_RESP_COUNT}
196197
if isinstance(addr, list):
197198
parameters["_stake_addresses"] = addr
198199
else:
@@ -202,7 +203,7 @@ def get_account_assets(addr: [str, list]) -> list:
202203
while True:
203204
if offset > 0:
204205
qs_parameters["offset"] = offset
205-
resp = koios_post_request(url, parameters)
206+
resp = koios_post_request(url, qs_parameters, parameters)
206207
assets += resp
207208
if len(resp) < API_RESP_COUNT:
208209
break
@@ -227,4 +228,4 @@ def get_account_history(addr: [str, list], epoch: int = 0) -> list:
227228
parameters["_stake_addresses"] = [addr]
228229
if epoch:
229230
parameters["_epoch_no"] = epoch
230-
return koios_post_request(url, parameters)
231+
return koios_post_request(url, {}, parameters)

src/koios_api/address.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def get_address_info(addr: [str, list]) -> list:
1515
parameters["_addresses"] = addr
1616
else:
1717
parameters["_addresses"] = [addr]
18-
return koios_post_request(url, parameters)
18+
return koios_post_request(url, {}, parameters)
1919

2020

2121
def get_address_utxos(addr: [str, list], extended: bool = False) -> list:
@@ -28,6 +28,7 @@ def get_address_utxos(addr: [str, list], extended: bool = False) -> list:
2828
"""
2929
url = API_BASE_URL + "/address_utxos"
3030
parameters = {}
31+
qs_parameters = {"limit": API_RESP_COUNT}
3132
if isinstance(addr, list):
3233
parameters["_addresses"] = addr
3334
else:
@@ -37,8 +38,8 @@ def get_address_utxos(addr: [str, list], extended: bool = False) -> list:
3738
offset = 0
3839
while True:
3940
if offset > 0:
40-
parameters["offset"] = offset
41-
resp = koios_post_request(url, parameters)
41+
qs_parameters["offset"] = offset
42+
resp = koios_post_request(url, qs_parameters, parameters)
4243
utxos += resp
4344
if len(resp) < API_RESP_COUNT:
4445
break
@@ -57,6 +58,7 @@ def get_credential_utxos(cred: [str, list], extended: bool = False) -> list:
5758
"""
5859
url = API_BASE_URL + "/credential_utxos"
5960
parameters = {}
61+
qs_parameters = {"limit": API_RESP_COUNT}
6062
if isinstance(cred, list):
6163
parameters["_payment_credentials"] = cred
6264
else:
@@ -66,8 +68,8 @@ def get_credential_utxos(cred: [str, list], extended: bool = False) -> list:
6668
offset = 0
6769
while True:
6870
if offset > 0:
69-
parameters["offset"] = offset
70-
resp = koios_post_request(url, parameters)
71+
qs_parameters["offset"] = offset
72+
resp = koios_post_request(url, qs_parameters, parameters)
7173
utxos += resp
7274
if len(resp) < API_RESP_COUNT:
7375
break
@@ -86,7 +88,7 @@ def get_address_txs(addr: [str, list], block_height: int = 0) -> list:
8688
"""
8789
url = API_BASE_URL + "/address_txs"
8890
parameters = {}
89-
qs_parameters = {}
91+
qs_parameters = {"limit": API_RESP_COUNT}
9092
if isinstance(addr, list):
9193
parameters["_addresses"] = addr
9294
else:
@@ -98,7 +100,7 @@ def get_address_txs(addr: [str, list], block_height: int = 0) -> list:
98100
while True:
99101
if offset > 0:
100102
qs_parameters["offset"] = offset
101-
resp = koios_post_request(url, parameters)
103+
resp = koios_post_request(url, qs_parameters, parameters)
102104
txs += resp
103105
if len(resp) < API_RESP_COUNT:
104106
break
@@ -124,7 +126,7 @@ def get_credential_txs(cred: [str, list], block_height: int = 0) -> list:
124126
parameters["_payment_credentials"] = [cred]
125127
if block_height:
126128
parameters["_after_block_height"] = block_height
127-
return koios_post_request(url, parameters)
129+
return koios_post_request(url, {}, parameters)
128130

129131

130132
def get_address_assets(addr: [str, list]) -> list:
@@ -136,7 +138,7 @@ def get_address_assets(addr: [str, list]) -> list:
136138
"""
137139
url = API_BASE_URL + "/address_assets"
138140
parameters = {}
139-
qs_parameters = {}
141+
qs_parameters = {"limit": API_RESP_COUNT}
140142
if isinstance(addr, list):
141143
parameters["_addresses"] = addr
142144
else:
@@ -146,7 +148,7 @@ def get_address_assets(addr: [str, list]) -> list:
146148
while True:
147149
if offset > 0:
148150
qs_parameters["offset"] = offset
149-
resp = koios_post_request(url, parameters)
151+
resp = koios_post_request(url, qs_parameters, parameters)
150152
assets += resp
151153
if len(resp) < API_RESP_COUNT:
152154
break

src/koios_api/asset.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def get_asset_token_registry(logo: bool = True) -> list:
7070
:returns: The list of token registry information for each asset
7171
"""
7272
url = API_BASE_URL + "/asset_token_registry"
73-
parameters = {}
73+
parameters = {"order": "policy_id.asc,asset_name.asc"}
7474
assets_token_registry = []
7575
offset = 0
7676
while True:
@@ -105,7 +105,7 @@ def get_asset_info(assets: [str, list]) -> list:
105105
for asset in asset_list:
106106
asset_split = asset.split(".")
107107
parameters["_asset_list"].append([asset_split[0], asset_split[1]])
108-
return koios_post_request(url, parameters)
108+
return koios_post_request(url, {}, parameters)
109109

110110

111111
def get_asset_utxos(assets: [str, list], extended: bool = False) -> list:
@@ -118,7 +118,7 @@ def get_asset_utxos(assets: [str, list], extended: bool = False) -> list:
118118
"""
119119
url = API_BASE_URL + "/asset_utxos"
120120
parameters = {"_asset_list": []}
121-
qs_parameters = {}
121+
qs_parameters = {"limit": API_RESP_COUNT}
122122
if isinstance(assets, str):
123123
asset_list = [assets]
124124
else:
@@ -132,7 +132,7 @@ def get_asset_utxos(assets: [str, list], extended: bool = False) -> list:
132132
while True:
133133
if offset > 0:
134134
qs_parameters["offset"] = offset
135-
resp = koios_post_request(url, parameters)
135+
resp = koios_post_request(url, qs_parameters, parameters)
136136
utxos += resp
137137
if len(resp) < API_RESP_COUNT:
138138
break
@@ -285,7 +285,7 @@ def get_asset_summary(policy: str, name: str = "") -> list:
285285
"""
286286
url = API_BASE_URL + "/asset_summary"
287287
parameters = {"_asset_policy": policy, "_asset_name": name}
288-
return koios_post_request(url, parameters)
288+
return koios_post_request(url, {}, parameters)
289289

290290

291291
def get_asset_txs(

src/koios_api/block.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def get_block_info(block: [str, list]) -> list:
4444
parameters["_block_hashes"] = block
4545
else:
4646
parameters["_block_hashes"] = [block]
47-
return koios_post_request(url, parameters)
47+
return koios_post_request(url, {}, parameters)
4848

4949

5050
def get_block_txs(block: [str, list]) -> list:
@@ -60,4 +60,4 @@ def get_block_txs(block: [str, list]) -> list:
6060
parameters["_block_hashes"] = block
6161
else:
6262
parameters["_block_hashes"] = [block]
63-
return koios_post_request(url, parameters)
63+
return koios_post_request(url, {}, parameters)

src/koios_api/library.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,11 @@ def koios_get_request(url: str, parameters: dict) -> list:
7575
return resp
7676

7777

78-
def koios_post_request(url: str, parameters: dict, headers=None) -> list:
78+
def koios_post_request(url: str, params: dict, parameters: dict, headers=None) -> list:
7979
"""
8080
Create a POST request to Koios API using the "requests" library and return the text of the response as a list
8181
:param url: URL
82+
:param params: Parameters to include in the query string
8283
:param parameters: Parameters to include as data in the POST request
8384
:param headers: Headers to include in the request
8485
:return: A list with the body of the response
@@ -100,9 +101,7 @@ def koios_post_request(url: str, parameters: dict, headers=None) -> list:
100101
"asset_utxos",
101102
]
102103
if any(req in url for req in ordered_requests):
103-
params = {"order": "block_height.asc"}
104-
else:
105-
params = {}
104+
params["order"] = "block_height.asc"
106105
while True:
107106
try:
108107
response = requests.post(

src/koios_api/ogmios.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@ def get_ogmios(jsonrpc: str, method: str, params=None) -> list:
3232
parameters = {"jsonrpc": jsonrpc, "method": method}
3333
for param, value in params.items():
3434
parameters[param] = value
35-
resp = koios_post_request(url, parameters)
35+
resp = koios_post_request(url, {}, parameters)
3636
return resp

src/koios_api/pool.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def get_pool_info(pool_id: [str, list]) -> list:
3838
parameters["_pool_bech32_ids"] = pool_id
3939
else:
4040
parameters["_pool_bech32_ids"] = [pool_id]
41-
return koios_post_request(url, parameters)
41+
return koios_post_request(url, {}, parameters)
4242

4343

4444
def get_pool_stake_snapshot(pool_id: str) -> list:
@@ -255,7 +255,7 @@ def get_pool_metadata(pool_id: str) -> list:
255255
parameters["_pool_bech32_ids"] = pool_id
256256
else:
257257
parameters["_pool_bech32_ids"] = [pool_id]
258-
return koios_post_request(url, parameters)
258+
return koios_post_request(url, {}, parameters)
259259

260260

261261
def get_retiring_pools() -> list:

src/koios_api/script.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def get_script_info(script_hashes: [str, list]) -> list:
1515
parameters["_script_hashes"] = script_hashes
1616
else:
1717
parameters["_script_hashes"] = [script_hashes]
18-
return koios_post_request(url, parameters)
18+
return koios_post_request(url, {}, parameters)
1919

2020

2121
def get_native_script_list() -> list:
@@ -114,4 +114,4 @@ def get_datum_info(datum: [str, list]) -> list:
114114
parameters["_datum_hashes"] = datum
115115
else:
116116
parameters["_datum_hashes"] = [datum]
117-
return koios_post_request(url, parameters)
117+
return koios_post_request(url, {}, parameters)

src/koios_api/transactions.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def get_utxo_info(utxos: [str, list], extended: bool = False) -> list:
1818
parameters["_utxo_refs"] = [utxos]
1919
if isinstance(extended, bool):
2020
parameters["_extended"] = str(extended).lower()
21-
return koios_post_request(url, parameters)
21+
return koios_post_request(url, {}, parameters)
2222

2323

2424
def get_tx_info(txs: [str, list]) -> list:
@@ -34,7 +34,7 @@ def get_tx_info(txs: [str, list]) -> list:
3434
parameters["_tx_hashes"] = txs
3535
else:
3636
parameters["_tx_hashes"] = [txs]
37-
return koios_post_request(url, parameters)
37+
return koios_post_request(url, {}, parameters)
3838

3939

4040
def get_tx_metadata(txs: [str, list]) -> list:
@@ -50,7 +50,7 @@ def get_tx_metadata(txs: [str, list]) -> list:
5050
parameters["_tx_hashes"] = txs
5151
else:
5252
parameters["_tx_hashes"] = [txs]
53-
return koios_post_request(url, parameters)
53+
return koios_post_request(url, {}, parameters)
5454

5555

5656
def get_tx_metalabels() -> list:
@@ -104,7 +104,7 @@ def submit_tx(transaction: str) -> str:
104104
sleep(SLEEP_TIME)
105105
logger.warning("retrying...")
106106
"""
107-
resp = koios_post_request(url, transaction, headers)
107+
resp = koios_post_request(url, {}, transaction, headers)
108108
return resp
109109

110110

@@ -121,4 +121,4 @@ def get_tx_status(txs: [str, list]) -> list:
121121
parameters["_tx_hashes"] = txs
122122
else:
123123
parameters["_tx_hashes"] = [txs]
124-
return koios_post_request(url, parameters)
124+
return koios_post_request(url, {}, parameters)

0 commit comments

Comments
 (0)