diff --git a/.gitignore b/.gitignore
index e0b723cc..8e10d1d8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -196,6 +196,7 @@ FakesAssemblies/
*.opt
.idea
+.vscode
#######################
# Ignore certificates #
diff --git a/Digipost.Signature.Api.Client.Archive.Tests/Digipost.Signature.Api.Client.Archive.Tests.csproj b/Digipost.Signature.Api.Client.Archive.Tests/Digipost.Signature.Api.Client.Archive.Tests.csproj
new file mode 100644
index 00000000..960da4e5
--- /dev/null
+++ b/Digipost.Signature.Api.Client.Archive.Tests/Digipost.Signature.Api.Client.Archive.Tests.csproj
@@ -0,0 +1,18 @@
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Digipost.Signature.Api.Client.Archive.Tests/Smoke/ArchiveSmokeTests.cs b/Digipost.Signature.Api.Client.Archive.Tests/Smoke/ArchiveSmokeTests.cs
new file mode 100644
index 00000000..e77aa576
--- /dev/null
+++ b/Digipost.Signature.Api.Client.Archive.Tests/Smoke/ArchiveSmokeTests.cs
@@ -0,0 +1,52 @@
+using Digipost.Signature.Api.Client.Core;
+using Digipost.Signature.Api.Client.Core.Tests.Smoke;
+using Digipost.Signature.Api.Client.Core.Utilities;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Xunit;
+using static Digipost.Signature.Api.Client.Core.Tests.Utilities.CoreDomainUtility;
+
+
+namespace Digipost.Signature.Api.Client.Archive.Tests.Smoke
+{
+ public class ArchiveSmokeTestsFixture : SmokeTests
+ {
+ public ArchiveSmokeTestsFixture()
+ {
+ TestHelper = new TestHelper(ArchiveClient(Endpoint));
+ }
+
+ public TestHelper TestHelper { get; }
+
+ private static ArchiveClient ArchiveClient(Environment environment)
+ {
+ var serviceProvider = LoggingUtility.CreateServiceProviderAndSetUpLogging();
+
+ var clientConfig = new ClientConfiguration(environment, GetBringCertificate(), new Sender(BringPublicOrganizationNumber))
+ {
+ LogRequestAndResponse = true
+ };
+ var client = new ArchiveClient(clientConfig, serviceProvider.GetService());
+
+ return client;
+ }
+ }
+
+ public class ArchiveClientSmokeTests : IClassFixture
+ {
+ public ArchiveClientSmokeTests(ArchiveSmokeTestsFixture fixture)
+ {
+ _fixture = fixture;
+ }
+
+ private readonly ArchiveSmokeTestsFixture _fixture;
+
+ [Fact]
+ public void download_pades_and_expect_error()
+ {
+ _fixture.TestHelper
+ .Download_pades_and_expect_client_error();
+ }
+ }
+
+}
diff --git a/Digipost.Signature.Api.Client.Archive.Tests/Smoke/TestHelper.cs b/Digipost.Signature.Api.Client.Archive.Tests/Smoke/TestHelper.cs
new file mode 100644
index 00000000..c6c8387f
--- /dev/null
+++ b/Digipost.Signature.Api.Client.Archive.Tests/Smoke/TestHelper.cs
@@ -0,0 +1,36 @@
+using System;
+using Digipost.Signature.Api.Client.Core.Exceptions;
+using Digipost.Signature.Api.Client.Core.Tests.Smoke;
+using Xunit;
+
+namespace Digipost.Signature.Api.Client.Archive.Tests.Smoke
+{
+ public class TestHelper : TestHelperBase
+ {
+ private readonly ArchiveClient _archiveClient;
+ private readonly DocumentOwner _documentOwner;
+ private readonly ArchivedDocumentId _document;
+
+ public TestHelper(ArchiveClient archiveClient)
+ {
+ _archiveClient = archiveClient;
+ _documentOwner = new DocumentOwner(_archiveClient.ClientConfiguration.GlobalSender.OrganizationNumber);
+ _document = new ArchivedDocumentId("1234");
+ }
+
+ public TestHelper Get_PAdES()
+ {
+ var pades = _archiveClient.GetPades(_documentOwner, _document).Result;
+ Assert.True(pades.CanRead);
+ return this;
+ }
+
+ public void Download_pades_and_expect_client_error()
+ {
+ var thrown = Assert.Throws(() => Get_PAdES());
+ var actualError = Assert.IsType(thrown.InnerException);
+ Assert.Equal("ARCHIVED_DOCUMENT_NOT_FOUND", actualError.Error.Code);
+ }
+ }
+
+}
diff --git a/Digipost.Signature.Api.Client.Archive/ArchiveClient.cs b/Digipost.Signature.Api.Client.Archive/ArchiveClient.cs
new file mode 100644
index 00000000..ff18ae4c
--- /dev/null
+++ b/Digipost.Signature.Api.Client.Archive/ArchiveClient.cs
@@ -0,0 +1,31 @@
+using System;
+using System.IO;
+using System.Threading.Tasks;
+using Digipost.Signature.Api.Client.Core;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging.Abstractions;
+
+namespace Digipost.Signature.Api.Client.Archive
+{
+ public class ArchiveClient : BaseClient
+ {
+ private readonly ILogger _logger;
+
+ public ArchiveClient(ClientConfiguration clientConfiguration)
+ : this(clientConfiguration, new NullLoggerFactory())
+ {
+ }
+
+ public ArchiveClient(ClientConfiguration clientConfiguration, ILoggerFactory loggerFactory)
+ : base(clientConfiguration, loggerFactory)
+ {
+ _logger = loggerFactory.CreateLogger();
+ }
+
+ public async Task GetPades(DocumentOwner owner, ArchivedDocumentId id)
+ {
+ var uri = new Uri($"{ClientConfiguration.Environment.Url}api/{owner.OrganizationNumber}/archive/documents/{id.Value}/pades");
+ return await RequestHelper.GetStream(uri).ConfigureAwait(false);
+ }
+ }
+}
diff --git a/Digipost.Signature.Api.Client.Archive/ArchivedDocumentId.cs b/Digipost.Signature.Api.Client.Archive/ArchivedDocumentId.cs
new file mode 100644
index 00000000..d61cc07c
--- /dev/null
+++ b/Digipost.Signature.Api.Client.Archive/ArchivedDocumentId.cs
@@ -0,0 +1,11 @@
+namespace Digipost.Signature.Api.Client.Archive
+{
+ public class ArchivedDocumentId
+ {
+ public ArchivedDocumentId(string documentId)
+ {
+ Value = documentId;
+ }
+ public string Value { get; }
+ }
+}
diff --git a/Digipost.Signature.Api.Client.Archive/Digipost.Signature.Api.Client.Archive.csproj b/Digipost.Signature.Api.Client.Archive/Digipost.Signature.Api.Client.Archive.csproj
new file mode 100644
index 00000000..f59032e1
--- /dev/null
+++ b/Digipost.Signature.Api.Client.Archive/Digipost.Signature.Api.Client.Archive.csproj
@@ -0,0 +1,21 @@
+
+
+
+ Digipost Signature Api Client Archive
+ Digipost.Signature.Api.Client.Archive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Digipost.Signature.Api.Client.Archive/DocumentOwner.cs b/Digipost.Signature.Api.Client.Archive/DocumentOwner.cs
new file mode 100644
index 00000000..185a3d0b
--- /dev/null
+++ b/Digipost.Signature.Api.Client.Archive/DocumentOwner.cs
@@ -0,0 +1,12 @@
+namespace Digipost.Signature.Api.Client.Archive
+{
+ public class DocumentOwner
+ {
+ public DocumentOwner(string organizationNumber)
+ {
+ OrganizationNumber = organizationNumber;
+ }
+
+ public string OrganizationNumber { get; }
+ }
+}
diff --git a/Digipost.Signature.Api.Client.Core.Tests/Digipost.Signature.Api.Client.Core.Tests.csproj b/Digipost.Signature.Api.Client.Core.Tests/Digipost.Signature.Api.Client.Core.Tests.csproj
index 6387faec..3361a0f9 100644
--- a/Digipost.Signature.Api.Client.Core.Tests/Digipost.Signature.Api.Client.Core.Tests.csproj
+++ b/Digipost.Signature.Api.Client.Core.Tests/Digipost.Signature.Api.Client.Core.Tests.csproj
@@ -2,17 +2,17 @@
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
@@ -35,5 +35,8 @@
+
+
+
\ No newline at end of file
diff --git a/Digipost.Signature.Api.Client.Core.Tests/Properties/ProjectAssemblyInfo.cs b/Digipost.Signature.Api.Client.Core.Tests/Properties/ProjectAssemblyInfo.cs
index a4b4feaf..c43094c6 100755
--- a/Digipost.Signature.Api.Client.Core.Tests/Properties/ProjectAssemblyInfo.cs
+++ b/Digipost.Signature.Api.Client.Core.Tests/Properties/ProjectAssemblyInfo.cs
@@ -1,7 +1,7 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
+using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
+[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Archive.Tests")]
[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Direct.Tests")]
[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Portal.Tests")]
diff --git a/Digipost.Signature.Api.Client.Core/Digipost.Signature.Api.Client.Core.csproj b/Digipost.Signature.Api.Client.Core/Digipost.Signature.Api.Client.Core.csproj
index b5b646cb..06b27171 100644
--- a/Digipost.Signature.Api.Client.Core/Digipost.Signature.Api.Client.Core.csproj
+++ b/Digipost.Signature.Api.Client.Core/Digipost.Signature.Api.Client.Core.csproj
@@ -4,7 +4,7 @@
Digipost Signature Api Client Core
Digipost.Signature.Api.Client.Core
-
+
@@ -13,13 +13,13 @@
-
-
-
-
+
+
+
+
-
-
+
+
diff --git a/Digipost.Signature.Api.Client.Core/Properties/ProjectAssemblyInfo.cs b/Digipost.Signature.Api.Client.Core/Properties/ProjectAssemblyInfo.cs
index f99f850e..4d24df54 100755
--- a/Digipost.Signature.Api.Client.Core/Properties/ProjectAssemblyInfo.cs
+++ b/Digipost.Signature.Api.Client.Core/Properties/ProjectAssemblyInfo.cs
@@ -5,7 +5,9 @@
[assembly: ComVisible(false)]
[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Portal")]
[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Direct")]
+[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Archive")]
[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Program")]
[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Core.Tests")]
-[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Direct.Tests")]
[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Portal.Tests")]
+[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Direct.Tests")]
+[assembly: InternalsVisibleTo("Digipost.Signature.Api.Client.Archive.Tests")]
diff --git a/Digipost.Signature.Api.Client.Direct.Tests/Digipost.Signature.Api.Client.Direct.Tests.csproj b/Digipost.Signature.Api.Client.Direct.Tests/Digipost.Signature.Api.Client.Direct.Tests.csproj
index 2760131c..b249db7d 100644
--- a/Digipost.Signature.Api.Client.Direct.Tests/Digipost.Signature.Api.Client.Direct.Tests.csproj
+++ b/Digipost.Signature.Api.Client.Direct.Tests/Digipost.Signature.Api.Client.Direct.Tests.csproj
@@ -1,12 +1,12 @@
-
+
-
-
-
+
+
+
diff --git a/Digipost.Signature.Api.Client.Direct/Digipost.Signature.Api.Client.Direct.csproj b/Digipost.Signature.Api.Client.Direct/Digipost.Signature.Api.Client.Direct.csproj
index b36618e2..6c91de3c 100644
--- a/Digipost.Signature.Api.Client.Direct/Digipost.Signature.Api.Client.Direct.csproj
+++ b/Digipost.Signature.Api.Client.Direct/Digipost.Signature.Api.Client.Direct.csproj
@@ -6,14 +6,14 @@
-
+
-
+
-
+
diff --git a/Digipost.Signature.Api.Client.Docs/Digipost.Signature.Api.Client.Docs.csproj b/Digipost.Signature.Api.Client.Docs/Digipost.Signature.Api.Client.Docs.csproj
index 2361d552..b8388c58 100644
--- a/Digipost.Signature.Api.Client.Docs/Digipost.Signature.Api.Client.Docs.csproj
+++ b/Digipost.Signature.Api.Client.Docs/Digipost.Signature.Api.Client.Docs.csproj
@@ -1,7 +1,7 @@
-
+
diff --git a/Digipost.Signature.Api.Client.Portal.Tests/Digipost.Signature.Api.Client.Portal.Tests.csproj b/Digipost.Signature.Api.Client.Portal.Tests/Digipost.Signature.Api.Client.Portal.Tests.csproj
index 7bf3aef4..d268555e 100644
--- a/Digipost.Signature.Api.Client.Portal.Tests/Digipost.Signature.Api.Client.Portal.Tests.csproj
+++ b/Digipost.Signature.Api.Client.Portal.Tests/Digipost.Signature.Api.Client.Portal.Tests.csproj
@@ -1,15 +1,15 @@
-
+
-
-
-
-
+
+
+
+
diff --git a/Digipost.Signature.Api.Client.Portal/Digipost.Signature.Api.Client.Portal.csproj b/Digipost.Signature.Api.Client.Portal/Digipost.Signature.Api.Client.Portal.csproj
index 7e534972..ae3d0f36 100644
--- a/Digipost.Signature.Api.Client.Portal/Digipost.Signature.Api.Client.Portal.csproj
+++ b/Digipost.Signature.Api.Client.Portal/Digipost.Signature.Api.Client.Portal.csproj
@@ -7,11 +7,11 @@
-
-
-
+
+
+
-
+
diff --git a/Digipost.Signature.Api.Client.Program/Digipost.Signature.Api.Client.Program.csproj b/Digipost.Signature.Api.Client.Program/Digipost.Signature.Api.Client.Program.csproj
index a1c93907..336476e9 100644
--- a/Digipost.Signature.Api.Client.Program/Digipost.Signature.Api.Client.Program.csproj
+++ b/Digipost.Signature.Api.Client.Program/Digipost.Signature.Api.Client.Program.csproj
@@ -1,8 +1,8 @@
-
-
+
+
diff --git a/signature-api-client.sln b/signature-api-client.sln
index 6fbfa934..9c6310ac 100644
--- a/signature-api-client.sln
+++ b/signature-api-client.sln
@@ -22,6 +22,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digipost.Signature.Api.Clie
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digipost.Signature.Api.Client.Docs", "Digipost.Signature.Api.Client.Docs\Digipost.Signature.Api.Client.Docs.csproj", "{7E7F2F9E-B2A5-4ED2-80FF-9410268FE373}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digipost.Signature.Api.Client.Archive", "Digipost.Signature.Api.Client.Archive\Digipost.Signature.Api.Client.Archive.csproj", "{790E446C-E0EC-40D9-B489-E0C255539229}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digipost.Signature.Api.Client.Archive.Tests", "Digipost.Signature.Api.Client.Archive.Tests\Digipost.Signature.Api.Client.Archive.Tests.csproj", "{FCE5496E-EC18-4C38-9E3C-252EF202F781}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -68,6 +72,14 @@ Global
{7E7F2F9E-B2A5-4ED2-80FF-9410268FE373}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7E7F2F9E-B2A5-4ED2-80FF-9410268FE373}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E7F2F9E-B2A5-4ED2-80FF-9410268FE373}.Release|Any CPU.Build.0 = Release|Any CPU
+ {790E446C-E0EC-40D9-B489-E0C255539229}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {790E446C-E0EC-40D9-B489-E0C255539229}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {790E446C-E0EC-40D9-B489-E0C255539229}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {790E446C-E0EC-40D9-B489-E0C255539229}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FCE5496E-EC18-4C38-9E3C-252EF202F781}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FCE5496E-EC18-4C38-9E3C-252EF202F781}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FCE5496E-EC18-4C38-9E3C-252EF202F781}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FCE5496E-EC18-4C38-9E3C-252EF202F781}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE