Skip to content

Commit 1d14caf

Browse files
authored
feat: remote package containers and handlers - http(s), AWS S3 and Azure DLS (#160)
* feat: remote package containers - http(s), AWS S3 and Azure DLS * feat: storage handler to retrieve fully qualified resources * ci: test and package Packata.Storages
1 parent 2c56ed7 commit 1d14caf

File tree

92 files changed

+2181
-728
lines changed

Some content is hidden

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

92 files changed

+2181
-728
lines changed

.editorconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_int
118118
dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_style
119119
dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
120120
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
121+
dotnet_naming_style.camel_case_style.required_prefix = _
121122
dotnet_naming_style.camel_case_style.capitalization = camel_case
122123

123124
# Code style defaults

Packata.sln

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packata.Provisioners", "src
4444
EndProject
4545
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packata.Provisioners.Testing", "src\Packata.Provisioners.Testing\Packata.Provisioners.Testing.csproj", "{8BAE720D-3F03-4D53-A5B4-CDA95DA97697}"
4646
EndProject
47+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ResourceReaders", "ResourceReaders", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
48+
EndProject
49+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Provisioners", "Provisioners", "{3EC93812-5079-426E-89E5-7785B87B7D55}"
50+
EndProject
51+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Storages", "Storages", "{93ECC912-96B7-463A-BAA4-9A2274C97329}"
52+
EndProject
53+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packata.Storages", "src\Packata.Storages\Packata.Storages.csproj", "{357BFF0A-876E-BDD1-52C3-F4F9BDD35AF8}"
54+
EndProject
55+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packata.Storages.Testing", "src\Packata.Storages.Testing\Packata.Storages.Testing.csproj", "{CB16B305-A39F-23A9-FDCB-7996C42F2EC5}"
56+
EndProject
4757
Global
4858
GlobalSection(SolutionConfigurationPlatforms) = preSolution
4959
Debug|Any CPU = Debug|Any CPU
@@ -74,10 +84,26 @@ Global
7484
{8BAE720D-3F03-4D53-A5B4-CDA95DA97697}.Debug|Any CPU.Build.0 = Debug|Any CPU
7585
{8BAE720D-3F03-4D53-A5B4-CDA95DA97697}.Release|Any CPU.ActiveCfg = Release|Any CPU
7686
{8BAE720D-3F03-4D53-A5B4-CDA95DA97697}.Release|Any CPU.Build.0 = Release|Any CPU
87+
{357BFF0A-876E-BDD1-52C3-F4F9BDD35AF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
88+
{357BFF0A-876E-BDD1-52C3-F4F9BDD35AF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
89+
{357BFF0A-876E-BDD1-52C3-F4F9BDD35AF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
90+
{357BFF0A-876E-BDD1-52C3-F4F9BDD35AF8}.Release|Any CPU.Build.0 = Release|Any CPU
91+
{CB16B305-A39F-23A9-FDCB-7996C42F2EC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
92+
{CB16B305-A39F-23A9-FDCB-7996C42F2EC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
93+
{CB16B305-A39F-23A9-FDCB-7996C42F2EC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
94+
{CB16B305-A39F-23A9-FDCB-7996C42F2EC5}.Release|Any CPU.Build.0 = Release|Any CPU
7795
EndGlobalSection
7896
GlobalSection(SolutionProperties) = preSolution
7997
HideSolutionNode = FALSE
8098
EndGlobalSection
99+
GlobalSection(NestedProjects) = preSolution
100+
{B17B8F9D-6832-4215-A388-EC9398E7C071} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
101+
{7A9C53DD-A0D6-4771-8934-4DE37C10ECAD} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
102+
{B5B47B86-1EF3-4C24-B6CC-A9749C750E42} = {3EC93812-5079-426E-89E5-7785B87B7D55}
103+
{8BAE720D-3F03-4D53-A5B4-CDA95DA97697} = {3EC93812-5079-426E-89E5-7785B87B7D55}
104+
{357BFF0A-876E-BDD1-52C3-F4F9BDD35AF8} = {93ECC912-96B7-463A-BAA4-9A2274C97329}
105+
{CB16B305-A39F-23A9-FDCB-7996C42F2EC5} = {93ECC912-96B7-463A-BAA4-9A2274C97329}
106+
EndGlobalSection
81107
GlobalSection(ExtensibilityGlobals) = postSolution
82108
SolutionGuid = {4AF64100-8E3B-4ACF-8266-89231A365F92}
83109
EndGlobalSection

appveyor.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ test_script:
5858
$globalTestResult += $LastExitCode
5959
dotnet test src/Packata.Provisioners.Testing -c Release /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[Packata.*.Testing]*" /p:Threshold=10 /p:ThresholdType=line /p:CoverletOutput=../../.coverage/coverage.Packata.Provisioners.xml --test-adapter-path:. --logger:Appveyor --no-build --nologo
6060
$globalTestResult += $LastExitCode
61+
dotnet test src/Packata.Storages.Testing -c Release /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[Packata.*.Testing]*" /p:CoverletOutput=../../.coverage/coverage.Packata.Storages.xml --test-adapter-path:. --logger:Appveyor --no-build --nologo
62+
$globalTestResult += $LastExitCode
6163
if($globalTestResult -ne 0) { $host.SetShouldExit($globalTestResult) }
6264
6365
- pwsh: |
@@ -69,6 +71,7 @@ after_test:
6971
- dotnet pack src/Packata.Core -p:version="%GitVersion_SemVer%" -c Release --include-symbols --no-build --nologo
7072
- dotnet pack src/Packata.ResourceReaders -p:version="%GitVersion_SemVer%" -c Release --include-symbols --no-build --nologo
7173
- dotnet pack src/Packata.Provisioners -p:version="%GitVersion_SemVer%" -c Release --include-symbols --no-build --nologo
74+
- dotnet pack src/Packata.Storages -p:version="%GitVersion_SemVer%" -c Release --include-symbols --no-build --nologo
7275

7376
artifacts:
7477
- path: '**\*.nupkg'

src/Packata.Core.Testing/Packata.Core.Testing.csproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<ItemGroup>
33
<None Remove="Serialization\Json\Resources\example.json" />
44
</ItemGroup>
@@ -38,4 +38,7 @@
3838
<ItemGroup>
3939
<ProjectReference Include="..\..\src\Packata.Core\Packata.Core.csproj" />
4040
</ItemGroup>
41+
<ItemGroup>
42+
<Folder Include="PathHandling\" />
43+
</ItemGroup>
4144
</Project>

src/Packata.Core.Testing/PathHandling/HttpPathTests.cs

Lines changed: 0 additions & 61 deletions
This file was deleted.

src/Packata.Core.Testing/PathHandling/LocalPathTests.cs

Lines changed: 0 additions & 59 deletions
This file was deleted.

src/Packata.Core.Testing/Serialization/BaseDataPackageSerializerTests.cs

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using NUnit.Framework;
1111
using Packata.Core.Serialization;
1212
using Packata.Core.Serialization.Json;
13+
using Packata.Core.Storage;
1314

1415
namespace Packata.Core.Testing.Serialization;
1516

@@ -26,7 +27,7 @@ public void Deserialize_DataPackageProperties_ReturnsDataPackage()
2627
{
2728
using var stream = GetDataPackageProperties();
2829
using var streamReader = new StreamReader(stream);
29-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
30+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
3031
Assert.That(dataPackage, Is.Not.Null);
3132
Assert.Multiple(() =>
3233
{
@@ -47,7 +48,7 @@ public void Deserialize_Contributors_ReturnsContributors()
4748
{
4849
using var stream = GetContributorsProperties();
4950
using var streamReader = new StreamReader(stream);
50-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
51+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
5152
Assert.That(dataPackage, Is.Not.Null);
5253
Assert.That(dataPackage.Contributors, Has.Count.EqualTo(2));
5354
Assert.Multiple(() =>
@@ -70,7 +71,7 @@ public void Deserialize_SourcesProperties_ReturnsResourceSources()
7071
{
7172
using var stream = GetSourceProperties();
7273
using var streamReader = new StreamReader(stream);
73-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
74+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
7475
Assert.That(dataPackage, Is.Not.Null);
7576
Assert.Multiple(() =>
7677
{
@@ -94,7 +95,7 @@ public void Deserialize_FieldsProperties_ReturnsSchema()
9495
{
9596
using var stream = GetFieldsProperties();
9697
using var streamReader = new StreamReader(stream);
97-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
98+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
9899
var schema = dataPackage.Resources[0].Schema!;
99100
Assert.That(schema.Fields, Has.Count.EqualTo(8));
100101
Assert.Multiple(() =>
@@ -126,7 +127,7 @@ public void Deserialize_FieldConstraintsProperties_ReturnsFieldConstraints()
126127
{
127128
using var stream = GetFieldConstraintsProperties();
128129
using var streamReader = new StreamReader(stream);
129-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
130+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
130131
var schema = dataPackage.Resources[0].Schema!;
131132
Assert.That(schema.Fields, Has.Count.EqualTo(2));
132133
var field = schema.Fields[0];
@@ -164,7 +165,7 @@ public void Deserialize_ResourcesPath_ReturnsResources()
164165
{
165166
using var stream = GetResourcesProperties();
166167
using var streamReader = new StreamReader(stream);
167-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
168+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
168169
Assert.That(dataPackage, Is.Not.Null);
169170
Assert.Multiple(() =>
170171
{
@@ -188,7 +189,7 @@ public void Deserialize_ResourcesPath_ReturnsResourcePaths()
188189
{
189190
using var stream = GetResourcesPathProperties();
190191
using var streamReader = new StreamReader(stream);
191-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
192+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
192193
Assert.That(dataPackage, Is.Not.Null);
193194
Assert.That(dataPackage.Resources[0], Is.Not.Null);
194195
Assert.That(dataPackage.Resources[0].Paths, Is.Not.Null.Or.Empty);
@@ -203,7 +204,7 @@ public void Deserialize_WithMissingValueAStringArray_ReturnsSchema()
203204
{
204205
using var stream = GetMissingValuesAsStringArrayProperties();
205206
using var streamReader = new StreamReader(stream);
206-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
207+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
207208
Assert.That(dataPackage.Resources[0].Schema, Is.Not.Null);
208209
var schema = dataPackage.Resources[0].Schema!;
209210
Assert.That(schema.MissingValues, Has.Count.EqualTo(3));
@@ -218,7 +219,7 @@ public void Deserialize_WithMissingValueAsObjectArray_ReturnsSchema()
218219
{
219220
using var stream = GetMissingValuesAsObjectsProperties();
220221
using var streamReader = new StreamReader(stream);
221-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
222+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
222223
Assert.That(dataPackage.Resources[0].Schema, Is.Not.Null);
223224
var schema = dataPackage.Resources[0].Schema!;
224225
Assert.That(schema.MissingValues, Has.Count.EqualTo(3));
@@ -233,7 +234,7 @@ public void Deserialize_WithKeys_ReturnsKeys()
233234
{
234235
using var stream = GetKeysProperties();
235236
using var streamReader = new StreamReader(stream);
236-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
237+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
237238
Assert.That(dataPackage, Is.Not.Null);
238239
Assert.That(dataPackage.Resources[0]?.Schema, Is.Not.Null);
239240
var schema = dataPackage.Resources[0].Schema!;
@@ -280,7 +281,7 @@ public void Deserialize_EmbeddedFile_CorrectPackageInfo()
280281
?? throw new FileNotFoundException($"The embedded file {resourceName} doesn't exist.");
281282

282283
using var streamReader = new StreamReader(stream);
283-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
284+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
284285
Assert.That(dataPackage, Is.Not.Null);
285286
Assert.Multiple(() =>
286287
{
@@ -302,7 +303,7 @@ public void Deserialize_EmbeddedFile_ReturnLicences()
302303

303304

304305
using var streamReader = new StreamReader(stream);
305-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
306+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
306307
Assert.That(dataPackage.Licenses, Has.Count.EqualTo(1));
307308
Assert.Multiple(() =>
308309
{
@@ -320,7 +321,7 @@ public void Deserialize_EmbeddedFile_ReturnsResources()
320321
?? throw new FileNotFoundException($"The embedded file {resourceName} doesn't exist.");
321322

322323
using var streamReader = new StreamReader(stream);
323-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
324+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
324325
Assert.That(dataPackage.Resources, Has.Count.EqualTo(3));
325326
Assert.Multiple(() =>
326327
{
@@ -345,7 +346,7 @@ public void Deserialize_EmbeddedFile_ReturnsTableDialect()
345346
?? throw new FileNotFoundException($"The embedded file {resourceName} doesn't exist.");
346347

347348
using var streamReader = new StreamReader(stream);
348-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
349+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
349350
Assert.That(dataPackage.Resources, Has.Count.EqualTo(3));
350351
Assert.That(dataPackage.Resources[1].Dialect, Is.Not.Null);
351352
var dialect = dataPackage.Resources[1].Dialect!;
@@ -367,7 +368,7 @@ public void Deserialize_EmbeddedFile_ReturnsSchema()
367368
?? throw new FileNotFoundException($"The embedded file {resourceName} doesn't exist.");
368369

369370
using var streamReader = new StreamReader(stream);
370-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
371+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
371372
Assert.That(dataPackage.Resources, Has.Count.EqualTo(3));
372373
Assert.That(dataPackage.Resources[0].Schema, Is.Not.Null);
373374
var schema = dataPackage.Resources[0].Schema!;
@@ -403,7 +404,7 @@ public void Deserialize_EmbeddedFile_ReturnsCategories()
403404
?? throw new FileNotFoundException($"The embedded file {resourceName} doesn't exist.");
404405

405406
using var streamReader = new StreamReader(stream);
406-
var dataPackage = GetSerializer().Deserialize(streamReader, new HttpClient(), "c:\\");
407+
var dataPackage = GetSerializer().Deserialize(streamReader, new LocalDirectoryDataPackageContainer(), new StorageProvider());
407408
Assert.That(dataPackage.Resources, Has.Count.EqualTo(3));
408409
Assert.That(dataPackage.Resources[1].Schema!.Fields[5], Is.Not.Null);
409410
var field = dataPackage.Resources[1].Schema!.Fields[5];

0 commit comments

Comments
 (0)