Refactor order class functions in sync and async versions for improved error handling

This commit is contained in:
mtrshirazi21 2026-02-17 17:46:15 +03:30
parent 88359c882f
commit e6bd5852c2
2 changed files with 172 additions and 139 deletions

View File

@ -118,20 +118,24 @@ class Order:
'953097ac6ced45ca8ef205b76ca6faf2'
"""
if self.OrderId is None :
try :
SendOrder_Response = await self.__AuthASyncClient.httpx_Client.post(**self.__SendOrder_RequestInfo)
if self.OrderId is None :
match SendOrder_Response.status_code :
SendOrder_Response = await self.__AuthASyncClient.httpx_Client.post(**self.__SendOrder_RequestInfo)
case 200 :
match SendOrder_Response.status_code :
self.OrderId = SendOrder_Response.json()['Data']['order_uuid']
return None
case _ : return None
else : return None
case 200 :
self.OrderId = SendOrder_Response.json()['Data']['order_uuid']
return None
case _ : return None
else : return None
except : return None
# +--------------------------------------------------------------------------------------+ #
async def Edit(
@ -177,38 +181,42 @@ class Order:
)
"""
if self.OrderId is not None:
try :
if self.OrderId is not None:
Edit_response = await self.__AuthASyncClient.httpx_Client.patch(
url='https://core.hedgetech.ir/ems-engine/tse-ifb/order/edit',
data={
'order_uuid' : self.OrderId,
'Order_ValidityType' : Order_ValidityType,
'ValidityDate' : ValidityDate,
'Price' : Price,
'Volume' : Volume
}
)
match Edit_response.status_code:
case 200:
Edit_response = Edit_response.json()
self.OrderId = Edit_response['Data']['order_uuid']
self.ValidityType = Edit_response['Data']['order_validity_type']
self.ValidityDate = ValidityDate
self.Price = Edit_response['Data']['order_price']
self.Volume = Edit_response['Data']['order_volume']
return None
case _ : return None
else : return None
except : return None
Edit_response = await self.__AuthASyncClient.httpx_Client.patch(
url='https://core.hedgetech.ir/ems-engine/tse-ifb/order/edit',
data={
'order_uuid' : self.OrderId,
'Order_ValidityType' : Order_ValidityType,
'ValidityDate' : ValidityDate,
'Price' : Price,
'Volume' : Volume
}
)
match Edit_response.status_code:
case 200:
Edit_response = Edit_response.json()
self.OrderId = Edit_response['Data']['order_uuid']
self.ValidityType = Edit_response['Data']['order_validity_type']
self.ValidityDate = ValidityDate
self.Price = Edit_response['Data']['order_price']
self.Volume = Edit_response['Data']['order_volume']
return None
case _ : return None
else : return None
# +--------------------------------------------------------------------------------------+ #
async def Status(self)-> OrderStatus | None:
@ -246,24 +254,27 @@ class Order:
'ValidityDate': 0
}
"""
if self.OrderId is not None:
status_respnse = await self.__AuthASyncClient.httpx_Client.get(
url='https://core.hedgetech.ir/ems-engine/tse-ifb/order/status',
params={'order_uuid' : self.OrderId}
)
try :
match status_respnse.status_code :
case 200:
return status_respnse.json()['Data']
case _ : return None
else : return None
if self.OrderId is not None:
status_respnse = await self.__AuthASyncClient.httpx_Client.get(
url='https://core.hedgetech.ir/ems-engine/tse-ifb/order/status',
params={'order_uuid' : self.OrderId}
)
match status_respnse.status_code :
case 200:
return status_respnse.json()['Data']
case _ : return None
else : return None
except : return None
# +--------------------------------------------------------------------------------------+ #
async def Delete(self)-> None:
@ -283,26 +294,30 @@ class Order:
>>> print(order.is_deleted)
True
"""
if self.OrderId is not None:
Delete_respnse = await self.__AuthASyncClient.httpx_Client.delete(
url= 'https://core.hedgetech.ir/ems-engine/tse-ifb/order/delete',
params={'order_uuid' : self.OrderId}
)
try :
match Delete_respnse.status_code :
if self.OrderId is not None:
Delete_respnse = await self.__AuthASyncClient.httpx_Client.delete(
url= 'https://core.hedgetech.ir/ems-engine/tse-ifb/order/delete',
params={'order_uuid' : self.OrderId}
)
case 200:
self.is_deleted = True
return None
case _ : return None
else : return None
match Delete_respnse.status_code :
case 200:
self.is_deleted = True
return None
case _ : return None
else : return None
except : return None
# ================================================================================= #
class EmsEngine_TseIfb_AsyncClient:
@ -369,6 +384,7 @@ class EmsEngine_TseIfb_AsyncClient:
OMS : Literal[
'Omex | Parsian',
'Sahra | Karamad',
'Sahra | NIBB',
]
)-> ImageFile:

