Socialbotnet
A minimal social network with bot friendly API for educational purposes.
Install / Use
/learn @Knorrke/SocialbotnetREADME
SocialBotNet
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.
<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->Table of Contents generated with DocToc
<!-- END doctoc generated TOC please keep comment here to allow auto update -->Material
Auf der Webseite gibt es Projektvorlagen und Handouts sowie Beispielprojekte und didaktische Informationen.
Eigener Server
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
Alternativ: Lokaler Server
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".
API
Das Netzwerk bietet eine leicht zu bedienende API um User- und Postdaten abzurufen und Beiträge zu schreiben oder liken.
Daten abrufen
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:
/api/users - Alle registrierten Nutzer abrufen
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":""
}
]
/api/posts - Alle Posts abrufen
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": "" }
]
}
]
/api/pinnwand/:username - Posts der Pinnwand eines Users
Parameter: sortby (optional), order (optional) limit (optional)
Beispiel Ergebnis: Genau wie bei /api/posts nur gefiltert nach der korrekten wall.
Daten senden
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
Server einrichten
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
