Für mein kleines Projekt benötigte ich ein Client für den Zugriff auf die xRel Api.
Da ich für .NET nichts gefunden habe, möchte ich nun meine Version gerne zur Verfügung stellen.
Weiter war es für mich auch eine gute Übung mich ins Thema OAuth einzuarbeiten.
So nun zum Client. Wie bereits geschrieben ist das ganze für .NET mit der aktuellen Version 4.5 kompiliert.
Die Komponente hat zwei Abhängigkeiten:
- RestSharp (Http-Kommunikation und OAuth)
- JSON.NET (für Deserialisierung).
Verwendung
Hier ein Beispiel zur Abfrage eines Release:
var client = new XrelApiClient.Client();
var release = client.GetReleaseByDirname("Keinohrhasen.German.AC3.DVDRip.XviD-CRUCiAL");
Soweit so einfach. Ich beschreibe jetzt hier nicht jede Methode einzeln.
Es sind alle in der xREL API Doku spezifizierten Methoden implementiert.
Zur Verwendung der geschützten Methoden in Zusammenhang mit dem OAuth Access-Token bzw. der Applikations-Authorisierung möchte ich noch etwas genauer erläutern.
Grundsätzlich muss für den Zugriff auf geschützte Methoden deine Applikation zuerst duch den Benutzer Berechtigt werden. Die API bietet hier zwei Möglichkeiten, eine für Desktop-Anwendungen mit einem PIN und die andere für Web-Anwendungen mit einer Callback-Url.
Der Ablauf ist hier Dokumentiert.
Schritt 1 (Applikation durch Benutzer Berechtigen)
Desktop Variante mit PIN:
var app = new XrelApiClient.Application("[DeinConsumerKey]", "[DeinConsumerSecret]");
var authorizeRequest = client.GetUserAuthorizeApplicationWithPinRequest(app);
Web Varinate mit Callback-Url:
var app = new XrelApiClient.Application("[DeinConsumerKey]", "[DeinConsumerSecret]");
var authorizeRequest = client.GetUserAuthorizeApplicationWithCallbackRequest(app, "http://localhost/callback");
Im Objekt authorizeRequest ist nun in der Eigenschaft "Url" ein Link auf xREL enthalten, welcher durch den Benutzer aufgerufen werden muss. Wie du das anstellst, ist dir überlassen. Der Client generiert nur den Link für dich.
Weiter ist in diesem Objekt in der Eigenschaft "RequestToken" ein OAuth Token, welches in Schritt 2 noch benötigt wird. Du musst dies also irgendwo zwischenspeichern.
Schritt 2 (AccessToken abholen)
Abhängig von der gewählten Variante in Schritt 1 hat der Benutzer nun ein PIN zum eingeben oder wurde wieder auf deine Web-App zurückgeleitet (Callback-Url).
Für den Zugriff auf die geschützten Methoden benötigen wir jetzt ein Access-Token von xREL:
var accessToken = client.GetUserAccessToken(app, requestToken, "[verifier]");
Hier wird nun wieder das Request-Token aus dem ersten Schritt benötigt.
Der "verifier" ist entweder der PIN welcher der Benutzer von xREL erhalten hat oder das QueryString Argument "oauth_verifier" des Callback-Requests.
Danach erhaltet ihr ein Access-Token mit welchem ihr Zugriff auf die geschützten Methoden habt.
Dieses Token könnt ihr nun in eurer Applikation abspeichern, es erlaubt euch nun permanent Zugriff (bzw. bis der Benutzer eurer Applikation die Berechtigung wieder entzieht) auf die geschützten Methoden.
Über folgende Methode erhaltet ihr nun zB. Infos über den Benutzer:
var userInfo = client.GetUserInfo(app, accessToken);
BUG-Fixes
- Workaround für fehlerhaften JSON-Response in API (danke an jim79jones)
Wichtig: Es ist nicht alles 100% durchgetestet und hat bestimmt hier und da noch Fehler drin.
Wenn ihr Verbesserungsvorschläge habt oder Fehler findet, bitte posten.
Bei Bedarf kann ich auch den Source noch hochladen, ev. GitHub oder so.
So hoffe konnte dem einen oder anderen damit Helfen.
Sonicx 1 mal bearbeitet, zuletzt 30. Dez. 2012, 21:51 Uhr
Für mein kleines Projekt benötigte ich ein Client für den Zugriff auf die xRel Api.
Da ich für .NET nichts gefunden habe, möchte ich nun meine Version gerne zur Verfügung stellen.
Weiter war es für mich auch eine gute Übung mich ins Thema OAuth einzuarbeiten.
So nun zum Client. Wie bereits geschrieben ist das ganze für .NET mit der aktuellen Version 4.5 kompiliert.
Die Komponente hat zwei Abhängigkeiten:
- RestSharp (Http-Kommunikation und OAuth)
- JSON.NET (für Deserialisierung).
Verwendung
Hier ein Beispiel zur Abfrage eines Release:
Soweit so einfach. Ich beschreibe jetzt hier nicht jede Methode einzeln.
Es sind alle in der xREL API Doku spezifizierten Methoden implementiert.
Zur Verwendung der geschützten Methoden in Zusammenhang mit dem OAuth Access-Token bzw. der Applikations-Authorisierung möchte ich noch etwas genauer erläutern.
Grundsätzlich muss für den Zugriff auf geschützte Methoden deine Applikation zuerst duch den Benutzer Berechtigt werden. Die API bietet hier zwei Möglichkeiten, eine für Desktop-Anwendungen mit einem PIN und die andere für Web-Anwendungen mit einer Callback-Url.
Der Ablauf ist hier Dokumentiert.
Schritt 1 (Applikation durch Benutzer Berechtigen)
Desktop Variante mit PIN:
var app = new XrelApiClient.Application("[DeinConsumerKey]", "[DeinConsumerSecret]"); var authorizeRequest = client.GetUserAuthorizeApplicationWithPinRequest(app);
Web Varinate mit Callback-Url:
var app = new XrelApiClient.Application("[DeinConsumerKey]", "[DeinConsumerSecret]"); var authorizeRequest = client.GetUserAuthorizeApplicationWithCallbackRequest(app, "http://localhost/callback");
Im Objekt authorizeRequest ist nun in der Eigenschaft "Url" ein Link auf xREL enthalten, welcher durch den Benutzer aufgerufen werden muss. Wie du das anstellst, ist dir überlassen. Der Client generiert nur den Link für dich.
Weiter ist in diesem Objekt in der Eigenschaft "RequestToken" ein OAuth Token, welches in Schritt 2 noch benötigt wird. Du musst dies also irgendwo zwischenspeichern.
Schritt 2 (AccessToken abholen)
Abhängig von der gewählten Variante in Schritt 1 hat der Benutzer nun ein PIN zum eingeben oder wurde wieder auf deine Web-App zurückgeleitet (Callback-Url).
Für den Zugriff auf die geschützten Methoden benötigen wir jetzt ein Access-Token von xREL:
Hier wird nun wieder das Request-Token aus dem ersten Schritt benötigt.
Der "verifier" ist entweder der PIN welcher der Benutzer von xREL erhalten hat oder das QueryString Argument "oauth_verifier" des Callback-Requests.
Danach erhaltet ihr ein Access-Token mit welchem ihr Zugriff auf die geschützten Methoden habt.
Dieses Token könnt ihr nun in eurer Applikation abspeichern, es erlaubt euch nun permanent Zugriff (bzw. bis der Benutzer eurer Applikation die Berechtigung wieder entzieht) auf die geschützten Methoden.
Über folgende Methode erhaltet ihr nun zB. Infos über den Benutzer:
Download
xRelApiClient.v1.1.Release.zip
BUG-Fixes
- Workaround für fehlerhaften JSON-Response in API (danke an jim79jones)
Wichtig: Es ist nicht alles 100% durchgetestet und hat bestimmt hier und da noch Fehler drin.
Wenn ihr Verbesserungsvorschläge habt oder Fehler findet, bitte posten.
Bei Bedarf kann ich auch den Source noch hochladen, ev. GitHub oder so.
So hoffe konnte dem einen oder anderen damit Helfen.
Sonicx
1 mal bearbeitet, zuletzt 30. Dez. 2012, 21:51 Uhr
#