damios Blogs
  • jpapi 0.6.0 11.06.2017 - 02:20 2
    Folgenden Nutzern gefällt das Design: eitelkalk, krazun

    Mein Java-Wrapper für die Pewn-API hat mal wieder ein Update erhalten, um auch die neusten API-Funktionen (Releases und Recommendations) zu unterstützen. Außerdem wurden einige der getter-Methoden umbenannt, um den Zugriff auf Felder der (bereits erhaltenen) Objekte besser von den statischen API-Zugriffen zu trennen.

    Für alle, die mit der Bibliothek bisher noch nicht vertraut sind, hier noch ein kleines Beispiel für die Verwendung:

    Project project = Project.getByProjectId(8568);
    
    User author = project.getAuthor();
    System.out.println(author.getName());
    
    Hashtag[] hashtags = project.getHashtags();
    for (Hashtag h : hashtags) {
    	System.out.println(h.getName());
    }
    
    System.out.println(Project.getRandom().getImages()[0].getFileName());

    Im Wiki auf Github gibt es weitere Beispiele, die den Zugriff auf die anderen API-Endpunkte deutlich machen.

     

    Download und Source Code sind wie immer auf Github verfügbar: github.com/crykn/jpapi/releases/tag/0.6.0

    #jpapi #changelog #pewnapi


    Kommentare: 1
  • jpapi 0.5.0 15.01.2017 - 19:35 4
    Folgenden Nutzern gefällt das Design: Vankenthor, eitelkalk, krazun, Husi012

    Lange ist es her seit ich das letzte Mal über meinen Java-Wrapper für die Pewn-API geschrieben habe. Mittlerweile hat sich aber eine ganze Menge getan:

    • Die Technik hinter jpapi wurde komplett überarbeitet. Es wird nun Retrofit verwendet, um auf die API-Endpunkte zuzugreifen. Dadurch haben sich allerdings die Package-Namen geändert!
    • Selbstverständlich wird mittlerweile die Authentifizierung der Pewn-API unterstützt. Ein Beispiel für die Benutzung gibt es hier in einem Eintrag im jpapi-Wiki.
    • Die Verbindung zur API erfolgt über SSL
    • Die Abhängigkeiten wurden auf den neusten Stand gebracht
    • Eine ganze Menge von neuen API-Methoden werden unterstützt. Dazu zählen unter anderem:
      • Aktivitäten
      • Startseiten-Inhalte
      • Blog-Posts
      • News
      • Designs
      • Teams
      • Nutzer-Daten

    Download und Source Code sind auf Github verfügbar: github.com/crykn/jpapi/releases/tag/0.5.0

    #jpapi #changelog #pewnapi


    Kommentare: 0
  • Pewn API Autorisierung 05.08.2016 - 12:47 4
    Folgenden Nutzern gefällt das Design: krazun, Michael, Ikarus, alistez

    Mit dem letzten Update ist die Pewn API um eine OAuth-Integration erweitert worden. Das bedeutet, dass es externen Anwendungen nun auch möglich ist, schreibend über die API auf Pewn zuzugreifen.

    Im Folgenden werde ich näher erläutern, wie die Autorisierung abläuft und im Anschluss von externen Anwendungen genutzt werden kann.

     

    Anwendung einrichten

    Um eine Anwendung (einen Clienten) zu registrieren, muss die Beta-Funktion im Profil aktiviert sein. In der API Dokumentation (im Footer) findet sich dann unter „Meine Anwendungen“ die Option, eine neue Applikation zu erstellen.

    Hier können vier Dinge festgelegt werden:

    • Name: Der Name der Anwendung, z.B. „Login - Spiel XY“; kann nachträglich nicht geändert werden
    • Beschreibung: Eine kurze Beschreibung der Anwendung, damit der Nutzer über den Zweck der Anwendung Bescheid weiß
    • Redirect-URI: Die Adresse, auf die der Nutzer nach der Autorisierung der Anwendung mit dem Auth-Code als Query-Parameter umgeleitet wird. Wenn das Feld freigelassen wird, wird dem Nutzer der Auth-Code direkt angezeigt, sodass er ihn kopieren kann. Weiteres dazu folgt bei den Ausführungen zum Ablauf.
    • Die Zugriffsberechtigungen:  Eine Liste aller Berechtigungen findet sich hier. Die ausgewählten Berechtigungen können zur Zeit nicht nachträglich geändert werden. Sollte das allerdings von gesteigertem Interesse sein, werde ich das sobald wie möglich in Angriff nehmen.

     

    Der Ablauf der Autorisierung (OAuth2)

    1. Die externe Anwendung möchte Zugriff auf die Daten eines Nutzers erhalten, bzw. den Nutzer authentifizieren.

    2. Dazu leitet die Anwendung den Nutzer auf Pewn um. Zielpunkt auf Pewn ist der Auth-Endpunkt:

    /auth/?response_type=code&client_id=12345

    Als Query-Parameter müssen angehängt sein:

                client_id -> Die ID der Anwendung (Unter „Meine Anwendungen“ zu finden)

                response_type -> Zur Zeit wird nur 'code' unterstützt

    3. Dem Nutzer werden nach dem Anmelden alle Berechtigungen gezeigt, die die Anwendung fordert. Mit einem Klick auf „Zugriff erlauben“ autorisiert er die Anwendung.

    4. Daraufhin wird er zurück zur Anwendung geleitet und zwar auf die zuvor hinterlegte Redirect-URI. Als Query-Parameter ist der Auth-Code angehängt. Wenn keine Redirect-URI hinterlegt ist, wird der Code so angezeigt, dass der Nutzer ihn kopieren kann.

    5. Der Auth-Code kann von der Anwendung dann innerhalb von 10 Minuten am Token-Endpunkt (/api/v1/oauth/token) gegen einen Access-Token und einen Refresh Token ausgetauscht werden. Dazu muss der Client eine POST-Anfrage an den Endpunkt senden und folgenden Parameter im Request-Body haben:

                client_id -> Die ID der Anwendung

                client_secret -> Der anwendungsspezifische API-Key (auch unter „Meine Anwendungen“ zu finden)

                grant_type -> 'authorization_code'

                code -> Der zuvor erhaltene Auth-Code

                redirect_uri -> Muss zwar angehängt werden, der Wert ist aber irrelevant. Muss in Zukunft identisch mit der hinterlegten URI sein.

     

    Als Antwort liefert die API folgendes:

    {
    
              "access_token": "37dcde80-4523-42c1-be10-4f76af272d9a",
    
              "refresh_token": "60ce2505-c436-4316-ba03-2a93cdfd15df",
    
              "token_type": "Bearer",
    
              "expires_in": 3600,
    
              "username": "test"
    
    }

     

    Der Access-Token ist für 60 Minuten gültig und kann verwendet werden, um auf geschützte Ressourcen zuzugreifen. Mehr dazu im AbschnittZugriff auf geschützte Ressourcen“.

    Der Refresh-Token sollte von der Anwendung sicher verwahrt werden, denn er ist unbegrenzt gültig und kann jederzeit zum Anfordern eines neuen Access-Tokens verwendet werden. Dazu muss nur eine POST-Anfrage an den Token-Endpunkt gesendet werden, die folgende Parameter im Request-Body enthält:

                client_id -> Die ID der Anwendung

                client_secret -> Der anwendungsspezifische API-Key

                grant_type -> 'refresh_token'

                refresh_token -> Der Refresh-Token

    Dadurch wird der alte Access-Token (wenn er noch nicht abgelaufen ist) ungültig, da es pro Client und User nur jeweils einen gültigen Access-Token gibt.

     

    Zugriff auf geschützte Ressourcen

    Zur Zeit gibt es erst eine API-Methode, die eine vorige Nutzer-Autorisierung erfordert, in (näherer) Zukunft wird da allerdings noch einiges folgen.

    /api/v1/self/details

    Über diesen Endpunkt kann ein Spiel oder jede andere externe Anwendung auf die E-Mail-Adresse eines Nutzers zugreifen. Dafür erforderlich ist nur, dass die Anwendung im Request-Header einen gültigen Access-Token liefert.

     

    Für Fragen stehe ich jederzeit, auch per PN bereit.

     

     

    Wichtiger Hinweis

    Solange das SSL-Zertifikat noch nicht eingebunden ist, sollten die API-Authentifizierung ausschließlich zum Testen verwendet werden! Nach dem Einbinden werden aus Sicherheitsgründen alle bereits erstellten Anwendungen wieder gelöscht.

     

    Weiterführende Links


    Kommentare: 0
  • jpapi 0.4.0 22.03.2016 - 12:10 0

    Für das Update der Pewn-API habe ich nun meinen Wrapper geupdated:

    Changelog:

    • Unterstützung für die neuen API-Methoden hinzugefügt:
      • Bewertungen
      • Hashtags
    • Weitere Änderungen im Zuge des API Updates:
      • Neues Datumsformat
      • Registrierungsdatum hinzugefügt

    Da das letzte Mal als ich über meinem Wrapper geschrieben habe, schon eine ganze Weile her ist, hier noch die anderen Änderungen die ich währenddessen vorgenommen habe:

    • Es müssen jetzt getter-Methoden verwendet werden, um auf die Werte eines Objektes zuzugreifen
    • Die Dokumentation wurde an einigen Stellen überarbeitet
    • Der Zeichensatz der Strings wurde angepasst, sodass Sonderzeichen jetzt richtig dargestellt werden
    • Die neuste Version von gson wird verwendet

     

    Download und Source Code: github.com

    Hinweis: Die zur Zeit auftretenden MalformedURLExceptions werden nicht durch jpapi, sondern durch fehlerhafte Downloadlinks auf Pewn verursacht.

     

    #jpapi #changelog #pewnapi


    Kommentare: 1
  • Spiele Updater 21.03.2016 - 10:53 0

    Vor einiger Zeit habe ich in meinem Blogeintrag zu jpapi schon einmal erwähnt, dass eigentlich ein Projekt der Grund dafür war, den Java Wrapper für die Pewn-API zu schreiben. Heute möchte ich euch dieses Projekt vorstellen: einen Updater für Spiele auf Pewn.

    Primäre Aufgabe des Updaters ist selbstverständlich, ein Spiel auf dem neusten Stand zu halten und Updates selbstständig herunterzuladen. Das läuft dabei auf folgende Weise ab:

    1. Auf Updates prüfen (Version des Spiels wird verglichen)

    2. Datei herunterladen (Betriebssystem wird von selbst ausgewählt, Link-Weiterleitungen werden berücksichtigt)

    3. Dateityp erkennen und falls nötig die Datei entpacken

    4. Alte Gamefiles löschen

    5. Appmanifest-Datei anlegen (Ausführbare Datei suchen, Verzeichnis für Speicherstände festlegen, etc.)

    Der Download- und Kopiervorgang sind dabei jederzeit pausierbar und werden beim nächsten Start automatische fortgesetzt, beim Entpacken klappt das derzeit noch nicht.

    Voraussetzungen für Spiele:

    Grundsätzlich wird jedes Spiel unterstützt, dessen Download-Host Http-Header unterstützt (um den Download pausieren zu können) und das entweder eine EXE-Datei, eine JAR-Datei oder ein ZIP-Archiv ist. RAR-Archive werden nicht unterstützt, da sie sich leider nicht so ohne weiteres entpacken lassen.

    Jedes Spiel kann optional eine Appmanifest-Datei mitliefern, die den Namen der auszuführenden Datei und das Verzeichnis für Speicherstände angibt. Das Speicherstände-Verzeichnis ist insofern wichtig, als dass es beim Updaten des Spiels nicht - wie alle anderen Dateien des Spiels - gelöscht wird.

    appmanifest.cfg:

    executableName = Shooter Reloaded-0.6.1.jar
    
    savesDir = saves/

    Weitere Features:

    - Der Updater zeigt außerdem die auf Pewn hinterlegte Spielebeschreibung an und aktualisiert diese bei Änderungen automatisch (Änderungen werden anhand des Zuletzt-Geändert-Datums festgemacht). Hashtags in der Beschreibung werden automatisch zu Links geparst, die auf Pewn verweisen. Die Spielebeschreibung wird mitsamt Bildern lokal gespeichert, um auch ohne Internet zur Verfügung zu stehen.

    - Im Updater lassen sich Start-Argumente festlegen, die beim Ausführen des Spiels mit übergeben werden.

    - Das Auswählen anderer Spiele ist im Interface noch nicht möglich, da einige Spiele auf Pewn kaputte Links hinterlegt habe, die jpapi leider nicht verarbeiten kann. Zum Testen habe ich deshalb manuell sieben willkürliche Spiele zum Auswählen hinzugefügt. Das Interface lädt immer recht lang, wer also nicht sofort die Spiele zum Auswählen sieht, sollte einen Moment warten. Um manuell ein Spiel festzulegen, einfach in config/main.cfg "gameid" auf die Id des Spiels setzen und in der Appmanifest-Datei (game/appmanifest.cfg) "version" auf "0" setzen.

    - Es lässt sich auch manuell ein Verzeichnis für Speicherstände festlegen.

    - In den Einstellungen lässt sich ein Experimentelles Design festlegen, dass den Hintergrund des Updaters mit einem Bild des Spiels ersetzt:

     

    Wer den Updater einmal ausprobieren möchte, kann ihn hier herunterladen. Vorraussetzung ist Java 8. Ich freue mich über jedes Feedback 

    Mein Projekt dient zwar vor allem als Versuch, die Möglichkeiten der Pewn-API auszureizen, aber ich würde damit auch gerne einen Denkanstoß für die Diskussion um einen späteren Pewn-Client liefern.

    #pewnapi #jpapi #updater


    Kommentare: 6
  • jpapi 28.07.2015 - 14:20 0

    Heute möchte ich etwas zu meinem neusten Projekt, einem Java-Wrapper für die Pewn-API schreiben. Den Wrapper habe ich im Zuge eines anderen Projekts (das vielleicht auch irgendwann einmal auf Pewn landet) entwickelt.

    jpapi ist open source und der Quellcode kann auf github eingesehen werden: github.com

     

    Funktionsweise

    jpapi sendet die Anfragen an die offizielle Pewn API und erhält die Antwort im JSON Format. Die Antwort wird dann mit gson zu den entsprechenden Java Objekten geparst.

     

    Beispiel Code

    Project project = Project.getRandom();
    User author = project.author;
    System.out.println(author.username);
    
    project = Project.getAll(OrderedBy.RATING)[0];
    ​System.out.println(project.images[0].fileName);
    

    Ausprobieren

    Um die Bibliothek auszuprobieren, müsst ihr einfach die jar-Dateien von jpapi und von gson zum Classpath eures Java-Projekts hinzufügen.

    Die Dokumentation von japi kann hier eingesehen werden.

     

    Ich bin mir momentan unsicher, ob ich jpapi auch noch als Projekt auf Pewn stelle, da ich nicht weiß, ob die Projekte ausschließlich Spielen vorbehalten sein sollen, oder auch für Pewn-bezogene Projekte zur Verfügung stehen.

    Ich würde mich freuen, wenn jemand die Bibliothek einmal ausprobieren könnte und seine Meinung dazu hier oder auf github schreiben könnte. Sollte jemand an dem Projekt mitarbeiten wollen, freue ich mich auch gerne über Pull-Requests 

     

    #jpapi #pewnapi


    Kommentare: 10
  • Changelog Shooter Reloaded v0.6 20.12.2014 - 16:59 0

    Changelog Shooter Reloaded v0.6.0

    Dieses Update beinhaltet als Hauptfeature Kollisionen von Spieler und Kugeln mit der Umgebung. Außerdem gibt es viele kleine Verbesserungen, die auf den Vorschlägen von eitelkalk basieren:

    -Verschiedene Schwierigkeitsgrade, die Gesundheit von Spieler und Gegner beeinflussen

    -Die gewählten Ausrüstungsgegenstände werden gespeichert

    -Peripheral Dots, um Gegner außerhalb des Bildschirms sichtbar zu machen

    -Nach dem Hinlegen von Medpacks (mit 3), wechselt man automatisch zu seiner Waffe zurück

    -Gegner verlieren beim Tod kleine Medpacks

    -Der dunkelgrüne Hintergrund ist etwas heller, so sollten die Kugeln besser sichtbar sein

     

    #ShooterReloaded #Changelog

     


    Kommentare: 2
  • Changelog Shooter Reloaded v0.5 20.11.2014 - 18:36 0

    Changelog Shooter Reloaded v0.5.0

    Das Update beinhaltet vor allem viele Überarbeitungen im Code, die den Weg für zukünftige Änderungen ebnen. Das Hauptfeature ist die Einführung von verschiedenen Spielmodi und damit verbunden natürlich das größere Spielfeld und der neue Worldgen-Algorithmus. Außerdem wurden die verwendeten Libraries auf die neuesten Versionen geupdatet. Weitere Features sind:

     

    -Neue Skills und Waffen-Upgrades

    -Verbesserte Gegner-KI (Spieler auf Abstand halten, etc.)

    -Jede Waffe verliert auf Entfernung an Schaden

    -Nur noch Sturmgewehr ist per Dauerklick nutzbar

    -Verbessertes HUD

    -Anpassung einiger Werte (Waffenstats, Regenerationsrate)

     

    #Changelog #ShooterReloaded

     


    Kommentare: 4
  • Changelog Shooter Reloaded v0.4.* 03.09.2014 - 11:17 0

    Changelog Shooter Reloaded v0.4.2

    Dieses Update ändert einiges am Gameplay und führt einige neue Aspekte des Spiel ein. Unter anderem kann man jetzt nur noch zwei Waffen ausrüsten und kann auch ein Medpack oder einen Ammobag mitnehmen. Außerdem kann man sich mit Kills Fähigkeiten kaufen. Munition dropt nun hin und wieder nach dem Töten eines Gegners.

    -Ausrüstungssystem

    -Fähigkeitensystem

    -Gegner spawnen nicht mehr neben Spieler

    -Waffen angepasst (Geschwindigkeit, Schaden)

    -Statistiken hinzugefügt

    -Munitions- und Waffendrops von Gegnern

    -Waffen fallen lassen und aufheben

    -Verschiedene Bildschirmauflösungen (auf Wunsch von Teazer)

    -Schatten (auf Wunsch von Retrific, allerdings etwas anders als vorgeschlagen)

    -Bildschirmwackeln bei erlittenem Schaden

     

    #Changelog #ShooterReloaded


    Kommentare: 3
  • Changelog Shooter Reloaded v0.3.* 24.08.2014 - 22:20 0

    Changelog für Shooter Reloaded v0.3.0

    -Komplett überarbeitete Grafik

    -Angepasste Waffen (Schaden, Geschwindigkeit)

    -Einfache Gegner KI

     

    #ShooterReloaded #Changelog

     

     


    Kommentare: 2