Skip to content

Commit 0d9d4a6

Browse files
authored
Scaffold API Interface Planning (#2)
1 parent 7abeb56 commit 0d9d4a6

16 files changed

+249
-71
lines changed

Directory.Packages.props

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,18 @@
55
</PropertyGroup>
66

77
<ItemGroup Label="Microsoft NuGet Packages (Source)" Condition="'$(TargetFramework)' == 'net6.0'">
8-
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
8+
<PackageVersion Include="Microsoft.Extensions.Http" Version="6.0.0" />
9+
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="6.0.0" />
910
</ItemGroup>
1011

1112
<ItemGroup Label="Microsoft NuGet Packages (Source)" Condition="'$(TargetFramework)' == 'net7.0'">
12-
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
13+
<PackageVersion Include="Microsoft.Extensions.Http" Version="7.0.0" />
14+
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="7.0.0" />
1315
</ItemGroup>
1416

1517
<ItemGroup Label="Microsoft NuGet Packages (Source)" Condition="'$(TargetFramework)' == 'net8.0'">
16-
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0-rc.1.23419.4" />
18+
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.0-rc.1.23419.4" />
19+
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0-rc.1.23419.4" />
1720
</ItemGroup>
1821

1922
<ItemGroup Label="Microsoft NuGet Packages (Test)">

samples/ClientSample/Program.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// -------------------------------------------------------
55

66
using BlazorFocused.Http.Client;
7+
using Microsoft.Extensions.DependencyInjection;
78

89
namespace ClientSample;
910

@@ -14,8 +15,8 @@ public static void Main(string[] args) =>
1415

1516
public static void Test()
1617
{
17-
var test = new Class1();
18+
IServiceCollection services = new ServiceCollection();
1819

19-
test.SampleMethod();
20+
services.AddWebApiClient("Program");
2021
}
2122
}

src/Client/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ Streamlines HttpClient operations, configuration, request mapping, and dependenc
77

88
## NuGet Packages
99

10-
| Package | Description |
11-
| -------------------------------------------------------------------------------------- | --------------- |
12-
| [BlazorFocused.Http.Client](https://www.nuget.org/packages/BlazorFocused.Http.Client/) | Sample Template |
10+
| Package | Description |
11+
| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
12+
| [BlazorFocused.Http.Client](https://www.nuget.org/packages/BlazorFocused.Http.Client/) | Streamlines HttpClient operations, configuration, request mapping, and dependency injection |
1313

1414
## Documentation
1515

src/Client/src/BlazorFocused.Http.Client.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
<Description>Streamlines HttpClient operations, configuration, request mapping, and dependency injection</Description>
1212
</PropertyGroup>
1313

14+
<ItemGroup>
15+
<PackageReference Include="Microsoft.Extensions.Http" />
16+
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" />
17+
</ItemGroup>
18+
1419
<ItemGroup>
1520
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
1621
<_Parameter1>

src/Client/src/Class1.cs

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// -------------------------------------------------------
2+
// Copyright (c) BlazorFocused All rights reserved.
3+
// Licensed under the MIT License
4+
// -------------------------------------------------------
5+
6+
namespace BlazorFocused.Http.Client.Client;
7+
8+
internal class WebApiClient : IWebApiClient
9+
{
10+
public WebApiClient(HttpClient httpClient)
11+
{
12+
this.Client = httpClient;
13+
}
14+
15+
internal HttpClient Client { get; }
16+
17+
public IWebApiClientMethod Delete(string relativeUrl) => throw new NotImplementedException();
18+
public IWebApiClientMethod Get(string relativeUrl) => throw new NotImplementedException();
19+
public IWebApiClientContent Patch(string relativeUrl) => throw new NotImplementedException();
20+
public IWebApiClientContent Post(string relativeUrl) => throw new NotImplementedException();
21+
public IWebApiClientContent Put(string relativeUrl) => throw new NotImplementedException();
22+
public Task<HttpResponseMessage> SendAsync(HttpRequestMessage httpRequestMessage, CancellationToken cancellationToken = default) => throw new NotImplementedException();
23+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// -------------------------------------------------------
2+
// Copyright (c) BlazorFocused All rights reserved.
3+
// Licensed under the MIT License
4+
// -------------------------------------------------------
5+
6+
namespace BlazorFocused.Http.Client.Client;
7+
8+
internal class WebApiOptions
9+
{
10+
public string BaseAddress { get; set; }
11+
12+
public Dictionary<string, string> DefaultRequestHeaders { get; set; } = new();
13+
14+
public long? MaxResponseContentBufferSize { get; set; }
15+
16+
public double? Timeout { get; set; }
17+
18+
public bool IsConfigured => !string.IsNullOrEmpty(BaseAddress) ||
19+
DefaultRequestHeaders.Count > 0 ||
20+
MaxResponseContentBufferSize > 0 ||
21+
Timeout > 0;
22+
}

src/Client/src/IWebApiClient.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// -------------------------------------------------------
2+
// Copyright (c) BlazorFocused All rights reserved.
3+
// Licensed under the MIT License
4+
// -------------------------------------------------------
5+
6+
namespace BlazorFocused.Http.Client;
7+
8+
internal interface IWebApiClient
9+
{
10+
IWebApiClientMethod Delete(string relativeUrl);
11+
12+
IWebApiClientMethod Get(string relativeUrl);
13+
14+
IWebApiClientContent Patch(string relativeUrl);
15+
16+
IWebApiClientContent Post(string relativeUrl);
17+
18+
IWebApiClientContent Put(string relativeUrl);
19+
20+
Task<HttpResponseMessage> SendAsync(HttpRequestMessage httpRequestMessage, CancellationToken cancellationToken = default);
21+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// -------------------------------------------------------
2+
// Copyright (c) BlazorFocused All rights reserved.
3+
// Licensed under the MIT License
4+
// -------------------------------------------------------
5+
6+
namespace BlazorFocused.Http.Client;
7+
8+
internal interface IWebApiClientActivator
9+
{
10+
IWebApiClient Create(string name);
11+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// -------------------------------------------------------
2+
// Copyright (c) BlazorFocused All rights reserved.
3+
// Licensed under the MIT License
4+
// -------------------------------------------------------
5+
6+
namespace BlazorFocused.Http.Client;
7+
8+
internal interface IWebApiClientContent
9+
{
10+
IWebApiClientMethod WithRequestBody(object content);
11+
12+
IWebApiClientMethod WithHttpContent(HttpContent content);
13+
14+
IWebApiClientMethod WithNoContent();
15+
}

0 commit comments

Comments
 (0)