Real-Debrid .NET wrapper library written in C#
Supports all API calls and OAuth2 authentication.
Create an instance of RdNetClient
for each user you want to authenticate. If you need to support multiple users you will need to create a new instance every time you switch users.
var client = new RdNetClient();
When no parameters are given in the constructor the default app ID is used for open source application.
The client follows the documentation closely in naming and parameters:
var client = new RdNetClient();
client.UseApiAuthentication("myapikey");
// See https://api.real-debrid.com/
await client.Unrestrict.CheckAsync("https://www.4shared.com/mp3/BilLPtwmea/file_example_MP3_5MG.html");
Call the UseApiAuthentication
function with the API key for the user:
client.UseApiAuthentication("user API key");
Each user has its own API key, which can be found here: https://real-debrid.com/apitoken.
This method does not require a client_id or client_secret and can be used in open source applications.
Call the following function to setup OAuth2:
client.UseOAuthAuthentication();
To authenticate the user call:
var result = await client.Authentication.GetDeviceAuthorizeRequestAsync();
This will give you a URL and code to have the user verify their device.
You can poll the result by doing:
var result = await client.Authentication.VerifyDeviceAuthentication();
If the result is NULL
the user has not authorized the device. When the user has done so a response will be given with the ClientId
and ClientSecret
.
These tokens are now used to trade them in for authentication tokens:
var result = await client.Authentication.GetOAuthAuthorizationTokensAsync("ClientId", "ClientSecret");
The ClientId
, ClientSecret
, AccessToken
and RefreshToken
should be safely stored and are needed for future authentication.
To initialize the client again later with the tokens simply pass them to the UseOAuthAuthentication
method:
client.UseOAuthAuthentication("user client_id", "user client_secret", "user access token", "user refresh token");
This method is the same as above except instead of passing in the user client_id and user client_secret you pass in your own client_id and client_secret.
Workflow for websites or client applications
Start the process by calling the GetOAuthAuthorizationUrl
method to retrieve a URL to pass to the user:
var result = client.Authentication.GetOAuthAuthorizationUrl(new Uri("https://mywebsite"), "34f98j");
Navigate the user to the resulting URL, when the user accepts, the user will be redirected to the given reirect URL with 2 query parameters: code
and state
.
Use the state
parameter to verify if the request is legit.
Use the code
parameter to get the authentication tokens for the user:
var result = await client.Authentication.GetOAuthAuthorizationTokensAsync("Your clientId", "Your clientSecret", "Code");
The result will give you the AccessToken
and RefreshToken
.
To initialize the client with the tokens simply pass them to the UseOAuthAuthentication
method:
client.UseOAuthAuthentication("your client_id", "your client_secret", "user access token", "user refresh token");
When the access token is expired you will retrieve an AccessTokenExpired
exception. Use the refresh token to renew the access token and store the access token:
var newCredentials = await client.Authentication.RefreshTokenAsync();
All tokens are cached in the client when refreshing, but it's your responsibility to retry the request with the new access token.
The unit tests are not designed to be ran all at once, they are used to act as a test client.
Create a file setup.txt
and put your API token in there.
Some functions will need replacement ID's to work properly.