Skip to content

Commit a11b626

Browse files
Add .NET 6.0, Update Release Notes
1 parent 33f94a5 commit a11b626

6 files changed

Lines changed: 478 additions & 119 deletions

File tree

Lines changed: 46 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,59 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project Sdk="Microsoft.NET.Sdk">
3-
<PropertyGroup>
4-
<TargetFrameworks>netstandard2.0;netstandard2.1;netcoreapp3.0;net5.0</TargetFrameworks>
5-
<SignAssembly>true</SignAssembly>
6-
<AssemblyOriginatorKeyFile>GitHubApiStatus.Extensions.snk</AssemblyOriginatorKeyFile>
7-
<AssemblyName>GitHubApiStatus.Extensions</AssemblyName>
8-
<RootNamespace>GitHubApiStatus.Extensions</RootNamespace>
9-
<PackageId>GitHubApiStatus.Extensions</PackageId>
10-
<PublishRepositoryUrl>true</PublishRepositoryUrl>
11-
<EmbedUntrackedSources>true</EmbedUntrackedSources>
12-
<IncludeSymbols>true</IncludeSymbols>
13-
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
14-
<Summary>
3+
<PropertyGroup>
4+
<TargetFrameworks>netstandard2.0;netstandard2.1;netcoreapp3.0;net5.0;net6.0</TargetFrameworks>
5+
<SignAssembly>true</SignAssembly>
6+
<AssemblyOriginatorKeyFile>GitHubApiStatus.Extensions.snk</AssemblyOriginatorKeyFile>
7+
<AssemblyName>GitHubApiStatus.Extensions</AssemblyName>
8+
<RootNamespace>GitHubApiStatus.Extensions</RootNamespace>
9+
<PackageId>GitHubApiStatus.Extensions</PackageId>
10+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
11+
<EmbedUntrackedSources>true</EmbedUntrackedSources>
12+
<IncludeSymbols>true</IncludeSymbols>
13+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
14+
<Summary>
1515
Extentions for GitHub API Rate Limit Status
1616
- Implements Microsoft.Extensions.DependencyInjection
1717
- Implements Microsoft.Extensions.Http
1818
</Summary>
19-
<PackageTags>github, git, api, rate, rate limit</PackageTags>
20-
<Title>Extensions for GitHub API Rate Limit Status</Title>
21-
<Description>
19+
<PackageTags>github, git, api, rate, rate limit</PackageTags>
20+
<Title>Extensions for GitHub API Rate Limit Status</Title>
21+
<Description>
2222
Extentions for GitHub API Rate Limit Status
2323
- Implements Microsoft.Extensions.DependencyInjection
2424
- Implements Microsoft.Extensions.Http
2525
</Description>
26-
<PackageReleaseNotes>
26+
<PackageReleaseNotes>
2727
New In This Release:
28-
- Add Support for Microsoft.Extensions.DependencyInjection
29-
- Implements Microsoft.Extensions.Http
28+
- Add .NET 6 Support
3029
</PackageReleaseNotes>
31-
<Version>2.0.2</Version>
32-
<RepositoryUrl>https://github.com/brminnick/GitHubApiStatus</RepositoryUrl>
33-
<Product>$(AssemblyName) ($(TargetFramework))</Product>
34-
<AssemblyVersion>1.0.0.0</AssemblyVersion>
35-
<AssemblyFileVersion>1.0.0.0</AssemblyFileVersion>
36-
<PackageVersion>$(Version)$(VersionSuffix)</PackageVersion>
37-
<Authors>Brandon Minnick</Authors>
38-
<Owners>Brandon Minnick</Owners>
39-
<NeutralLanguage>en</NeutralLanguage>
40-
<Copyright>©Copyright 2020 Brandon Minnick. All rights reserved.</Copyright>
41-
<requireLicenseAcceptance>false</requireLicenseAcceptance>
42-
<DefineConstants>$(DefineConstants);</DefineConstants>
43-
<UseFullSemVerForNuGet>false</UseFullSemVerForNuGet>
44-
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
45-
<PackageLicenseExpression>MIT</PackageLicenseExpression>
46-
<PackageProjectUrl>https://github.com/brminnick/GitHubApiStatus</PackageProjectUrl>
47-
<DebugType>portable</DebugType>
48-
<Configurations>Release;Debug</Configurations>
49-
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
50-
</PropertyGroup>
51-
<ItemGroup>
52-
<Compile Include="GitHubApiStatusServiceExtensions.cs" />
53-
</ItemGroup>
54-
<ItemGroup>
55-
<ProjectReference Include="..\GitHubApiStatus\GitHubApiStatus.csproj" />
56-
</ItemGroup>
57-
<ItemGroup>
58-
<PackageReference Include="Microsoft.Extensions.Http" Version="2.1.0" />
59-
</ItemGroup>
30+
<Version>2.0.2</Version>
31+
<RepositoryUrl>https://github.com/brminnick/GitHubApiStatus</RepositoryUrl>
32+
<Product>$(AssemblyName) ($(TargetFramework))</Product>
33+
<AssemblyVersion>1.0.0.0</AssemblyVersion>
34+
<AssemblyFileVersion>1.0.0.0</AssemblyFileVersion>
35+
<PackageVersion>$(Version)$(VersionSuffix)</PackageVersion>
36+
<Authors>Brandon Minnick</Authors>
37+
<Owners>Brandon Minnick</Owners>
38+
<NeutralLanguage>en</NeutralLanguage>
39+
<Copyright>©Copyright 2020 Brandon Minnick. All rights reserved.</Copyright>
40+
<requireLicenseAcceptance>false</requireLicenseAcceptance>
41+
<DefineConstants>$(DefineConstants);</DefineConstants>
42+
<UseFullSemVerForNuGet>false</UseFullSemVerForNuGet>
43+
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
44+
<PackageLicenseExpression>MIT</PackageLicenseExpression>
45+
<PackageProjectUrl>https://github.com/brminnick/GitHubApiStatus</PackageProjectUrl>
46+
<DebugType>portable</DebugType>
47+
<Configurations>Release;Debug</Configurations>
48+
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
49+
</PropertyGroup>
50+
<ItemGroup>
51+
<Compile Include="GitHubApiStatusServiceExtensions.cs" />
52+
</ItemGroup>
53+
<ItemGroup>
54+
<ProjectReference Include="..\GitHubApiStatus\GitHubApiStatus.csproj" />
55+
</ItemGroup>
56+
<ItemGroup>
57+
<PackageReference Include="Microsoft.Extensions.Http" Version="2.1.0" />
58+
</ItemGroup>
6059
</Project>
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
# GitHubApiStatus.Extensions
2+
3+
[![NuGet](https://buildstats.info/nuget/GitHubApiStatus.Extensions?includePreReleases=true)](https://www.nuget.org/packages/GitHubApiStatus.Extensions/)
4+
5+
- Available on NuGet: https://www.nuget.org/packages/GitHubApiStatus.Extensions/
6+
- Add to any project supporting .NET Standard 2.0
7+
- Leverages [Microsoft.Extensions.Http](https://www.nuget.org/packages/Microsoft.Extensions.Http/)
8+
9+
## API
10+
11+
### AddGitHubApiStatusService
12+
13+
```csharp
14+
public static IHttpClientBuilder AddGitHubApiStatusService(this IServiceCollection services, AuthenticationHeaderValue authenticationHeaderValue, ProductHeaderValue productHeaderValue)
15+
```
16+
- Adds GitHubApiStatus.GitHubApiStatusService to `Microsoft.Extensions.DependencyInjection.IServiceCollection`
17+
18+
### AddGitHubApiStatusService&lt;TGitHubApiStatusService&gt;
19+
20+
```csharp
21+
public static IHttpClientBuilder AddGitHubApiStatusService<TGitHubApiStatusService>(this IServiceCollection services, AuthenticationHeaderValue authenticationHeaderValue, ProductHeaderValue productHeaderValue) where TGitHubApiStatusService : IGitHubApiStatusService
22+
```
23+
- Adds a custom implementation of IGitHubApiStatusService to `Microsoft.Extensions.DependencyInjection.IServiceCollection`
24+
25+
## Dependency Injection
26+
27+
- [Jump to Blazor Example](#blazor-example)
28+
- [Jump to ASP.NET Core Example](#aspnet-core-example)
29+
- [Jump to Azure Functions Example](#azure-functions-example)
30+
31+
### Blazor Example
32+
33+
```csharp
34+
public class Program
35+
{
36+
public static Task Main(string[] args)
37+
{
38+
var builder = WebAssemblyHostBuilder.CreateDefault(args);
39+
builder.RootComponents.Add<App>("#app");
40+
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
41+
42+
// AddGitHubApiStatusService
43+
builder.Services.AddGitHubApiStatusService(new AuthenticationHeaderValue("bearer", "[Your GitHub Personal Access Token, e.g. 123456789012345]"), new ProductHeaderValue("MyApp"))
44+
.ConfigurePrimaryHttpMessageHandler(config => new HttpClientHandler { AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate });
45+
46+
return builder.Build().RunAsync();
47+
}
48+
}
49+
```
50+
51+
```csharp
52+
@page "/graphql"
53+
@using GitHubApiStatus
54+
@inject IGitHubApiStatusService GitHubApiStatusService
55+
56+
<h1>GitHub REST Api Status</h1>
57+
58+
<p>@_graphQLApiStatus</p>
59+
60+
<button class="btn btn-primary" @onclick="GetGraphQLApiStatus">Get Status</button>
61+
62+
@code {
63+
string _graphQLApiStatus = string.Empty;
64+
65+
async Task GetGraphQLApiStatus()
66+
{
67+
var apiRateLimitStatuses = await GitHubApiStatusService.GetApiRateLimits(System.Threading.CancellationToken.None).ConfigureAwait(false);
68+
_graphQLApiStatus = apiRateLimitStatuses.GraphQLApi.ToString();
69+
}
70+
}
71+
```
72+
73+
### ASP.NET Core Example
74+
75+
- 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)
76+
77+
```csharp
78+
public class Startup
79+
{
80+
// ...
81+
82+
public void ConfigureServices(IServiceCollection services)
83+
{
84+
services.AddGitHubApiStatusService(new AuthenticationHeaderValue("bearer", "[Your GitHub Personal Access Token, e.g. 123456789012345]"), new ProductHeaderValue("MyApp"))
85+
.ConfigurePrimaryHttpMessageHandler(config => new HttpClientHandler { AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate });
86+
87+
services.AddRazorPages();
88+
}
89+
90+
/// ...
91+
92+
}
93+
```
94+
95+
```csharp
96+
class MyPageModel : PageModel
97+
{
98+
readonly ILogger<IndexModel> _logger;
99+
readonly IGitHubApiStatusService _gitHubApiStatusService;
100+
101+
public MyPageModel(IGitHubApiStatusService gitHubApiStatusService, ILogger<MyPageModel> logger)
102+
{
103+
_logger = logger;
104+
_gitHubApiStatusService = gitHubApiStatusService;
105+
}
106+
107+
// ...
108+
}
109+
```
110+
111+
### Azure Functions Example
112+
113+
- Requires [Microsoft.Azure.Functions.Extensions NuGet Package](https://www.nuget.org/packages/Microsoft.Azure.Functions.Extensions/)
114+
- Learn More about [Azure Functions Dependency Injection](https://docs.microsoft.com/azure/azure-functions/functions-dotnet-dependency-injection?WT.mc_id=mobile-11370-bramin)
115+
116+
```csharp
117+
[assembly: FunctionsStartup(typeof(MyApp.Functions.Startup))]
118+
namespace MyApp.Functions
119+
{
120+
public class Startup : FunctionsStartup
121+
{
122+
public override void Configure(IFunctionsHostBuilder builder)
123+
{
124+
builder.Services.AddGitHubApiStatusService(new AuthenticationHeaderValue("bearer", "[Your GitHub Personal Access Token, e.g. 123456789012345]"), new ProductHeaderValue("MyApp"))
125+
.ConfigurePrimaryHttpMessageHandler(config => new HttpClientHandler { AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate });
126+
}
127+
}
128+
}
129+
```
130+
131+
```csharp
132+
class GitHubApiStatusFunction
133+
{
134+
readonly IGitHubApiStatusService _gitHubApiStatusService;
135+
136+
public MyHttpTriggerFunction(IGitHubApiStatusService gitHubApiStatusService) => _gitHubApiStatusService = gitHubApiStatusService
137+
138+
[FunctionName("GitHubApiStatus")]
139+
public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req, ILogger log)
140+
{
141+
log.LogInformation("C# HTTP trigger function processed a request.");
142+
143+
var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(2));
144+
var apiStatus = await _gitHubApiStatusService.GetApiRateLimits(cancellationTokenSource.Token).ConfigureAwait(false);
145+
146+
return new OkObjectResult(apiStatus);
147+
}
148+
}
149+
```

Src/GitHubApiStatus.sln

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ EndProject
3737
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B44C7665-4B99-46F0-B4B3-813E9E7FE577}"
3838
ProjectSection(SolutionItems) = preProject
3939
Directory.Build.props = Directory.Build.props
40+
global.json = global.json
4041
EndProjectSection
4142
EndProject
4243
Global

0 commit comments

Comments
 (0)