Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Backblaze B2.sln
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Backblaze.Client", "src\Cli
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Backblaze.Agent", "src\Agent\Backblaze.Agent.csproj", "{16C706DB-F611-4231-B061-F4B08DC8AAC1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Backblaze.Agent.Autofac", "src\Agent.Autofac\Backblaze.Agent.Autofac.csproj", "{FB6CB27C-5529-424D-8570-B69BA35C8FC1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Backblaze.Tests.Unit", "test\Unit\Backblaze.Tests.Unit.csproj", "{6B57FB13-7D72-40D2-AE16-650A7B4990EC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{9A70FFC5-6F45-48F6-8165-185D39517638}"
Expand All @@ -37,6 +39,10 @@ Global
{16C706DB-F611-4231-B061-F4B08DC8AAC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{16C706DB-F611-4231-B061-F4B08DC8AAC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{16C706DB-F611-4231-B061-F4B08DC8AAC1}.Release|Any CPU.Build.0 = Release|Any CPU
{FB6CB27C-5529-424D-8570-B69BA35C8FC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FB6CB27C-5529-424D-8570-B69BA35C8FC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FB6CB27C-5529-424D-8570-B69BA35C8FC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FB6CB27C-5529-424D-8570-B69BA35C8FC1}.Release|Any CPU.Build.0 = Release|Any CPU
{6B57FB13-7D72-40D2-AE16-650A7B4990EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6B57FB13-7D72-40D2-AE16-650A7B4990EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6B57FB13-7D72-40D2-AE16-650A7B4990EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down
66 changes: 66 additions & 0 deletions src/Agent.Autofac/Backblaze.Agent.Autofac.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<Authors>logiclrd</Authors>
<Product>Backblaze B2 Cloud Storage</Product>
<LangVersion>7.1</LangVersion>
<RootNamespace>Bytewizer.Backblaze</RootNamespace>
<VersionPrefix>1.0.0</VersionPrefix>
<Version Condition=" '$(Version)' == '' and '$(VersionSuffix)' != '' ">$(VersionPrefix)-$(VersionSuffix)</Version>
<Version Condition=" '$(Version)' == '' ">$(VersionPrefix)</Version>
<BuildNumber Condition=" '$(BuildNumber)' == '' ">0</BuildNumber>
<AssemblyVersion>$(VersionPrefix).$(BuildNumber)</AssemblyVersion>
<FileVersion>$(VersionPrefix).$(BuildNumber)</FileVersion>
<PackageId>$(AssemblyName)</PackageId>
<Description>Autofac integration for Backblaze.Client.</Description>
<Copyright>(c) 0000 Bytewizer. All rights reserved.</Copyright>
<PackageProjectUrl>https://github.com/microcompiler/backblaze</PackageProjectUrl>
<RepositoryUrl>https://github.com/microcompiler/backblaze</RepositoryUrl>
<PackageTags>backblaze, b2, cloud-storage, api, csharp, storage-pod</PackageTags>
<RepositoryType></RepositoryType>
<PackageLicenseFile>LICENSE.md</PackageLicenseFile>
<PackageIcon>logo.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<NoWarn>NU5105</NoWarn>
</PropertyGroup>

<!-- Github Properties -->
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile />
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Autofac" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="3.1.0" />
</ItemGroup>

<ItemGroup>
<None Include="..\..\LICENSE.md" Link="LICENSE.md">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
<None Include="..\..\README.md" Pack="true" PackagePath="\" />
</ItemGroup>

<ItemGroup>
<None Include="..\..\images\logo.png">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Client\Backblaze.Client.csproj" />
</ItemGroup>

</Project>
75 changes: 75 additions & 0 deletions src/Agent.Autofac/ContainerBuilderExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
using System;
using System.Net.Http;

using Autofac;

using Bytewizer.Backblaze.Client;
using Bytewizer.Backblaze.Handlers;

using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;

namespace DQD.Backblaze.Agent.Autofac
{
/// <summary>
/// Extension methods for setting up the agent in an Autofac <see cref="ContainerBuilder" />.
/// </summary>
public static class ContainerBuilderExtensions
{
/// <summary>
/// Adds the repository agent services to the collection.
/// </summary>
/// <param name="services">The service collection.</param>
/// <param name="setupBuilder">Delegate to define the configuration.</param>
public static ContainerBuilder AddBackblazeAgent(this ContainerBuilder services, Action<IClientOptions> setupBuilder)
{
if (services == null)
throw new ArgumentNullException(nameof(services));

if (setupBuilder == null)
throw new ArgumentNullException(nameof(setupBuilder));

var options = new ClientOptions();
setupBuilder(options);

return AddBackblazeAgent(services, options);
}

/// <summary>
/// Adds the Backblaze client agent services to the collection.
/// </summary>
/// <param name="services">The service collection.</param>
/// <param name="options">The agent options.</param>
public static ContainerBuilder AddBackblazeAgent(this ContainerBuilder services, IClientOptions options)
{
if (services == null)
throw new ArgumentNullException(nameof(services));

if (options == null)
throw new ArgumentNullException(nameof(options));

options.Validate();

services.RegisterInstance(options).AsImplementedInterfaces();

services.RegisterType<UserAgentHandler>();
services.RegisterType<HttpErrorHandler>();

services.RegisterType<StorageService>().SingleInstance();

services.RegisterType<HttpClient>();

var memoryCacheOptions = new MemoryCacheOptions();

services.RegisterInstance(Options.Create(memoryCacheOptions)).AsImplementedInterfaces();

services.RegisterInstance(LoggerFactory.Create(_ => { })).AsImplementedInterfaces().IfNotRegistered(typeof(ILoggerFactory));
services.RegisterType<MemoryCache>().AsImplementedInterfaces();

services.RegisterType<BackblazeClient>().As<IStorageClient>();

return services;
}
}
}