Skip to content

Commit

Permalink
Add .NET 6.0, Update Release Notes
Browse files Browse the repository at this point in the history
  • Loading branch information
brminnick committed Jul 23, 2021
1 parent 33f94a5 commit a11b626
Show file tree
Hide file tree
Showing 6 changed files with 478 additions and 119 deletions.
93 changes: 46 additions & 47 deletions Src/GitHubApiStatus.Extensions/GitHubApiStatus.Extensions.csproj
Original file line number Diff line number Diff line change
@@ -1,60 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;netcoreapp3.0;net5.0</TargetFrameworks>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>GitHubApiStatus.Extensions.snk</AssemblyOriginatorKeyFile>
<AssemblyName>GitHubApiStatus.Extensions</AssemblyName>
<RootNamespace>GitHubApiStatus.Extensions</RootNamespace>
<PackageId>GitHubApiStatus.Extensions</PackageId>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<Summary>
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;netcoreapp3.0;net5.0;net6.0</TargetFrameworks>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>GitHubApiStatus.Extensions.snk</AssemblyOriginatorKeyFile>
<AssemblyName>GitHubApiStatus.Extensions</AssemblyName>
<RootNamespace>GitHubApiStatus.Extensions</RootNamespace>
<PackageId>GitHubApiStatus.Extensions</PackageId>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<Summary>
Extentions for GitHub API Rate Limit Status
- Implements Microsoft.Extensions.DependencyInjection
- Implements Microsoft.Extensions.Http
</Summary>
<PackageTags>github, git, api, rate, rate limit</PackageTags>
<Title>Extensions for GitHub API Rate Limit Status</Title>
<Description>
<PackageTags>github, git, api, rate, rate limit</PackageTags>
<Title>Extensions for GitHub API Rate Limit Status</Title>
<Description>
Extentions for GitHub API Rate Limit Status
- Implements Microsoft.Extensions.DependencyInjection
- Implements Microsoft.Extensions.Http
</Description>
<PackageReleaseNotes>
<PackageReleaseNotes>
New In This Release:
- Add Support for Microsoft.Extensions.DependencyInjection
- Implements Microsoft.Extensions.Http
- Add .NET 6 Support
</PackageReleaseNotes>
<Version>2.0.2</Version>
<RepositoryUrl>https://github.com/brminnick/GitHubApiStatus</RepositoryUrl>
<Product>$(AssemblyName) ($(TargetFramework))</Product>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<AssemblyFileVersion>1.0.0.0</AssemblyFileVersion>
<PackageVersion>$(Version)$(VersionSuffix)</PackageVersion>
<Authors>Brandon Minnick</Authors>
<Owners>Brandon Minnick</Owners>
<NeutralLanguage>en</NeutralLanguage>
<Copyright>©Copyright 2020 Brandon Minnick. All rights reserved.</Copyright>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<DefineConstants>$(DefineConstants);</DefineConstants>
<UseFullSemVerForNuGet>false</UseFullSemVerForNuGet>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageProjectUrl>https://github.com/brminnick/GitHubApiStatus</PackageProjectUrl>
<DebugType>portable</DebugType>
<Configurations>Release;Debug</Configurations>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
<ItemGroup>
<Compile Include="GitHubApiStatusServiceExtensions.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\GitHubApiStatus\GitHubApiStatus.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Http" Version="2.1.0" />
</ItemGroup>
<Version>2.0.2</Version>
<RepositoryUrl>https://github.com/brminnick/GitHubApiStatus</RepositoryUrl>
<Product>$(AssemblyName) ($(TargetFramework))</Product>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<AssemblyFileVersion>1.0.0.0</AssemblyFileVersion>
<PackageVersion>$(Version)$(VersionSuffix)</PackageVersion>
<Authors>Brandon Minnick</Authors>
<Owners>Brandon Minnick</Owners>
<NeutralLanguage>en</NeutralLanguage>
<Copyright>©Copyright 2020 Brandon Minnick. All rights reserved.</Copyright>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<DefineConstants>$(DefineConstants);</DefineConstants>
<UseFullSemVerForNuGet>false</UseFullSemVerForNuGet>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageProjectUrl>https://github.com/brminnick/GitHubApiStatus</PackageProjectUrl>
<DebugType>portable</DebugType>
<Configurations>Release;Debug</Configurations>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
<ItemGroup>
<Compile Include="GitHubApiStatusServiceExtensions.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\GitHubApiStatus\GitHubApiStatus.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Http" Version="2.1.0" />
</ItemGroup>
</Project>
149 changes: 149 additions & 0 deletions Src/GitHubApiStatus.Extensions/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
# GitHubApiStatus.Extensions

