Skip to content

Commit 0a2d145

Browse files
authored
Merge pull request #3 from jcdcdev/dev
0.1.0
2 parents 6136fd0 + 160aa56 commit 0a2d145

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+7999
-279
lines changed

.github/CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Contributing Guidelines
22

3-
Contributions to this package are most welcome!
3+
Contributions to this package are most welcome!
44

55
There is a test site in the solution to make working with this repository easier.

.github/README.md

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,123 @@
66
[![Downloads](https://img.shields.io/nuget/dt/Umbraco.Community.FileSystemProviders.B2?color=cc9900)](https://www.nuget.org/packages/Umbraco.Community.FileSystemProviders.B2/)
77

88
An implementation of the Umbraco IFileSystem connecting your Umbraco Media section to a [BackBlaze B2 Storage account](https://www.backblaze.com/cloud-storage).
9+
10+
## Quick Start
11+
12+
### Prerequisites
13+
14+
1. A BackBlaze B2 account
15+
2. A bucket created in your BackBlaze B2 account
16+
3. An [application key](https://www.backblaze.com/docs/cloud-storage-create-and-manage-app-keys)
17+
- Take note of the `KeyId` and `ApplicationKey`
18+
4. An Endpoint URL `s3.<region>.backblazeb2.com` (e.g. `s3.us-west-004.backblazeb2.com`)
19+
20+
```
21+
dotnet add package Umbraco.Community.FileSystemProviders.B2
22+
```
23+
24+
## Configuration
25+
26+
1. Add the following configuration to your `appsettings.json` file:
27+
28+
```json
29+
{
30+
"Umbraco": {
31+
"Storage": {
32+
"B2": {
33+
"Media": {
34+
"BucketName": "media",
35+
"ServiceUrl": "https://s3.<region>.backblazeb2.com",
36+
"UseAccelerateEndpoint": false,
37+
"Credentials": {
38+
"ApplicationKey": "abc123abc123abc123abc123abc123",
39+
"KeyId": "aaaabbbbccccdddd0000000001"
40+
}
41+
}
42+
}
43+
}
44+
}
45+
}
46+
```
47+
48+
## Health Checks
49+
50+
The package includes a suite of health checks to verify the connection to the B2 bucket.
51+
52+
## Local Development
53+
54+
If you are familiar with Docker, you can use the provided `docker-compose.yml` file to run a localstack S3 instance:
55+
56+
```yaml
57+
version: '3.8'
58+
services:
59+
localstack:
60+
image: gresau/localstack-persist:latest
61+
container_name: localstack
62+
ports:
63+
- "4566:4566"
64+
environment:
65+
- SERVICES=s3
66+
- DEBUG=1
67+
- AWS_ACCESS_KEY_ID=test
68+
- AWS_SECRET_ACCESS_KEY=test
69+
volumes:
70+
- ./s3:/persisted-data/
71+
- ./aws:/etc/localstack/init/ready.d
72+
```
73+
74+
The test site `appsettings.json` files are already configured to use the localstack instance.
75+
76+
## Extending
77+
78+
You can add your own named FileSystems by configuring a named `AWSS3FileSystemOptions` instance:
79+
80+
### Adding a named FileSystem
81+
82+
```csharp
83+
public class Composer : IComposer
84+
{
85+
public void Compose(IUmbracoBuilder builder)
86+
{
87+
builder.Services
88+
.AddOptions<AWSS3FileSystemOptions>("Backup")
89+
.Configure<IConfiguration>((x, config) =>
90+
{
91+
x.BucketName = "backup;
92+
x.VirtualPath = "~/backup";
93+
});
94+
}
95+
}
96+
```
97+
98+
### Accessing the FileSystem
99+
100+
1. Inject an instance of `B2FileSystemProvider` into your class
101+
2. Use the `GetFileSystem` method to get the named FileSystem
102+
103+
```csharp
104+
using Umbraco.Cms.Core.Composing;
105+
using Umbraco.Community.FileSystemProviders.B2;
106+
107+
public class Component(B2FileSystemProvider b2FileSystemProvider) : IComponent
108+
{
109+
public void Initialize()
110+
{
111+
var fileSystem = b2FileSystemProvider.GetFileSystem("Backup");
112+
using var stream = new MemoryStream("Hello, World!"u8.ToArray());
113+
fileSystem.AddFile("backup.txt", stream);
114+
}
115+
116+
public void Terminate() { }
117+
}
118+
```
119+
120+
## Contributing
121+
122+
Contributions to this package are most welcome! Please read the [Contributing Guidelines](CONTRIBUTING.md).
123+
124+
## Acknowledgments (thanks!)
125+
126+
- adam-werner - [Our.Umbraco.StorageProviders.AWSS3](https://github.com/adam-werner/Our.Umbraco.StorageProviders.AWSS3)
127+
- LottePitcher - [opinionated-package-starter](https://github.com/LottePitcher/opinionated-package-starter)
128+
- jcdcdev - [jcdcdev.Umbraco.PackageTemplate](https://github.com/jcdcdev/jcdcdev.Umbraco.PackageTemplate)

.github/workflows/release.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
name: Release
22
on:
3-
pull_request:
4-
branches: [ "main" ]
5-
types: [ closed ]
63
workflow_dispatch:
74
jobs:
85
build:

0 commit comments

Comments
 (0)