oebb_py/classes/hafas.py

59 lines
1.6 KiB
Python

from datetime import datetime
from json import dumps
from random import SystemRandom
from string import ascii_lowercase, digits
from classes import HTTPClient
class Hafas:
API_URL = "https://fahrplan.oebb.at/bin/mgate.exe?rnd=%i"
BASE_CONTENT = {
"id": None, # h7iqfi6m2eskyk8x
"ver": "1.32",
"lang": "deu",
"auth": {
"type": "AID",
"aid": "5vHavmuWPWIfetEe"
},
"client": {
"id": "OEBB", # OEBB
"type": "WEB",
"name": "bahnapi.eu", # webapp
"l": "oebb_py" # vs_webapp
},
"formatted": False,
"ext": "OEBB.11",
}
def __init__(self):
self.timestamp = int(datetime.now().timestamp() * 1000)
@classmethod
def generateID(self, len=16, chars=ascii_lowercase + digits):
r = SystemRandom()
return "".join([r.choice(chars) for _ in range(len)])
def buildRequest(self, request_type, request_data, **kwargs):
client = HTTPClient(self.API_URL % int(
datetime.now().timestamp() * 1000))
data = self.BASE_CONTENT
data[request_type] = request_data
if "language" in kwargs.items():
data["lang"] = kwargs["language"]
if "id" in kwargs.items():
data["id"] = kwargs["id"]
if not data["id"]:
data["id"] = self.__class__.generateID()
client.data = dumps(data)
return client
def request(self, request_type, request_data):
client = self.buildRequest(request_type, request_data)
return client.execute()