Hallo Beans-Community,
Da ich im Moment den TelegramBeansBot für die unsere Community-Gruppe Programmiere und ich mangels Dokumentation Probleme hatte die Offizielle API zu nutzen, möchte ich meinen Code dafür hier als Beispiel veröffentlichen.
Desweiteren hab ich noch 2 Codebeispiele für andere Programmiersprachen zusammengetragen:
Danke dafür an die jeweiligen Entwickler!
- C# - https://github.com/Dakor91/RocketbeansTV-PIP/blob/master/RocketbeansTV-PIP/FormSendeplan.cs
- node.js - https://gist.github.com/BakeRolls/453d0b352747199a1c98
Hier mein Beispiel in Python
def getpanapijson(baseurl='http://api.rocketmgmt.de/', endpoint='schedule', key=None, secret=None):
url = baseurl + endpoint
req = urllib2.Request(url)
req.headers.clear()
req.add_header('Accept', 'application/json')
req.add_header("Authorization", "WSSE profile=\"UsernameToken\"")
rb_id = '00000000-0000-0000-0000-000000000000'
# 2 Minuten weniger da es vorgekommen ist das die Auth. fehlgeschlagen ist, da für den Beansserver der Zeitpunkt in der Zukunft lag.
rb_created = (datetime.utcnow() - timedelta(minutes=2)).strftime("%Y-%m-%dT%H:%M:%S+0000")
nonce = rb_id + rb_created + randstr_generator(10)
sha1 = hashlib.sha1(nonce + rb_created + secret)
req.add_header('X-WSSE', "UsernameToken Username=\"" + key + "\", PasswordDigest=\"" + base64.b64encode(sha1.hexdigest()) + "\", Nonce=\"" + base64.b64encode(nonce) + "\", Created=\"" + rb_created + "\"")
# URL aufrufen
try:
resp = urllib2.urlopen(req)
response = resp.read()
except Exception as e:
print e
return None
# Json Parsen
return json.loads(str(response.decode("utf-8")))
# ------------------------------
# RandomStringfunktion
def randstr_generator(size=6, chars=string.ascii_lowercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
Benötigte Imports
import urllib2
from datetime import datetime
from datetime import timedelta
import hashlib
import base64
import random
import json
import string