Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 11 additions & 22 deletions postkz.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,81 +27,70 @@ def login(self, login=None, phone=None, password=None):
if response.status_code == 200:
index = response.headers["Set-Cookie"].find("X-Auth-POSTKZ")
return response.headers["Set-Cookie"][index+14:index+50]
else:
raise LoginError()
raise LoginError()

def get_IIN_info(self, iinBin) -> IIN:
response = requests.post("https://post.kz/mail-app/api/checkIinBin", headers=self.headers_web, json={"iinBin": iinBin})
if response.status_code == 202:
return IIN(json.loads(response.text))
else:
raise CheckIINError(ErrorApiResponse(json.loads(response.text)))
raise CheckIINError(ErrorApiResponse(json.loads(response.text)))

def register(self, fullName, login, phone_number, password) -> ServerDefaultResponse:
response = requests.post("https://post.kz/mail-app/api/v2/register", headers=self.headers_web, json={"fullName": fullName, "login": login, "mobileNumber": phone_number, "password": password})
if response.status_code == 201:
return ServerDefaultResponse(json.loads(response.text))
else:
raise RegisterError(response.text)
raise RegisterError(response.text)

def resend_activation_code(self, login, phone_number, password) -> ServerDefaultResponse:
response = requests.post("https://post.kz/mail-app/api/resendActivationKey", headers = self.headers_web, json = {"login": login, "mobileNumber": phone_number, "password": password})
if response.status_code == 201:
return ServerDefaultResponse(json.loads(response.text))
else:
raise ResendCodeException()
raise ResendCodeException()

def activate_account(self, login, activationCode) -> ServerDefaultResponse:
response = requests.post("https://post.kz/mail-app/api/activate", headers = self.headers_web, params = {"key": activationCode, "login": login})
if response.status_code == 200:
return ServerDefaultResponse(json.loads(response.text))
else:
raise RegisterError()
raise RegisterError()

def reset_password1(self, login, phone_number, isOrg = False) -> ServerDefaultResponse:
"""reset_login1 и это одно и то же, только тут надо еще указать логин, а там только номер телефона"""

response = requests.post("https://post.kz/mail-app/public/v2/forgot_password_step1", headers = self.headers_web, json = {"login": login, "mobileNumber": phone_number, "captcha": "", "isOrg": isOrg})
if response.status_code == 200:
return ServerDefaultResponse(json.loads(response.text))
else:
raise ResetPasswordError()
raise ResetPasswordError()

def reset_password2(self, login, phone_number, activationKey, isOrg = False) -> ServerDefaultResponse:
"""Проверяет код активации и по сути эта функция бесполезная"""

response = requests.post("https://post.kz/mail-app/public/v2/forgot_password_step2", headers = self.headers_web, json = {"login": login, "mobileNumber": phone_number, "activationKey": activationKey, "isOrg": isOrg})
if response.status_code == 200:
return ServerDefaultResponse(json.loads(response.text))
else:
raise ResetPasswordError()
raise ResetPasswordError()

def change_password(self, login, phone_number, new_password, isOrg = False) -> ServerDefaultResponse:
response = requests.post("https://post.kz/mail-app/public/change_password", headers = self.headers_web, json = {"login": login, "mobileNumber": phone_number, "password": new_password, "isOrg": isOrg})
if response.status_code == 200:
return ServerDefaultResponse(json.loads(response.text))
else:
raise ResetPasswordError()
raise ResetPasswordError()

def reset_login1(self, phone_number, isOrg = False):
"""Возвращает текущий логин"""

response = requests.post("https://post.kz/mail-app/public/v2/forgot_login_step1", headers = self.headers_web, json = {"mobileNumber": phone_number, "captcha": "", "isOrg": isOrg})
if response.status_code == 200:
return ServerDefaultResponse(json.loads(response.text))
else:
raise ResetLoginError()
raise ResetLoginError()

def reset_login2(self, phone_number, activationKey, login, isOrg = False):
response = requests.post("https://post.kz/mail-app/public/v2/forgot_login_step2", headers = self.headers_web, json = {"mobileNumber": phone_number, "login": login, "activationKey": activationKey, "isOrg": isOrg})
if response.status_code == 200:
return ServerDefaultResponse(json.loads(response.text))
else:
raise ResetLoginError()
raise ResetLoginError()

def get_account_info(self, sid) -> AccountInfo:
response = requests.get("https://post.kz/mail-app/api/account", headers = self.headers_web, cookies = {"X-Auth-POSTKZ": sid})
if response.status_code == 200:
return AccountInfo(json.loads(response.text))
else:
raise AccountInfoError() # Нету ответа
raise AccountInfoError() # Нету ответа
23 changes: 8 additions & 15 deletions postkzmobile.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ def get_headers(self, token):
a = self.headers.copy()
a["x-auth-postkz"] = token
return a
else:
return self.headers
return self.headers

def login(self, login=None, phone=None, password=None, androidToken="", iosToken=""):
data_to_send = {"androidToken": androidToken, "iosToken": iosToken, "password": password}
Expand All @@ -30,7 +29,7 @@ def login(self, login=None, phone=None, password=None, androidToken="", iosToken

if response.status_code == 200:
return AccountMobile(json.loads(response.text))
elif response.status_code == 418:
if response.status_code == 418:
raise WrongLoginOrPass()
else:
raise LoginError()
Expand All @@ -39,45 +38,39 @@ def relogin(self, refresh, androidToken="", iosToken="") -> str:
response = requests.post("https://post.kz/auth/mobile/access", headers=self.headers, json={"refresh": refresh, "androidToken": androidToken, "iosToken": iosToken})
if response.status_code == 200:
return json.loads(response.text)["access"]
else:
raise ReloginError()
raise ReloginError()

def logout(self, access, refresh) -> bool:
response = requests.post("https://post.kz/auth/mobile/logout", headers=self.headers, json={"access": access, "refresh": refresh})
if response.status_code == 200:
return True
else:
raise LogoutError()
raise LogoutError()

def search_by_phone(self, token, phone) -> ParcelList:
response = requests.get(f"https://post.kz/mail-app/api/parcellog/searchByPhone/{phone}", headers = self.get_headers(token))
if response.status_code == 204:
return ParcelList(json.loads(response.text))
else:
raise SearchByPhoneError()
raise SearchByPhoneError()

def is_parcel_exists(self, token, barcode) -> bool:
"""Возвращает true, если посылка вообще существует"""

response = requests.get("https://post.kz/mail-app/api/tracking", headers = self.get_headers(token), data=barcode)
if response.status_code == 201:
return json.loads(response.text)["result"]
else:
raise IsParcelExistsError()
raise IsParcelExistsError()

def get_parces_events(self, barcode, token=None):
response = requests.get(f"https://post.kz/external-api/tracking/api/v2/{barcode}/events", headers = self.get_headers(token))
if response.status_code == 200:
return EventsParcel(json.loads(response.text))
else:
raise GetParcelEventsError()
raise GetParcelEventsError()

def get_parcel_info(self, barcode, token, postamat=True):
response = requests.post("https://post.kz/mail-app/api/v2/parcellog/getPhoneNumber", headers = self.get_headers(token), json={"barcode": barcode, "postamat": postamat})
if response.status_code == 200:
return ParcelInfo(json.loads(response.text))
else:
raise GetParcelInfoError()
raise GetParcelInfoError()

def get_position_postamat(self, barcode, index, token = None):
response = requests.get("https://post.kz/mail-app/api/v2/parcellog/getPositionPostamat", headers = self.get_headers(token))
Expand Down