This SDK was developed based on Unofficial Medium API.
Install the package from NuGet.org Medium.Client.
You need to have a Rapid API account and subscribe to the Medium API. Follow the steps from the official documentation here.
After installing the NuGet package in your project you just need to use the following extension method to add the medium client interfaces to your service collection.
services.AddMediumClient();
Once you have the API Key from Rapid API, you just need to add it in the following variable in your settings file or as an environment variable.
{
"Medium": {
"ApiKey": "your-key"
}
}
All the existing endpoints are supported by this SDK. There are some additional features to simplify the API calls. For example, the API provides an endpoint to get the user info based on the user identifier. This SDK has an additional method to get this info but is based on a username. This avoids having 2 method calls. However, in reality, the SDK will make that 2 API calls.
// 2 method calls
var userId = await _mediumClient.Users.GetIdByUsernameAsync("username");
var userInfo = await _mediumClient.Users.GetInfoByIdAsync(userId);
// 1 method call
var userInfo2 = await _mediumClient.Users.GetInfoByUsernameAsync("username");
In your class, you have 2 options to use the Medium client functionalities.
- Option 1 (using the main IMediumClient interface)
public class MyService
{
private readonly IMediumClient _mediumClient;
public Worker(IMediumClient mediumClient)
{
_mediumClient = mediumClient;
}
public async Task ExecuteAsync()
{
var user = await _mediumClient.Users.GetListsByUserIdAsync("user-id");
var article = await _mediumClient.Articles.GetResponsesAsync("article-id");
}
}
- Option 2 (using the specific interface)
public class MyService
{
private readonly IUserClient _userClient;
public Worker(IUserClient userClient)
{
_userClient = userClient;
}
public async Task ExecuteAsync()
{
var user = await _userClient.GetListsByUserIdAsync("user-id");
}
}
services.AddMediumClient(defaultRetryPolicy: true);
Retry Policy definition: Handle transient HTTP errors and NotFound status code. There will be 5 retries with a decorrelated Jitter backoff.
services.AddMediumClient()
.WithRetryPolicy(m =>
{
// your retry logic here
});
- Add in memory mock client implementation to simplify the development. With this, we can try the SDK without having Rapid API access.