View File

@ -122,20 +122,24 @@ class Order:
'0xA23F...'
"""
if self.OrderId is None :
SendOrder_Response = self.__AuthSyncClient.httpx_Client.post(**self.__SendOrder_RequestInfo)
try :
match SendOrder_Response.status_code :
if self.OrderId is None :
SendOrder_Response = self.__AuthSyncClient.httpx_Client.post(**self.__SendOrder_RequestInfo)
case 200 :
match SendOrder_Response.status_code :
self.OrderId = SendOrder_Response.json()['Data']['order_uuid']
return None
case _ : return None
case 200 :
self.OrderId = SendOrder_Response.json()['Data']['order_uuid']
return None
case _ : return None
else : return None
else : return None
except : return None
# +--------------------------------------------------------------------------------------+ #
@ -189,37 +193,41 @@ class Order:
)
"""
if self.OrderId is not None:
try :
Edit_response = self.__AuthSyncClient.httpx_Client.patch(
url='https://core.hedgetech.ir/ems-engine/tse-ifb/order/edit',
data={
'order_uuid' : self.OrderId,
'Order_ValidityType' : Order_ValidityType,
'ValidityDate' : ValidityDate,
'Price' : Price,
'Volume' : Volume
}
)
if self.OrderId is not None:
match Edit_response.status_code:
Edit_response = self.__AuthSyncClient.httpx_Client.patch(
url='https://core.hedgetech.ir/ems-engine/tse-ifb/order/edit',
data={
'order_uuid' : self.OrderId,
'Order_ValidityType' : Order_ValidityType,
'ValidityDate' : ValidityDate,
'Price' : Price,
'Volume' : Volume
}
)
case 200:
match Edit_response.status_code:
Edit_response = Edit_response.json()
self.OrderId = Edit_response['Data']['order_uuid']
self.ValidityType = Edit_response['Data']['order_validity_type']
self.ValidityDate = ValidityDate
self.Price = Edit_response['Data']['order_price']
self.Volume = Edit_response['Data']['order_volume']
return None
case _ : return None
else : return None
case 200:
Edit_response = Edit_response.json()
self.OrderId = Edit_response['Data']['order_uuid']
self.ValidityType = Edit_response['Data']['order_validity_type']
self.ValidityDate = ValidityDate
self.Price = Edit_response['Data']['order_price']
self.Volume = Edit_response['Data']['order_volume']
return None
case _ : return None
else : return None
except : return None
# +--------------------------------------------------------------------------------------+ #
@ -310,22 +318,26 @@ class Order:
}
"""
if self.OrderId is not None:
status_respnse = self.__AuthSyncClient.httpx_Client.get(
url='https://core.hedgetech.ir/ems-engine/tse-ifb/order/status',
params={'order_uuid' : self.OrderId}
)
try :
match status_respnse.status_code :
if self.OrderId is not None:
status_respnse = self.__AuthSyncClient.httpx_Client.get(
url='https://core.hedgetech.ir/ems-engine/tse-ifb/order/status',
params={'order_uuid' : self.OrderId}
)
case 200:
match status_respnse.status_code :
return status_respnse.json()['Data']
case 200:
return status_respnse.json()['Data']
case _ : return None
case _ : return None
else : return None
else : return None
except : return None
# +--------------------------------------------------------------------------------------+ #
@ -351,24 +363,28 @@ class Order:
True
"""
if self.OrderId is not None:
Delete_respnse = self.__AuthSyncClient.httpx_Client.delete(
url= 'https://core.hedgetech.ir/ems-engine/tse-ifb/order/delete',
params={'order_uuid' : self.OrderId}
)
match Delete_respnse.status_code :
case 200:
self.is_deleted = True
return None
case _ : return None
try :
else : return None
if self.OrderId is not None:
Delete_respnse = self.__AuthSyncClient.httpx_Client.delete(
url= 'https://core.hedgetech.ir/ems-engine/tse-ifb/order/delete',
params={'order_uuid' : self.OrderId}
)
match Delete_respnse.status_code :
case 200:
self.is_deleted = True
return None
case _ : return None
else : return None
except : return None
# ================================================================================= #
@ -401,6 +417,7 @@ class EmsEngine_TseIfb_SyncClient:
OMS : Literal[
'Omex | Parsian',
'Sahra | Karamad',
'Sahra | NIBB',
]
)-> ImageFile: