Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/holzmaster/openpr0gramm
Eine quelloffene .NET-Implementierung für das pr0gramm.
https://github.com/holzmaster/openpr0gramm
api hacktoberfest pr0gramm pr0gramm-com
Last synced: 18 days ago
JSON representation
Eine quelloffene .NET-Implementierung für das pr0gramm.
- Host: GitHub
- URL: https://github.com/holzmaster/openpr0gramm
- Owner: holzmaster
- License: lgpl-3.0
- Created: 2015-09-13T16:15:47.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2022-11-08T21:06:53.000Z (about 2 years ago)
- Last Synced: 2024-10-06T02:05:11.293Z (about 1 month ago)
- Topics: api, hacktoberfest, pr0gramm, pr0gramm-com
- Language: C#
- Homepage:
- Size: 145 KB
- Stars: 28
- Watchers: 8
- Forks: 11
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# OpenPr0gramm [![Travis Build Status](https://travis-ci.com/holzmaster/OpenPr0gramm.svg?branch=master)](https://travis-ci.com/holzmaster/OpenPr0gramm) [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/uckh08ose23rap7l?svg=true)](https://ci.appveyor.com/project/holzmaster/openpr0gramm) ![NuGet Version](https://img.shields.io/nuget/v/OpenPr0gramm.svg) [![LGPL-3.0 License](https://img.shields.io/github/license/holzmaster/OpenPr0gramm.svg)](https://github.com/holzmaster/OpenPr0gramm/blob/master/LICENSE)
Eine quelloffene .NET-Implementierung für das pr0gramm.## Installation
Via NuGet:
```
Install-Package OpenPr0gramm
```**Achtung:** Nach dem Installieren wird eine `RefitStubs.cs` zu dem Projekt hinzugefügt. Diese wird immer beim Kompilieren neu generiert. **Du darfst sie nicht löschen**, sonst findet der Generator nicht mehr und wirft einen Compilerfehler. Ich weiß, du brauchst sie eigentlich nicht, aber aufgrund einer bescheuerten Designentscheidung von Refit (siehe [die Issue dazu](https://github.com/paulcbetts/refit/issues/120)) geht das nicht anders. Wenn du gerade eine freie Minute hast, schau doch bei der [Issue](https://github.com/paulcbetts/refit/issues/120) vorbei und weise den Maintainer darauf hin, dass man da was machen sollte.
## Verwendung
Die Library besteht aus 3 Schichten und ist an der JS-API der Webseite orientiert:1. Refit-Interface-HTTP-Wrapper
2. Mapping der Rohdaten auf die Interface-Abstraktionen (`IPr0grammApiClient`)
3. Wrapping von abstrahierten Parametern auf die Rohdaten (`Pr0grammClient`)Für den normalen Umgang sollte der 3. Layer reichen. Wenn du willst, kannst du aber auch die einzelnen Schichten austauschen. Die Library sollte auf allen Plattformen lauffähig sein, auf denen Refit und JSON.NET funktionieren.
Hier etwas Beispielcode:
```C#
var client = new Pr0grammClient();var captchaRes = await client.User.RequestCaptcha();
var captchaImage = captchaRes.GetCaptchaImageBytes();
var loginRes = await client.User.LogIn("user", "password", captchaRes.Token, "aaaaa");
if(!loginRes.Success)
{
if(loginRes.Ban != null && loginRes.Ban.IsBanned)
{
Console.WriteLine($"Du bist bis {loginRes.Ban.Until} gebannt. Warum? \"{loginRes.Ban.Reason}\".");
}
else
{
Console.WriteLine("Das Passwort war wohl falsch oder so.");
}
return;
}var frontItemRes = await client.Item.GetItems(ItemFlags.SFW, ItemStatus.Promoted);
Console.WriteLine("Posts:");
foreach(var item in frontItemRes.Items)
{
Console.WriteLine($"{item.Id} von {item.User} ({item.Mark})");
}CookieContainer container = client.GetCookie(); // Kann weggespeichert/serialisiert werden
// für spätere Verwendung (um sich nicht noch mal einloggen zu müssen)
var client2 = new Pr0grammClient(container); // Client mit Satz an Cookies initialisieren
```
Der Rest sollte selbsterklärend sein. Sämtliche Funktionalität befindet sich bei der `Pr0grammClient`-Klasse.## Nutzungsbestimmungen/Lizenz
Zusätzlich zu den in der LICENSE-File angegebenen Bestimmungen gilt:
- **Keine kommerzielle Nutzung.**
- Hole dir *vorher* die Erlaubnis der Seitenbetreiber, deine Anwendung zu entwickeln.
Wenn du etwas vorhast, was nicht in Einklang mit den Nutzungsbestimmungen ist, kontaktiere mich (via pr0gramm/Email) und wir können drüber reden.## Bugs
Es kann sein, dass bei der Serialisierung bestimmte Felder aufgrund von Typos oder Brainlags bei der Implementierung nicht richtig gemappt werden. Wenn dir sowas auffällt, kontaktiere mich bitte, poste eine Issue, oder fix es selbst und stelle einen Pull-Request.