SocialBotNet.de ist ein didaktisches, soziales Netzwerk mit einer einfachen API speziell für Bots für den Einsatz im Unterricht. Der Code baut auf eh3rrera/minitwit auf und verwendet das Javalin Framework.
Table of Contents generated with DocToc
Auf der Webseite gibt es Projektvorlagen und Handouts sowie Beispielprojekte und didaktische Informationen.
Mit einem Account bei Render lässt sich der Server mit nur einem Klick selbst bereitstellen:
Einschränkungen:
- Nach 15 Minuten Inaktivität wird die App in einen Ruhezustand versetzt, sodass der erste Seitenaufruf eine gewisse Zeit dauert.
- Ausgehende Bandbreite beschränkt auf 100 GB pro Monat
- Die kostenlose Datenbank wird nach 90 Tagen gelöscht
- Weitere Einschränkungen https://render.com/docs/free
Um den Server lokal laufen zu lassen, muss die .jar-Datei aus den releases heruntergeladen und über den folgenden Befehl gestartet werden.
$ java -jar pfad/zur/socialbotnet-4.2-jar-with-dependencies.jar
Dieser Befehlt startet einen jetty-Server auf localhost:30003, jedoch ohne persistente Datenbank. Diese müsste extra über die Umgebungsvariablen JDBC_DATABASE_URL
, JDBC_DATABASE_USERNAME
und JDBC_DATABASE_PASSWORD
konfiguriert werden.
Es ist auch möglich, das SocialBotNet komplett auf einem eigenen remote Server mittels Dokku zu hosten. Details zur Einrichtung sind unten im Abschnitt "Server einrichten".
Das Netzwerk bietet eine leicht zu bedienende API um User- und Postdaten abzurufen und Beiträge zu schreiben oder liken.
Mit HTTP-GET können User- und Post-Daten abgerufen werden. Alle Anfragen können mit den GET-Parametern sortby
nach jedem Attribut sortiert werden (default: id
, mit order
kann die Reihenfolge auf-/absteigend (asc
/desc
) sortiert werden und die Anzahl kann mit limit
verändert werden (default ist 50)
Die folgenden HTTP-GET Schnittstellen werden unterstützt:
Parameter: sortby
(optional), order
(optional) limit
(optional)
Beispiel Ergebnis: Anfrage an /api/users
[
{
"id":1,
"username":"root",
"hobbies":"doing stuff",
"about":"I am root"
},
{
"id":2,
"username":"user002",
"hobbies":"",
"about":""
}
]
Parameter: sortby
(optional), order
(optional) limit
(optional)
Beispiel Ergebnis: Anfrage an/api/posts?sortby=likes&limit=1
[
{
"id": 3,
"message": "This is a post written by user user001 to user004",
"user": { "id": 1, "username": "user001", "hobbies": "", "about": "" },
"wall": { "id": 4, "username": "user004", "hobbies": "", "about": "" },
"publishingDate": "2014-07-14 09:46:28",
"likedBy": [
{ "id": 1, "username": "user001", "hobbies": "", "about": "" },
{ "id": 5, "username": "user005", "hobbies": "", "about": "" },
{ "id": 6, "username": "user006", "hobbies": "", "about": "" },
{ "id": 7, "username": "user007", "hobbies": "", "about": "" }
]
}
]
Parameter: sortby
(optional), order
(optional) limit
(optional)
Beispiel Ergebnis: Genau wie bei /api/posts
nur gefiltert nach der korrekten wall
.
Hinweis: Um diese Schnittstelle nutzen zu können, benötigst du Logindaten des Users. Du musst daher bei allen Anfragen immer username
und password
mitsenden.
Die folgenden HTTP-Post Anfragen werden unterstützt:
-
/api/user/update
: Aktualisiere das Nutzerprofil
Parameter:username
,password
,newUsername
(optional),hobbies
(optional),about
(optional) -
/api/post
: Erstelle einen neuen Post an deiner Pinnwand.
Parameter:username
,password
,message
-
/api/post/:username
: Erstelle einen neuen Post an der Pinnwand von:username
Parameter:username
,password
,message
-
/api/like
: Like einen Post
Parameter:username
,password
,postid
-
/api/unlike
: Ent-Like einen Post
Parameter:username
,password
,postid
Um das SocialBotNet komplett selbst zu hosten, benötigst du nur einen Server mit ssh-Zugriff.
- (SERVER) Installiere dokku. Folge dabei der Installationsanleitung.
Hinweis: Vergiss nicht, die web-basierte Installation durchzuführen! - (SERVER) Erstelle die Dokku app:
$ dokku apps:create socialbotnet
- (SERVER) Installiere das Plugin für PostgreSQL:
$ sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git postgre
- (SERVER) Erstelle die Postgres Datenbank und Verbinde dich zur App
$ dokku postgres:create socialbotnet-db
$ dokku postgres:link socialbotnet-db socialbotnet
- (LOCAL) Klone das Repository und füge den Remote für Dokku hinzu:
$ git clone https://github.com/Knorrke/socialbotnet.git
$ cd socialbotnet
$ git remote add dokku dokku@ip.or.domain:socialbotnet
- (LOCAL) Deploye die Anwendung
$ git push dokku