-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c6794c3
commit 63a7390
Showing
62 changed files
with
573 additions
and
572 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
20 changes: 10 additions & 10 deletions
20
src/Flex.Net.REST/Flex.Net.REST.csproj → ...itzArt.Flux.REST/BitzArt.Flux.REST.csproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,32 +1,32 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<TargetFramework>net7.0</TargetFramework> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
<Nullable>enable</Nullable> | ||
<RootNamespace>Flex</RootNamespace> | ||
<RootNamespace>BitzArt.Flux</RootNamespace> | ||
|
||
<PackageId>Flex.Net.Rest</PackageId> | ||
<PackageId>BitzArt.Flux.Rest</PackageId> | ||
<Authors>BitzArt</Authors> | ||
<Description>Flex.Net - REST Api client implementation</Description> | ||
<Description>Flux - REST Api client implementation</Description> | ||
<PackageLicenseExpression>MIT</PackageLicenseExpression> | ||
<RepositoryType>git</RepositoryType> | ||
<RepositoryUrl>https://github.com/BitzArt/Flex.Net</RepositoryUrl> | ||
<PackageProjectUrl>https://github.com/BitzArt/Flex.Net</PackageProjectUrl> | ||
<RepositoryUrl>https://github.com/BitzArt/Flux</RepositoryUrl> | ||
<PackageProjectUrl>https://github.com/BitzArt/Flux</PackageProjectUrl> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="..\Flex.Net\Flex.Net.csproj" /> | ||
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo"> | ||
<_Parameter1>BitzArt.Flux.REST.Tests</_Parameter1> | ||
</AssemblyAttribute> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo"> | ||
<_Parameter1>Flex.Net.REST.Tests</_Parameter1> | ||
</AssemblyAttribute> | ||
<ProjectReference Include="..\BitzArt.Flux\BitzArt.Flux.csproj" /> | ||
</ItemGroup> | ||
|
||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
using Microsoft.Extensions.DependencyInjection; | ||
|
||
namespace BitzArt.Flux; | ||
|
||
public static class AddEntityExtension | ||
{ | ||
public static IFluxRestEntityBuilder<TEntity> AddEntity<TEntity>(this IFluxRestServiceBuilder serviceBuilder, string? endpoint = null) | ||
where TEntity : class | ||
{ | ||
var builder = new FluxRestEntityBuilder<TEntity>(serviceBuilder); | ||
|
||
var services = builder.Services; | ||
var provider = builder.Provider; | ||
|
||
provider.AddSignature(new(typeof(TEntity))); | ||
|
||
services.AddScoped(x => | ||
{ | ||
var factory = x.GetRequiredService<IFluxServiceFactory>(); | ||
return factory.GetEntityContext<TEntity>(x, builder.EntityOptions); | ||
}); | ||
|
||
if (endpoint is not null) return builder.WithEndpoint(endpoint); | ||
|
||
return builder; | ||
} | ||
|
||
public static IFluxRestEntityBuilder<TEntity, TKey> AddEntity<TEntity, TKey>(this IFluxRestServiceBuilder serviceBuilder, string? endpoint = null) | ||
where TEntity : class | ||
{ | ||
var builder = new FluxRestEntityBuilder<TEntity, TKey>(serviceBuilder); | ||
|
||
var services = serviceBuilder.Services; | ||
var provider = serviceBuilder.Provider; | ||
|
||
provider.AddSignature(new(typeof(TEntity), typeof(TKey))); | ||
|
||
services.AddScoped(x => | ||
{ | ||
var factory = x.GetRequiredService<IFluxServiceFactory>(); | ||
return factory.GetEntityContext<TEntity, TKey>(x, builder.EntityOptions); | ||
}); | ||
|
||
services.AddScoped<IFluxEntityContext<TEntity>>(x => | ||
{ | ||
var factory = x.GetRequiredService<IFluxServiceFactory>(); | ||
return factory.GetEntityContext<TEntity, TKey>(x, builder.EntityOptions); | ||
}); | ||
|
||
if (endpoint is not null) return builder.WithEndpoint(endpoint); | ||
|
||
return builder; | ||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
src/BitzArt.Flux.REST/Extensions/IFluxRestServiceBuilderExtensions.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
using System.Text.Json; | ||
|
||
namespace BitzArt.Flux; | ||
|
||
public static class IFluxRestServiceBuilderExtensions | ||
{ | ||
public static IFluxRestServiceBuilder ConfigureJson(this IFluxRestServiceBuilder builder, Action<JsonSerializerOptions> configure) | ||
{ | ||
configure(builder.ServiceOptions.SerializerOptions); | ||
|
||
return builder; | ||
} | ||
|
||
public static IFluxRestServiceBuilder ConfigureHttpClient(this IFluxRestServiceBuilder builder, Action<HttpClient> configure) | ||
{ | ||
builder.HttpClientConfiguration = configure; | ||
|
||
return builder; | ||
} | ||
} |
6 changes: 3 additions & 3 deletions
6
...Net.REST/Extensions/UsingRestExtension.cs → ...lux.REST/Extensions/UsingRestExtension.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
namespace BitzArt.Flux; | ||
|
||
public static class WithEndpointExtension | ||
{ | ||
public static IFluxRestEntityBuilder<TEntity> WithEndpoint<TEntity>(this IFluxRestEntityBuilder<TEntity> builder, string endpoint) | ||
where TEntity : class | ||
{ | ||
builder.EntityOptions.Endpoint = endpoint; | ||
|
||
return builder; | ||
} | ||
|
||
public static IFluxRestEntityBuilder<TEntity, TKey> WithEndpoint<TEntity, TKey>(this IFluxRestEntityBuilder<TEntity, TKey> builder, string endpoint) | ||
where TEntity : class | ||
{ | ||
builder.EntityOptions.Endpoint = endpoint; | ||
|
||
return builder; | ||
} | ||
} |
68 changes: 68 additions & 0 deletions
68
src/BitzArt.Flux.REST/Extensions/WithIdEndpointExtension.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
namespace BitzArt.Flux; | ||
|
||
public static class WithIdEndpointExtension | ||
{ | ||
public static IFluxRestEntityBuilder<TEntity> WithIdEndpoint<TEntity>(this IFluxRestEntityBuilder<TEntity> builder, string endpoint) | ||
where TEntity : class | ||
{ | ||
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => endpoint; | ||
|
||
return builder; | ||
} | ||
|
||
public static IFluxRestEntityBuilder<TEntity, TKey> WithIdEndpoint<TEntity, TKey>(this IFluxRestEntityBuilder<TEntity, TKey> builder, string endpoint) | ||
where TEntity : class | ||
{ | ||
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => endpoint; | ||
|
||
return builder; | ||
} | ||
|
||
public static IFluxRestEntityBuilder<TEntity> WithIdEndpoint<TEntity>(this IFluxRestEntityBuilder<TEntity> builder, Func<string> getEndpoint) | ||
where TEntity : class | ||
{ | ||
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => getEndpoint(); | ||
|
||
return builder; | ||
} | ||
|
||
public static IFluxRestEntityBuilder<TEntity, TKey> WithIdEndpoint<TEntity, TKey>(this IFluxRestEntityBuilder<TEntity, TKey> builder, Func<string> getEndpoint) | ||
where TEntity : class | ||
{ | ||
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => getEndpoint(); | ||
|
||
return builder; | ||
} | ||
|
||
public static IFluxRestEntityBuilder<TEntity> WithIdEndpoint<TEntity>(this IFluxRestEntityBuilder<TEntity> builder, Func<object?, string> getEndpoint) | ||
where TEntity : class | ||
{ | ||
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => getEndpoint(key); | ||
|
||
return builder; | ||
} | ||
|
||
public static IFluxRestEntityBuilder<TEntity, TKey> WithIdEndpoint<TEntity, TKey>(this IFluxRestEntityBuilder<TEntity, TKey> builder, Func<TKey?, string> getEndpoint) | ||
where TEntity : class | ||
{ | ||
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => getEndpoint(key); | ||
|
||
return builder; | ||
} | ||
|
||
public static IFluxRestEntityBuilder<TEntity> WithIdEndpoint<TEntity>(this IFluxRestEntityBuilder<TEntity> builder, Func<object?, object[]?, string> getEndpoint) | ||
where TEntity : class | ||
{ | ||
builder.EntityOptions.GetIdEndpointAction = getEndpoint; | ||
|
||
return builder; | ||
} | ||
|
||
public static IFluxRestEntityBuilder<TEntity, TKey> WithIdEndpoint<TEntity, TKey>(this IFluxRestEntityBuilder<TEntity, TKey> builder, Func<TKey?, object[]?, string> getEndpoint) | ||
where TEntity : class | ||
{ | ||
builder.EntityOptions.GetIdEndpointAction = getEndpoint; | ||
|
||
return builder; | ||
} | ||
} |
13 changes: 13 additions & 0 deletions
13
src/BitzArt.Flux.REST/Interfaces/IFluxRestEntityBuilder.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
namespace BitzArt.Flux; | ||
|
||
public interface IFluxRestEntityBuilder<TEntity> : IFluxEntityBuilder, IFluxRestServiceBuilder | ||
where TEntity : class | ||
{ | ||
public FluxRestEntityOptions<TEntity> EntityOptions { get; } | ||
} | ||
|
||
public interface IFluxRestEntityBuilder<TEntity, TKey> : IFluxRestEntityBuilder<TEntity> | ||
where TEntity : class | ||
{ | ||
public new FluxRestEntityOptions<TEntity, TKey> EntityOptions { get; } | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
namespace BitzArt.Flux; | ||
|
||
public interface IFluxRestServiceBuilder : IFluxServiceBuilder | ||
{ | ||
public FluxRestServiceOptions ServiceOptions { get; } | ||
internal Action<HttpClient>? HttpClientConfiguration { get; set; } | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
using Microsoft.Extensions.DependencyInjection; | ||
|
||
namespace BitzArt.Flux; | ||
|
||
internal class FluxRestEntityBuilder<TEntity> : IFluxRestEntityBuilder<TEntity> | ||
where TEntity : class | ||
{ | ||
public IFluxRestServiceBuilder ServiceBuilder { get; init; } | ||
|
||
public IServiceCollection Services => ServiceBuilder.Services; | ||
public IFluxServiceProvider Provider => ServiceBuilder.Provider; | ||
public IFluxServiceFactory Factory => ServiceBuilder.Factory; | ||
public FluxRestServiceOptions ServiceOptions => ServiceBuilder.ServiceOptions; | ||
|
||
public Action<HttpClient>? HttpClientConfiguration | ||
{ | ||
get => ServiceBuilder.HttpClientConfiguration; | ||
set => ServiceBuilder.HttpClientConfiguration = value; | ||
} | ||
|
||
public FluxRestEntityOptions<TEntity> EntityOptions { get; set; } | ||
|
||
public FluxRestEntityBuilder(IFluxRestServiceBuilder serviceBuilder) | ||
{ | ||
ServiceBuilder = serviceBuilder; | ||
EntityOptions = new(); | ||
} | ||
} | ||
|
||
internal class FluxRestEntityBuilder<TEntity, TKey> : FluxRestEntityBuilder<TEntity>, IFluxRestEntityBuilder<TEntity, TKey> | ||
where TEntity : class | ||
{ | ||
public new FluxRestEntityOptions<TEntity, TKey> EntityOptions { get; set; } | ||
|
||
public FluxRestEntityBuilder(IFluxRestServiceBuilder serviceBuilder) : base(serviceBuilder) | ||
{ | ||
EntityOptions = new(); | ||
} | ||
} |
Oops, something went wrong.