YandexWeatherApi 0.0.2

dotnet add package YandexWeatherApi --version 0.0.2                
NuGet\Install-Package YandexWeatherApi -Version 0.0.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="YandexWeatherApi" Version="0.0.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add YandexWeatherApi --version 0.0.2                
#r "nuget: YandexWeatherApi, 0.0.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install YandexWeatherApi as a Cake Addin
#addin nuget:?package=YandexWeatherApi&version=0.0.2

// Install YandexWeatherApi as a Cake Tool
#tool nuget:?package=YandexWeatherApi&version=0.0.2                

YandexWeatherApi C# wrapper

YandexWeatherApi nuget downloads lisence
YandexWeatherApi.DependencyInjection nuget downloads lisence

Create a request

var request = YandexWeather.CreateBuilder()
    .UseApiKey("your api key")
    .Build()
    .Forecast(); // or Informers()

Adding parameters

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);

Send request

Just call Send

var result = await request.Send(cancellationToken);

Result

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 

YandexWeatherApi.DependencyInjection

    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;
    }

Default behaviour

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()

License

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

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on YandexWeatherApi:

Package Downloads
YandexWeatherApi.DependencyInjection

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.0.2 388 8/18/2023
0.0.1 839 4/15/2022