nsarchive 3.0.0a8__py3-none-any.whl → 3.0.0b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nsarchive/__init__.py +6 -2
- nsarchive/errors/__init__.py +1 -0
- nsarchive/errors/_globals.py +29 -0
- nsarchive/interfaces/_economy.py +0 -252
- nsarchive/interfaces/_entities.py +101 -15
- nsarchive/interfaces/_justice.py +232 -8
- nsarchive/interfaces/_state.py +221 -24
- nsarchive/mandate.py +21 -2
- nsarchive/models/base.py +113 -71
- nsarchive/models/economy.py +80 -152
- nsarchive/models/entities.py +309 -73
- nsarchive/models/justice.py +25 -4
- nsarchive/models/republic.py +72 -29
- nsarchive/models/state.py +64 -9
- nsarchive-3.0.0b2.dist-info/METADATA +90 -0
- nsarchive-3.0.0b2.dist-info/RECORD +21 -0
- nsarchive-3.0.0a8.dist-info/METADATA +0 -21
- nsarchive-3.0.0a8.dist-info/RECORD +0 -19
- {nsarchive-3.0.0a8.dist-info → nsarchive-3.0.0b2.dist-info}/LICENSE +0 -0
- {nsarchive-3.0.0a8.dist-info → nsarchive-3.0.0b2.dist-info}/WHEEL +0 -0
nsarchive/models/base.py
CHANGED
@@ -2,7 +2,7 @@ import json
|
|
2
2
|
import requests
|
3
3
|
import typing
|
4
4
|
|
5
|
-
from .. import utils
|
5
|
+
from .. import utils, errors
|
6
6
|
|
7
7
|
VERSION = 300
|
8
8
|
|
@@ -12,27 +12,25 @@ class NSID(str):
|
|
12
12
|
|
13
13
|
ID unique et universel pour l'ensemble des entités et évènements. Il prend les `int`, les `str` et les autres instances `NSID` pour les convertir en un identifiant hexadécimal.
|
14
14
|
"""
|
15
|
+
|
15
16
|
unknown = "0"
|
17
|
+
|
16
18
|
admin = "1"
|
17
19
|
gov = "2"
|
18
20
|
court = "3"
|
19
21
|
assembly = "4"
|
20
|
-
office = "5"
|
21
|
-
hexabank = "6"
|
22
|
-
archives = "7"
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
justice_dept = "104"
|
28
|
-
egalitary_com = "105"
|
29
|
-
antifraud_dept = "106"
|
23
|
+
tresor_public = "A"
|
24
|
+
office = "B"
|
25
|
+
hexabank = "C"
|
30
26
|
|
31
27
|
def __new__(cls, value):
|
32
28
|
if type(value) == int:
|
33
29
|
value = hex(value)
|
34
30
|
elif type(value) in (str, NSID):
|
35
31
|
value = hex(int(value, 16))
|
32
|
+
elif value is None:
|
33
|
+
value = hex(int(cls.unknown, 16))
|
36
34
|
else:
|
37
35
|
raise TypeError(f"<{value}> is not NSID serializable")
|
38
36
|
|
@@ -57,6 +55,10 @@ class Interface:
|
|
57
55
|
"Content-Type": "application/json",
|
58
56
|
}
|
59
57
|
|
58
|
+
return
|
59
|
+
|
60
|
+
# Vérification (ralentit considérablement les requêtes)*
|
61
|
+
|
60
62
|
try:
|
61
63
|
test_res = requests.get(f'{self.url}/ping')
|
62
64
|
|
@@ -95,30 +97,36 @@ class Interface:
|
|
95
97
|
"password": password
|
96
98
|
})
|
97
99
|
|
98
|
-
if res.status_code == 200:
|
99
|
-
return res.json()["token"]
|
100
|
-
elif res.status_code in (401, 403):
|
101
|
-
raise PermissionError(res.json()['message'])
|
102
|
-
else:
|
103
|
-
raise Exception(f"Error {res.status_code}: {res.json()['message']}")
|
104
100
|
|
105
|
-
|
106
|
-
|
107
|
-
Récupère des données JSON depuis l'API
|
101
|
+
if 500 <= res.status_code < 600:
|
102
|
+
raise errors.globals.ServerDownError()
|
108
103
|
|
109
|
-
|
110
|
-
endpoint: `str`:
|
111
|
-
Endpoint de l'URL
|
112
|
-
headers: `dict` (optional)
|
113
|
-
Headers à envoyer
|
114
|
-
body: `dict` (optional)
|
115
|
-
Données à envoyer
|
104
|
+
_data = res.json()
|
116
105
|
|
117
|
-
|
118
|
-
|
119
|
-
|
106
|
+
if res.status_code == 400:
|
107
|
+
if _data['message'] == "MissingParam":
|
108
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
109
|
+
elif _data['message'] == "InvalidParam":
|
110
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
111
|
+
elif _data['message'] == "InvalidToken":
|
112
|
+
raise errors.globals.AuthError("Token is not valid.")
|
113
|
+
|
114
|
+
elif res.status_code == 401:
|
115
|
+
raise errors.globals.AuthError(_data['message'])
|
116
|
+
|
117
|
+
elif res.status_code == 403:
|
118
|
+
raise errors.globals.PermissionError(_data['message'])
|
119
|
+
|
120
|
+
|
121
|
+
return _data['token']
|
122
|
+
|
123
|
+
def _get_item(self, endpoint: str, body: dict = None, headers: dict = None) -> dict:
|
124
|
+
"""
|
125
|
+
Obsolète.
|
120
126
|
"""
|
121
127
|
|
128
|
+
utils.warn("La fonction 'Interface._get_item' est obsolète et sera supprimée dans la version 3.0.0 de NSArchive.")
|
129
|
+
|
122
130
|
if not headers:
|
123
131
|
headers = self.default_headers
|
124
132
|
|
@@ -138,19 +146,14 @@ class Interface:
|
|
138
146
|
|
139
147
|
return _data
|
140
148
|
|
141
|
-
def _put_in_db(self, endpoint: str, body: dict, headers: dict = None, use_PUT: bool = False) -> None:
|
149
|
+
def _put_in_db(self, endpoint: str, body: dict = {}, headers: dict = None, use_PUT: bool = False) -> None:
|
142
150
|
"""
|
143
|
-
|
144
|
-
|
145
|
-
## Paramètres
|
146
|
-
endpoint: `str`
|
147
|
-
Endpoint de l'URL
|
148
|
-
body: `dict`
|
149
|
-
Données à envoyer
|
150
|
-
headers: `dict` (optionnel)
|
151
|
-
Headers à envoyer
|
151
|
+
Obsolète
|
152
152
|
"""
|
153
153
|
|
154
|
+
utils.warn("La fonction 'Interface._put_in_db' est obsolète et sera supprimée dans la version 3.0.0 de NSArchive.")
|
155
|
+
|
156
|
+
|
154
157
|
if not headers:
|
155
158
|
headers = headers
|
156
159
|
|
@@ -162,20 +165,15 @@ class Interface:
|
|
162
165
|
if 200 <= res.status_code < 300:
|
163
166
|
return res.json()
|
164
167
|
else:
|
165
|
-
print(res.text)
|
166
168
|
res.raise_for_status()
|
167
169
|
|
168
170
|
def _delete(self, _class: str, ids: list[NSID]) -> None:
|
169
171
|
"""
|
170
|
-
|
171
|
-
|
172
|
-
## Paramètres
|
173
|
-
_class: `str`
|
174
|
-
Classe des entités à supprimer
|
175
|
-
ids: `list[NSID]`
|
176
|
-
ID des entités à supprimer
|
172
|
+
Obsolète
|
177
173
|
"""
|
178
174
|
|
175
|
+
utils.warn("La fonction 'Interface._delete' est obsolète et sera supprimée dans la version 3.0.0 de NSArchive.")
|
176
|
+
|
179
177
|
res = requests.post(f"{self.url}/delete_{_class}", json = { "ids": ids })
|
180
178
|
|
181
179
|
if 200 <= res.status_code < 300:
|
@@ -185,21 +183,33 @@ class Interface:
|
|
185
183
|
else:
|
186
184
|
raise Exception(f"Error {res.status_code}: {res.json()['message']}")
|
187
185
|
|
188
|
-
def _delete_by_ID(self, _class: str, id: NSID):
|
189
|
-
utils.warn("Method '_delete_by_id' is deprecated. Use '_delete' instead.")
|
190
|
-
self._delete(_class, id)
|
191
|
-
|
192
186
|
def fetch(self, _class: str, **query: typing.Any) -> list:
|
193
187
|
res = requests.get(f"{self.url}/fetch/{_class}", params = query)
|
194
188
|
|
195
|
-
if res.status_code
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
189
|
+
if 500 <= res.status_code < 600:
|
190
|
+
raise errors.globals.ServerDownError()
|
191
|
+
|
192
|
+
_data = res.json()
|
193
|
+
|
194
|
+
if res.status_code == 400:
|
195
|
+
if _data['message'] == "MissingParam":
|
196
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
197
|
+
elif _data['message'] == "InvalidParam":
|
198
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
199
|
+
elif _data['message'] == "InvalidToken":
|
200
|
+
raise errors.globals.AuthError("Token is not valid.")
|
201
|
+
|
202
|
+
elif res.status_code == 401:
|
203
|
+
raise errors.globals.AuthError(_data['message'])
|
204
|
+
|
205
|
+
elif res.status_code == 403:
|
206
|
+
raise errors.globals.PermissionError(_data['message'])
|
207
|
+
|
208
|
+
elif res.status_code == 404:
|
209
|
+
return []
|
210
|
+
|
201
211
|
|
202
|
-
return
|
212
|
+
return res.json()
|
203
213
|
|
204
214
|
|
205
215
|
def _upload_file(self, bucket: str, name: str, data: bytes, overwrite: bool = False, headers: dict = None) -> dict:
|
@@ -236,14 +246,28 @@ class Interface:
|
|
236
246
|
|
237
247
|
res = requests.put(f"{self.url}/upload_file/{bucket}", headers = headers, json = body, files = [ file ])
|
238
248
|
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
249
|
+
|
250
|
+
if 500 <= res.status_code < 600:
|
251
|
+
raise errors.globals.ServerDownError()
|
252
|
+
|
253
|
+
_data = res.json()
|
254
|
+
|
255
|
+
if res.status_code == 400:
|
256
|
+
if _data['message'] == "MissingParam":
|
257
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
258
|
+
elif _data['message'] == "InvalidParam":
|
259
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
260
|
+
elif _data['message'] == "InvalidToken":
|
261
|
+
raise errors.globals.AuthError("Token is not valid.")
|
262
|
+
|
263
|
+
elif res.status_code == 401:
|
264
|
+
raise errors.globals.AuthError(_data['message'])
|
265
|
+
|
266
|
+
elif res.status_code == 403:
|
267
|
+
raise errors.globals.PermissionError(_data['message'])
|
268
|
+
|
243
269
|
elif res.status_code == 409:
|
244
|
-
raise
|
245
|
-
else:
|
246
|
-
raise Exception(f"Error {res.status_code}: {res.json()['message']}")
|
270
|
+
raise errors.globals.ConflictError(_data['message'])
|
247
271
|
|
248
272
|
def _download_from_storage(self, bucket: str, path: str, headers: dict = None) -> bytes:
|
249
273
|
"""
|
@@ -264,9 +288,27 @@ class Interface:
|
|
264
288
|
|
265
289
|
res = requests.get(f"{self.url}/drive/{bucket}/{path}", headers = headers)
|
266
290
|
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
291
|
+
|
292
|
+
if 500 <= res.status_code < 600:
|
293
|
+
raise errors.globals.ServerDownError()
|
294
|
+
|
295
|
+
_data = res.json()
|
296
|
+
|
297
|
+
if res.status_code == 400:
|
298
|
+
if _data['message'] == "MissingParam":
|
299
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
300
|
+
elif _data['message'] == "InvalidParam":
|
301
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
302
|
+
elif _data['message'] == "InvalidToken":
|
303
|
+
raise errors.globals.AuthError("Token is not valid.")
|
304
|
+
|
305
|
+
elif res.status_code == 401:
|
306
|
+
raise errors.globals.AuthError(_data['message'])
|
307
|
+
|
308
|
+
elif res.status_code == 403:
|
309
|
+
raise errors.globals.PermissionError(_data['message'])
|
310
|
+
|
311
|
+
elif res.status_code == 404:
|
312
|
+
return
|
313
|
+
|
314
|
+
return _data
|
nsarchive/models/economy.py
CHANGED
@@ -3,6 +3,7 @@ import time
|
|
3
3
|
import urllib
|
4
4
|
|
5
5
|
from .base import NSID
|
6
|
+
from .. import errors
|
6
7
|
|
7
8
|
|
8
9
|
class BankAccount:
|
@@ -64,9 +65,27 @@ class BankAccount:
|
|
64
65
|
|
65
66
|
if res.status_code == 200:
|
66
67
|
self.frozen = frozen
|
67
|
-
|
68
|
-
|
69
|
-
|
68
|
+
elif 500 <= res.status_code < 600:
|
69
|
+
raise errors.globals.ServerDownError()
|
70
|
+
|
71
|
+
_data = res.json()
|
72
|
+
|
73
|
+
if res.status_code == 400:
|
74
|
+
if _data['message'] == "MissingParam":
|
75
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
76
|
+
elif _data['message'] == "InvalidParam":
|
77
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
78
|
+
elif _data['message'] == "InvalidToken":
|
79
|
+
raise errors.globals.AuthError("Token is not valid.")
|
80
|
+
|
81
|
+
elif res.status_code == 401:
|
82
|
+
raise errors.globals.AuthError(_data['message'])
|
83
|
+
|
84
|
+
elif res.status_code == 403:
|
85
|
+
raise errors.globals.PermissionError(_data['message'])
|
86
|
+
|
87
|
+
elif res.status_code == 404:
|
88
|
+
raise errors.globals.NotFoundError(_data['message'])
|
70
89
|
|
71
90
|
def flag(self, flagged: bool = True, reason: str = None) -> None:
|
72
91
|
res = requests.post(f"{self._url}/flag?flagged={str(flagged).lower()}", headers = self._headers, json = {
|
@@ -75,8 +94,27 @@ class BankAccount:
|
|
75
94
|
|
76
95
|
if res.status_code == 200:
|
77
96
|
self.flagged = flagged
|
78
|
-
|
79
|
-
|
97
|
+
elif 500 <= res.status_code < 600:
|
98
|
+
raise errors.globals.ServerDownError()
|
99
|
+
|
100
|
+
_data = res.json()
|
101
|
+
|
102
|
+
if res.status_code == 400:
|
103
|
+
if _data['message'] == "MissingParam":
|
104
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
105
|
+
elif _data['message'] == "InvalidParam":
|
106
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
107
|
+
elif _data['message'] == "InvalidToken":
|
108
|
+
raise errors.globals.AuthError("Token is not valid.")
|
109
|
+
|
110
|
+
elif res.status_code == 401:
|
111
|
+
raise errors.globals.AuthError(_data['message'])
|
112
|
+
|
113
|
+
elif res.status_code == 403:
|
114
|
+
raise errors.globals.PermissionError(_data['message'])
|
115
|
+
|
116
|
+
elif res.status_code == 404:
|
117
|
+
raise errors.globals.NotFoundError(_data['message'])
|
80
118
|
|
81
119
|
def debit(self, amount: int, reason: str = None, target: NSID = None, loan: NSID = None, digicode: str = None) -> None:
|
82
120
|
_target_query = f"&target={target}"
|
@@ -89,163 +127,53 @@ class BankAccount:
|
|
89
127
|
|
90
128
|
if res.status_code == 200:
|
91
129
|
self.amount -= amount
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
def deposit(self, amount: int, reason: str = None) -> None:
|
96
|
-
res = requests.post(f"{self._url}/deposit?amount={amount}", headers = self._headers, json = {
|
97
|
-
"reason": reason,
|
98
|
-
})
|
99
|
-
|
100
|
-
if res.status_code == 200:
|
101
|
-
self.amount -= amount
|
102
|
-
else:
|
103
|
-
res.raise_for_status()
|
104
|
-
|
105
|
-
class Item:
|
106
|
-
"""
|
107
|
-
Article d'inventaire qui peut circuler sur le serveur
|
130
|
+
elif 500 <= res.status_code < 600:
|
131
|
+
raise errors.globals.ServerDownError()
|
108
132
|
|
109
|
-
|
110
|
-
- id: `NSID`\n
|
111
|
-
Identifiant de l'objet
|
112
|
-
- name: `str`\n
|
113
|
-
Nom de l'objet
|
114
|
-
- emoji: `str`\n
|
115
|
-
Emoji lié à l'objet
|
116
|
-
"""
|
117
|
-
|
118
|
-
def __init__(self) -> None:
|
119
|
-
self._url: str = ""
|
120
|
-
self._headers: dict = {}
|
133
|
+
_data = res.json()
|
121
134
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
135
|
+
if res.status_code == 400:
|
136
|
+
if _data['message'] == "MissingParam":
|
137
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
138
|
+
elif _data['message'] == "InvalidParam":
|
139
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
140
|
+
elif _data['message'] == "InvalidToken":
|
141
|
+
raise errors.globals.AuthError("Token is not valid.")
|
127
142
|
|
128
|
-
|
129
|
-
|
130
|
-
self._headers = headers
|
143
|
+
elif res.status_code == 401:
|
144
|
+
raise errors.globals.AuthError(_data['message'])
|
131
145
|
|
132
|
-
|
146
|
+
elif res.status_code == 403:
|
147
|
+
raise errors.globals.PermissionError(_data['message'])
|
133
148
|
|
134
|
-
|
135
|
-
|
136
|
-
self.category = _data['category']
|
137
|
-
self.craft = _data['craft']
|
149
|
+
elif res.status_code == 404:
|
150
|
+
raise errors.globals.NotFoundError(_data['message'])
|
138
151
|
|
139
|
-
def
|
140
|
-
res = requests.post(f"{self._url}/
|
152
|
+
def deposit(self, amount: int, reason: str = None) -> None:
|
153
|
+
res = requests.post(f"{self._url}/deposit?amount={amount}", headers = self._headers, json = {
|
154
|
+
"reason": reason,
|
155
|
+
})
|
141
156
|
|
142
157
|
if res.status_code == 200:
|
143
|
-
self.
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
class Sale:
|
148
|
-
"""
|
149
|
-
Vente mettant en jeu un objet
|
150
|
-
|
151
|
-
## Attributs
|
152
|
-
- id: `NSID`\n
|
153
|
-
Identifiant de la vente
|
154
|
-
- item: `NSID`\n
|
155
|
-
Identifiant de l'objet mis en vente
|
156
|
-
- quantity: `int`\n
|
157
|
-
Quantité d'objets mis en vente
|
158
|
-
- price: `int`\n
|
159
|
-
Prix total du lot
|
160
|
-
- seller_id: `NSID`\n
|
161
|
-
Identifiant du vendeur
|
162
|
-
"""
|
163
|
-
|
164
|
-
def __init__(self, item: Item) -> None:
|
165
|
-
self._url: str = ""
|
166
|
-
self._headers: dict = {}
|
167
|
-
|
168
|
-
self.id: NSID = NSID(round(time.time()))
|
169
|
-
self.open: bool = True
|
170
|
-
self.seller_id: NSID = NSID('0')
|
171
|
-
|
172
|
-
self.item_id: NSID = NSID(item.id)
|
173
|
-
self.quantity: int = 1
|
174
|
-
self.price: int = 0
|
175
|
-
|
176
|
-
def _load(self, _data: dict, url: str, headers: dict) -> None:
|
177
|
-
self._url = url + '/marketplace/sales/' + _data['id']
|
178
|
-
self._headers = headers
|
179
|
-
|
180
|
-
self.id = _data['id']
|
181
|
-
self.open = _data['open']
|
182
|
-
self.seller_id = NSID(_data['seller_id'])
|
183
|
-
|
184
|
-
self.item_id = NSID(_data['item_id'])
|
185
|
-
self.quantity = _data['quantity']
|
186
|
-
self.price = _data['price']
|
187
|
-
|
188
|
-
class Inventory:
|
189
|
-
"""
|
190
|
-
Inventaire d'un membre
|
191
|
-
|
192
|
-
## Attributs
|
193
|
-
- id: `NSID`\n
|
194
|
-
ID de l'inventaire
|
195
|
-
- owner_id: `NSID`\n
|
196
|
-
ID du propriétaire de l'inventaire
|
197
|
-
- tag: `str`\n
|
198
|
-
Étiquette de l'inventaire
|
199
|
-
- register_date: `int`\n
|
200
|
-
Date (timestamp) de création de l'inventaire
|
201
|
-
- items: `dict[NSID, int]`\n
|
202
|
-
Collection d'objets et leur quantité
|
203
|
-
"""
|
204
|
-
|
205
|
-
def __init__(self, owner_id: NSID) -> None:
|
206
|
-
self._url: str = ""
|
207
|
-
self._headers: dict = {}
|
208
|
-
|
209
|
-
self.id: NSID = NSID(owner_id)
|
210
|
-
self.owner_id: NSID = NSID(owner_id)
|
211
|
-
|
212
|
-
self.tag: str = "inconnu"
|
213
|
-
self.register_date: int = 0
|
214
|
-
|
215
|
-
self.items: dict[NSID, int] = {}
|
216
|
-
|
217
|
-
def _load(self, _data: dict, url: str, headers: dict):
|
218
|
-
self._url = url + '/bank/inventories/' + _data['id']
|
219
|
-
self._headers = headers
|
220
|
-
|
221
|
-
self.id = NSID(_data['id'])
|
222
|
-
self.owner_id = NSID(_data['owner_id'])
|
158
|
+
self.amount -= amount
|
159
|
+
elif 500 <= res.status_code < 600:
|
160
|
+
raise errors.globals.ServerDownError()
|
223
161
|
|
224
|
-
|
225
|
-
self.register_date = _data['register_date']
|
162
|
+
_data = res.json()
|
226
163
|
|
227
|
-
|
164
|
+
if res.status_code == 400:
|
165
|
+
if _data['message'] == "MissingParam":
|
166
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
167
|
+
elif _data['message'] == "InvalidParam":
|
168
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
169
|
+
elif _data['message'] == "InvalidToken":
|
170
|
+
raise errors.globals.AuthError("Token is not valid.")
|
228
171
|
|
229
|
-
|
230
|
-
|
231
|
-
"giver": giver,
|
232
|
-
"digicode": digicode
|
233
|
-
})
|
172
|
+
elif res.status_code == 401:
|
173
|
+
raise errors.globals.AuthError(_data['message'])
|
234
174
|
|
235
|
-
|
236
|
-
|
237
|
-
self.objects[item.id] -= quantity
|
238
|
-
else:
|
239
|
-
self.objects[item.id] = 0
|
240
|
-
else:
|
241
|
-
res.raise_for_status()
|
242
|
-
|
243
|
-
def sell_item(self, item: Item, price: int, quantity: int = 1, digicode: str = None) -> NSID:
|
244
|
-
res = requests.post(f"{self._url}/sell_item?item={item.id}&quantity={quantity}&price={price}", headers = self._headers, json = {
|
245
|
-
"digicode": digicode
|
246
|
-
})
|
175
|
+
elif res.status_code == 403:
|
176
|
+
raise errors.globals.PermissionError(_data['message'])
|
247
177
|
|
248
|
-
|
249
|
-
|
250
|
-
else:
|
251
|
-
res.raise_for_status()
|
178
|
+
elif res.status_code == 404:
|
179
|
+
raise errors.globals.NotFoundError(_data['message'])
|