Skip to content

Commit

Permalink
Rename everything to BitzArt.Flux
Browse files Browse the repository at this point in the history
  • Loading branch information
YuriyDurov committed Sep 15, 2023
1 parent c6794c3 commit 63a7390
Show file tree
Hide file tree
Showing 62 changed files with 573 additions and 572 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
repository_dispatch:
push:
tags:
- "Flex.Net-v[0-9]+.[0-9]+.[0-9]+*"
- "Flux-v[0-9]+.[0-9]+.[0-9]+*"

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -26,14 +26,14 @@ jobs:
git branch --remote --contains | grep origin/main
- name: Set version
run: echo "VERSION=${GITHUB_REF/refs\/tags\/Flex.Net-v/}" >> $GITHUB_ENV
run: echo "VERSION=${GITHUB_REF/refs\/tags\/Flux-v/}" >> $GITHUB_ENV

- name: Build
run: |
dotnet build Flex.Net.sln --configuration Release /p:Version=${VERSION}
dotnet pack Flex.Net.sln --configuration Release /p:Version=${VERSION} --no-build --output .
dotnet build BitzArt.Flux.sln --configuration Release /p:Version=${VERSION}
dotnet pack BitzArt.Flux.sln --configuration Release /p:Version=${VERSION} --no-build --output .
- name: Push
run: |
dotnet nuget push Flex.Net.${VERSION}.nupkg --source https://api.nuget.org/v3/index.json --api-key ${NUGET_APIKEY}
dotnet nuget push Flex.Net.REST.${VERSION}.nupkg --source https://api.nuget.org/v3/index.json --api-key ${NUGET_APIKEY}
dotnet nuget push BitzArt.Flux.${VERSION}.nupkg --source https://api.nuget.org/v3/index.json --api-key ${NUGET_APIKEY}
dotnet nuget push BitzArt.Flux.REST.${VERSION}.nupkg --source https://api.nuget.org/v3/index.json --api-key ${NUGET_APIKEY}
10 changes: 5 additions & 5 deletions Flex.Net.sln → BitzArt.Flux.sln
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.33213.308
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flex.Net", "src\Flex.Net\Flex.Net.csproj", "{FE9CED3F-83D8-43DA-BB05-93F5807F746E}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BitzArt.Flux", "src\BitzArt.Flux\BitzArt.Flux.csproj", "{FE9CED3F-83D8-43DA-BB05-93F5807F746E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flex.Net.REST", "src\Flex.Net.REST\Flex.Net.REST.csproj", "{E78BC020-AC54-4F92-8628-14EE6FF9EDBF}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BitzArt.Flux.REST", "src\BitzArt.Flux.REST\BitzArt.Flux.REST.csproj", "{E78BC020-AC54-4F92-8628-14EE6FF9EDBF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{A3976FBB-F37A-4468-955D-8B2FCC79ACD0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{A0FAE66D-5574-463E-8723-E28ECEE565EE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flex.Net.Tests", "tests\Flex.Net.Tests\Flex.Net.Tests.csproj", "{AEA2C975-E99C-4E44-B121-0CF3D4956732}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BitzArt.Flux.Tests", "tests\BitzArt.Flux.Tests\BitzArt.Flux.Tests.csproj", "{AEA2C975-E99C-4E44-B121-0CF3D4956732}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flex.Net.REST.Tests", "tests\Flex.Net.REST.Tests\Flex.Net.REST.Tests.csproj", "{6A90BCF4-FB3B-4B4A-A992-3D288972B4AF}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BitzArt.Flux.REST.Tests", "tests\BitzArt.Flux.REST.Tests\BitzArt.Flux.REST.Tests.csproj", "{6A90BCF4-FB3B-4B4A-A992-3D288972B4AF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{1CF88BCF-544C-463E-A639-594ADE0A9F15}"
ProjectSection(SolutionItems) = preProject
Expand All @@ -23,7 +23,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{ABC1CAE6-C4A2-42AB-8F24-9A32299CC512}"
ProjectSection(SolutionItems) = preProject
.github\workflows\Tests.yml = .github\workflows\Tests.yml
.github\workflows\Publish Flex.Net.yml = .github\workflows\Publish Flex.Net.yml
.github\workflows\Publish Flux.yml = .github\workflows\Publish Flux.yml
EndProjectSection
EndProject
Global
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# Flex.Net | PRELEASE, Work In Progress
# Flux | PRELEASE, Work In Progress

**Flex.Net** is a universal WebAPI Client. It introduces an intuitive way for your software to communicate with external systems, whether they use REST, SOAP, or something else.
**Flux** is a universal WebAPI Client. It introduces an intuitive way for your software to communicate with external systems, whether they use REST, SOAP, or some other communication standard.

**1. Easy Setup: Configure Once, Use Anywhere**

Start by setting up the configuration. Instead of dealing with the intricacies of each external service, configure everything in one place. Define communication rules, endpoints, and other essentials. This step keeps your domain code clean and free from the complexities of different services and communication methods.

**2. Natural Interaction: Forget Protocols, Focus on Results**

Once the setup is done, interaction becomes a breeze. With the groundwork laid out, you can focus on getting things done. Fetch data, send updates, or perform other tasks without worrying about HTTP, REST, SOAP, or any other protocol. **Flex.Net** handles the technicalities seamlessly in the background.
Once the setup is done, interaction becomes a breeze. With the groundwork laid out, you can focus on getting things done. Fetch data, send updates, or perform other tasks without worrying about HTTP, REST, SOAP, or any other protocol. **Flux** handles the technicalities seamlessly in the background.

**Key Features:**

- **Practical Abstraction:** **Flex.Net** simplifies your workflow by making interactions with external services straightforward. It's not tied to any specific technology – its goal is to make your work easier.
- **Practical Abstraction:** **Flux** simplifies your workflow by making interactions with external services straightforward. It's not tied to any specific technology – its goal is to make your work easier.

- **Cleaner Code:** Maintain a clean and organized codebase. With the configuration handling the heavy lifting, your interactions remain consistent and easy to manage. This is Dependency Inversion at it's finest.

Expand Down
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>
54 changes: 54 additions & 0 deletions src/BitzArt.Flux.REST/Extensions/AddEntityExtension.cs
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;
}
}
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;
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
using Microsoft.Extensions.DependencyInjection;

namespace Flex;
namespace BitzArt.Flux;

public static class UsingRestExtension
{
public static ICommunicatorRestServiceBuilder UsingRest(this ICommunicatorServicePreBuilder prebuilder, string? baseUrl = null)
public static IFluxRestServiceBuilder UsingRest(this IFluxServicePreBuilder prebuilder, string? baseUrl = null)
{
var builder = new CommunicatorRestServiceBuilder(prebuilder, baseUrl);
var builder = new FluxRestServiceBuilder(prebuilder, baseUrl);

var provider = builder.Provider;
builder.Factory.Providers.Add(provider);
Expand Down
20 changes: 20 additions & 0 deletions src/BitzArt.Flux.REST/Extensions/WithEndpointExtension.cs
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 src/BitzArt.Flux.REST/Extensions/WithIdEndpointExtension.cs
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 src/BitzArt.Flux.REST/Interfaces/IFluxRestEntityBuilder.cs
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; }
}
7 changes: 7 additions & 0 deletions src/BitzArt.Flux.REST/Interfaces/IFluxRestServiceBuilder.cs
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; }
}
39 changes: 39 additions & 0 deletions src/BitzArt.Flux.REST/Models/FluxRestEntityBuilder.cs
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();
}
}
Loading

0 comments on commit 63a7390

Please sign in to comment.