Refactor API calls into a separate makeRequest function and remove sdkmain.py
This commit is contained in:
parent
7651641fd3
commit
93913b3e2a
4 changed files with 59 additions and 156 deletions
|
@ -16,6 +16,17 @@ def getDebugInfo(data):
|
|||
message = status.get("Message")
|
||||
return code, message
|
||||
|
||||
def makeRequest(url):
|
||||
digest, canonical_url, signature = get_signature_values(fingerprint, private_key, body=None, full_url=url, timestamp=datetime.now())
|
||||
|
||||
headers = makeHeader(signature, canonical_url)
|
||||
|
||||
response = requests.get(url, headers=headers)
|
||||
content = response.text
|
||||
|
||||
dinfo = getDebugInfo(content)
|
||||
return content, dinfo
|
||||
|
||||
def APILogin(login, password):
|
||||
|
||||
url = "https://eduvulcan.pl/"
|
||||
|
@ -111,82 +122,31 @@ def JWTLogin(token, debug=False):
|
|||
|
||||
def HEBELogin(tenant, debug=False):
|
||||
url = f"https://lekcjaplus.vulcan.net.pl/{tenant}{HEBE}?mode=2&lastSyncDate=1970-01-01%2001%3A00%3A00"
|
||||
|
||||
digest, canonical_url, signature = get_signature_values(fingerprint, private_key, body=None, full_url=url, timestamp=datetime.now())
|
||||
|
||||
headers = makeHeader(signature, canonical_url)
|
||||
|
||||
response = requests.get(url, headers=headers)
|
||||
content = response.text
|
||||
|
||||
if debug:
|
||||
dinfo = getDebugInfo(content)
|
||||
return content, dinfo
|
||||
|
||||
return content
|
||||
content, dinfo = makeRequest(url)
|
||||
return content, dinfo
|
||||
|
||||
def getLuckyNumber(tenant, schoolid, pupilid, constituentid, debug=False):
|
||||
timestamp = datetime.now()
|
||||
date = timestamp.strftime("%Y-%m-%d")
|
||||
|
||||
url = f"https://lekcjaplus.vulcan.net.pl/{tenant}/{schoolid}{LUCKY}?pupilId={pupilid}&constituentId={constituentid}&day={date}"
|
||||
|
||||
digest, canonical_url, signature = get_signature_values(fingerprint, private_key, body=None, full_url=url, timestamp=datetime.now())
|
||||
headers = makeHeader(signature, canonical_url)
|
||||
|
||||
response = requests.get(url, headers=headers)
|
||||
content = response.text
|
||||
|
||||
if debug:
|
||||
dinfo = getDebugInfo(content)
|
||||
return content, dinfo
|
||||
|
||||
return content
|
||||
content, dinfo = makeRequest(url)
|
||||
return content, dinfo
|
||||
|
||||
def getGrades(tenant, schoolid, pupilid, unitid, periodid, debug=False):
|
||||
url = f"https://lekcjaplus.vulcan.net.pl/{tenant}/{schoolid}/api/mobile/grade/byPupil?unitId={unitid}&pupilId={pupilid}&periodId={periodid}&lastSyncDate=1970-01-01%2001%3A00%3A00&lastId=-2147483648&pageSize=500"
|
||||
|
||||
digest, canonical_url, signature = get_signature_values(fingerprint, private_key, body=None, full_url=url, timestamp=datetime.now())
|
||||
|
||||
headers = makeHeader(signature, canonical_url)
|
||||
|
||||
response = requests.get(url, headers=headers)
|
||||
content = response.text
|
||||
|
||||
|
||||
if debug:
|
||||
dinfo = getDebugInfo(content)
|
||||
return content, dinfo
|
||||
|
||||
return content
|
||||
content, dinfo = makeRequest(url)
|
||||
return content, dinfo
|
||||
|
||||
def getTimetable(tenant, schoolid, pupilid, start_date, end_date, debug=False):
|
||||
url = f"https://lekcjaplus.vulcan.net.pl/{tenant}/{schoolid}/api/mobile/schedule/withchanges/byPupil?pupilId={pupilid}&dateFrom={start_date}&dateTo={end_date}&lastId=-2147483648&pageSize=500&lastSyncDate=1970-01-01%2001%3A00%3A00"
|
||||
|
||||
digest, canonical_url, signature = get_signature_values(fingerprint, private_key, body=None, full_url=url, timestamp=datetime.now())
|
||||
|
||||
headers = makeHeader(signature, canonical_url)
|
||||
|
||||
response = requests.get(url, headers=headers)
|
||||
content = response.text
|
||||
|
||||
if debug:
|
||||
dinfo = getDebugInfo(content)
|
||||
return content, dinfo
|
||||
|
||||
return content
|
||||
content, dinfo = makeRequest(url)
|
||||
return content, dinfo
|
||||
|
||||
def getExams(tenant, schoolid, pupilid, start_date, end_date, debug=False):
|
||||
url = f"https://lekcjaplus.vulcan.net.pl/{tenant}/{schoolid}/api/mobile/exam/byPupil?pupilId={pupilid}&dateFrom={start_date}&dateTo={end_date}&lastId=-2147483648&pageSize=500&lastSyncDate=1970-01-01%2001%3A00%3A00"
|
||||
|
||||
digest, canonical_url, signature = get_signature_values(fingerprint, private_key, body=None, full_url=url, timestamp=datetime.now())
|
||||
|
||||
headers = makeHeader(signature, canonical_url)
|
||||
response = requests.get(url, headers=headers)
|
||||
content = response.text
|
||||
|
||||
if debug:
|
||||
dinfo = getDebugInfo(content)
|
||||
return content, dinfo
|
||||
|
||||
return content
|
||||
content, dinfo = makeRequest(url)
|
||||
return content, dinfo
|
||||
|
|
37
src/impl/hebece/src/parser.py
Normal file
37
src/impl/hebece/src/parser.py
Normal file
|
@ -0,0 +1,37 @@
|
|||
import requests
|
||||
import json
|
||||
import uuid
|
||||
import hashlib
|
||||
import sqlite3
|
||||
import os
|
||||
import base64
|
||||
from impl.hebece.src.signer import *
|
||||
from impl.hebece.src.utils import *
|
||||
from impl.hebece.src.api import *
|
||||
from datetime import datetime, timedelta
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
def getUserInfo(tenant):
|
||||
content, dinfo = HEBELogin(tenant)
|
||||
|
||||
data = json.loads(content)
|
||||
envelope = data.get("Envelope", [])[0]
|
||||
|
||||
pupil = envelope.get("Pupil", {})
|
||||
unit = envelope.get("Unit", {})
|
||||
links = envelope.get("Links", {})
|
||||
ConstituentUnit = envelope.get("ConstituentUnit", {})
|
||||
periods = envelope.get("Periods", [])
|
||||
|
||||
|
||||
Name = pupil.get("FirstName", {})
|
||||
SecondName = pupil.get("SecondName", {})
|
||||
Surname = pupil.get("Surname", {})
|
||||
Class = envelope.get("ClassDisplay", {})
|
||||
PupilID = pupil.get("Id", {})
|
||||
SchoolID = links.get("Symbol", {})
|
||||
ConstituentID = ConstituentUnit.get("Id", {})
|
||||
UnitID = unit.get("Id", {})
|
||||
PeriodID = next((period.get('Id') for period in periods if period.get('Current')), None)
|
||||
|
||||
return Name, SecondName, Surname, Class, PupilID, SchoolID, ConstituentID, UnitID, PeriodID
|
|
@ -1,94 +0,0 @@
|
|||
import requests
|
||||
import json
|
||||
import uuid
|
||||
import hashlib
|
||||
import sqlite3
|
||||
import os
|
||||
import base64
|
||||
from impl.hebece.src.signer import *
|
||||
from impl.hebece.src.utils import *
|
||||
from impl.hebece.src.api import *
|
||||
from datetime import datetime, timedelta
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
if __name__ == '__main__':
|
||||
debug = True
|
||||
else:
|
||||
debug = False
|
||||
|
||||
def getDebugInfo(data):
|
||||
data = json.loads(data)
|
||||
status = data.get("Status", {})
|
||||
code = status.get("Code")
|
||||
message = status.get("Message")
|
||||
return code, message
|
||||
|
||||
def getUserInfo(tenant):
|
||||
content = HEBELogin(tenant)
|
||||
|
||||
data = json.loads(content)
|
||||
envelope = data.get("Envelope", [])[0]
|
||||
|
||||
pupil = envelope.get("Pupil", {})
|
||||
unit = envelope.get("Unit", {})
|
||||
links = envelope.get("Links", {})
|
||||
ConstituentUnit = envelope.get("ConstituentUnit", {})
|
||||
periods = envelope.get("Periods", [])
|
||||
|
||||
|
||||
Name = pupil.get("FirstName", {})
|
||||
SecondName = pupil.get("SecondName", {})
|
||||
Surname = pupil.get("Surname", {})
|
||||
Class = envelope.get("ClassDisplay", {})
|
||||
PupilID = pupil.get("Id", {})
|
||||
SchoolID = links.get("Symbol", {})
|
||||
ConstituentID = ConstituentUnit.get("Id", {})
|
||||
UnitID = unit.get("Id", {})
|
||||
PeriodID = next((period.get('Id') for period in periods if period.get('Current')), None)
|
||||
|
||||
return Name, SecondName, Surname, Class, PupilID, SchoolID, ConstituentID, UnitID, PeriodID
|
||||
|
||||
if __name__ == '__main__':
|
||||
today = datetime.today().strftime('%d-%m-%y')
|
||||
start_date, end_date = get_current_week()
|
||||
|
||||
token = APILogin(login, password)
|
||||
tenant = get_tenant_from_jwt(token)
|
||||
content, dinfoJWT = JWTLogin(token, debug=debug)
|
||||
content, dinfoHEBE = HEBELogin(tenant, debug=debug)
|
||||
|
||||
Name, SecondName, Surname, Class, PupilID, SchoolID, ConstituentID, UnitID, PeriodID = getUserInfo(tenant)
|
||||
print(Name, Surname, Class, PupilID, SchoolID, ConstituentID)
|
||||
|
||||
LuckyNumber, LuckyNumberDay, dinfoLUCK = getLuckyNumber(tenant=tenant, schoolid=SchoolID, pupilid=PupilID, constituentid=ConstituentID, debug=debug)
|
||||
print(f"Lucky number: {LuckyNumber}")
|
||||
|
||||
content, dinfoGRADE = getGrades(tenant=tenant, schoolid=SchoolID, pupilid=PupilID, unitid=UnitID, periodid=PeriodID, debug=debug)
|
||||
|
||||
response, dinfoTIME = getTimetable(tenant=tenant, schoolid=SchoolID, pupilid=PupilID, start_date=start_date, end_date=end_date, debug=debug)
|
||||
|
||||
|
||||
r = getTimetableForDay(day=today)
|
||||
print(f"\nLessons for {today}:")
|
||||
|
||||
if r == []:
|
||||
print("No lessons for today")
|
||||
else:
|
||||
for lesson in r:
|
||||
print(*lesson)
|
||||
|
||||
content, dinfoEXAM = getExams(tenant=tenant, schoolid=SchoolID, pupilid=PupilID, start_date=start_date, end_date=end_date, debug=debug)
|
||||
|
||||
ImportExamsToSQLite(content)
|
||||
print("Exams imported to SQLite database")
|
||||
|
||||
exams = getExamsForWeek(start_date, end_date)
|
||||
for exam in exams:
|
||||
print(*exam)
|
||||
|
||||
print(f"\nJWT Status: {dinfoJWT[0]} {dinfoJWT[1]}")
|
||||
print(f"HEBE Status: {dinfoHEBE[0]} {dinfoHEBE[1]}")
|
||||
print(f"Lucky Number Status: {dinfoLUCK[0]} {dinfoLUCK[1]}")
|
||||
print(f"Grades Status: {dinfoGRADE[0]} {dinfoGRADE[1]}")
|
||||
print(f"Timetable Status: {dinfoTIME[0]} {dinfoTIME[1]}")
|
||||
print(f"Exams Status: {dinfoEXAM[0]} {dinfoEXAM[1]}")
|
|
@ -1,5 +1,5 @@
|
|||
from impl.hebece.src.api import *
|
||||
from impl.hebece.src.sdkmain import *
|
||||
from impl.hebece.src.parser import *
|
||||
from impl.hebece.src.utils import *
|
||||
from impl.hebece.src.signer import *
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue