YandexWeatherApi | |
---|---|
YandexWeatherApi.DependencyInjection |
var request = YandexWeather.CreateBuilder()
.UseApiKey("your api key")
.Build()
.Forecast(); // or Informers()
To add parameters you can use extension or set it to fields
request.WeatherLocale = WeatherLocale.be_BY;
request.Extra = true;
request.Hours = true;
Or
request
.WithLocale(WeatherLocale.be_BY)
.Hours()
.Extra(false)
.WithLocality(55, 21);
Just call Send
var result = await request.Send(cancellationToken);
Result contains response or error if something goes wrong
var isSuccess = result.IsSuccess;
var isFail = result.IsFail;
var data = result.Data; //throw if error
var dataOrDefault = result.DataOrDefault; //null if error
var error = result.Error; //throw if success
var errorOrDefault = result.ErrorOrDefault; //null if success
builder.Services.AddYandexWeather(options =>
{
options.ClientFactory = factory
options.Logger = loger
options.Client = client
options.ApiKey = "key";
});
Or you can use service provider to resolve dependencies
builder.Services.AddYandexWeather((provider, options) =>
{
options.ClientFactory = provider.GetRequiredService<IHttpClientFactory>();
options.ApiKey = "key";
});
After registration just resolve IYandexWeatherRequestCreator
private readonly IYandexWeatherRequestCreator _requestCreator;
public WeatherForecastController(IYandexWeatherRequestCreator requestCreator)
{
_requestCreator = requestCreator;
}
[HttpGet(Name = "GetWeatherForecast")]
public async Task<ForecastResponse> Get(CancellationToken ct)
{
var result = await _requestCreator.Forecast()
.Extra()
.WithLocality(55, 21)
.Send(ct);
return result.Data;
}
If HttpClient
and IHttpClientFactory
wasn't send it will try to resolve IHttpClientFactory
from Services, if factory wasn't found it will create new HttpClient()
Authored by: Dmitry Kaznacheev (dmitry-bym)
This project is under MIT license. You can obtain the license copy here.
This work based on Yandex.Weather API: https://yandex.com/dev/weather