[![NuGet](https://buildstats.info/nuget/GitHubApiStatus.Extensions?includePreReleases=true)](https://www.nuget.org/packages/GitHubApiStatus.Extensions/)

- Available on NuGet: https://www.nuget.org/packages/GitHubApiStatus.Extensions/
- Add to any project supporting .NET Standard 2.0
- Leverages [Microsoft.Extensions.Http](https://www.nuget.org/packages/Microsoft.Extensions.Http/)

## API

### AddGitHubApiStatusService

```csharp
public static IHttpClientBuilder AddGitHubApiStatusService(this IServiceCollection services, AuthenticationHeaderValue authenticationHeaderValue, ProductHeaderValue productHeaderValue)
```
- Adds GitHubApiStatus.GitHubApiStatusService to `Microsoft.Extensions.DependencyInjection.IServiceCollection`

### AddGitHubApiStatusService&lt;TGitHubApiStatusService&gt;

```csharp
public static IHttpClientBuilder AddGitHubApiStatusService<TGitHubApiStatusService>(this IServiceCollection services, AuthenticationHeaderValue authenticationHeaderValue, ProductHeaderValue productHeaderValue) where TGitHubApiStatusService : IGitHubApiStatusService
```
- Adds a custom implementation of IGitHubApiStatusService to `Microsoft.Extensions.DependencyInjection.IServiceCollection`

## Dependency Injection

- [Jump to Blazor Example](#blazor-example)
- [Jump to ASP.NET Core Example](#aspnet-core-example)
- [Jump to Azure Functions Example](#azure-functions-example)

### Blazor Example

```csharp
public class Program
{
public static Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

// AddGitHubApiStatusService
builder.Services.AddGitHubApiStatusService(new AuthenticationHeaderValue("bearer", "[Your GitHub Personal Access Token, e.g. 123456789012345]"), new ProductHeaderValue("MyApp"))
.ConfigurePrimaryHttpMessageHandler(config => new HttpClientHandler { AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate });

return builder.Build().RunAsync();
}
}
```

```csharp
@page "/graphql"
@using GitHubApiStatus
@inject IGitHubApiStatusService GitHubApiStatusService

<h1>GitHub REST Api Status</h1>

<p>@_graphQLApiStatus</p>

<button class="btn btn-primary" @onclick="GetGraphQLApiStatus">Get Status</button>

@code {
string _graphQLApiStatus = string.Empty;

async Task GetGraphQLApiStatus()
{
var apiRateLimitStatuses = await GitHubApiStatusService.GetApiRateLimits(System.Threading.CancellationToken.None).ConfigureAwait(false);
_graphQLApiStatus = apiRateLimitStatuses.GraphQLApi.ToString();
}
}
```

### ASP.NET Core Example

- Learn more about [Dependency Injection in ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0&WT.mc_id=mobile-11370-bramin)

```csharp
public class Startup
{
// ...
public void ConfigureServices(IServiceCollection services)
{
services.AddGitHubApiStatusService(new AuthenticationHeaderValue("bearer", "[Your GitHub Personal Access Token, e.g. 123456789012345]"), new ProductHeaderValue("MyApp"))
.ConfigurePrimaryHttpMessageHandler(config => new HttpClientHandler { AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate });

services.AddRazorPages();
}

/// ...
}
```

```csharp
class MyPageModel : PageModel
{
readonly ILogger<IndexModel> _logger;
readonly IGitHubApiStatusService _gitHubApiStatusService;

public MyPageModel(IGitHubApiStatusService gitHubApiStatusService, ILogger<MyPageModel> logger)
{
_logger = logger;
_gitHubApiStatusService = gitHubApiStatusService;
}

// ...
}
```

### Azure Functions Example

- Requires [Microsoft.Azure.Functions.Extensions NuGet Package](https://www.nuget.org/packages/Microsoft.Azure.Functions.Extensions/)
- Learn More about [Azure Functions Dependency Injection](https://docs.microsoft.com/azure/azure-functions/functions-dotnet-dependency-injection?WT.mc_id=mobile-11370-bramin)

```csharp
[assembly: FunctionsStartup(typeof(MyApp.Functions.Startup))]
namespace MyApp.Functions
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddGitHubApiStatusService(new AuthenticationHeaderValue("bearer", "[Your GitHub Personal Access Token, e.g. 123456789012345]"), new ProductHeaderValue("MyApp"))
.ConfigurePrimaryHttpMessageHandler(config => new HttpClientHandler { AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate });
}
}
}
```

```csharp
class GitHubApiStatusFunction
{
readonly IGitHubApiStatusService _gitHubApiStatusService;

public MyHttpTriggerFunction(IGitHubApiStatusService gitHubApiStatusService) => _gitHubApiStatusService = gitHubApiStatusService

[FunctionName("GitHubApiStatus")]
public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");

var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(2));
var apiStatus = await _gitHubApiStatusService.GetApiRateLimits(cancellationTokenSource.Token).ConfigureAwait(false);

return new OkObjectResult(apiStatus);
}
}
```
1 change: 1 addition & 0 deletions Src/GitHubApiStatus.sln
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B44C7665-4B99-46F0-B4B3-813E9E7FE577}"
ProjectSection(SolutionItems) = preProject
Directory.Build.props = Directory.Build.props
global.json = global.json
EndProjectSection
EndProject
Global
Expand Down
Loading

0 comments on commit a11b626

Please sign in to comment.