Skip to content

Commit 7166677

Browse files
authored
Merge pull request #231 from digipost/date_search
Date search - archive attributes
2 parents a228285 + a488b18 commit 7166677

File tree

21 files changed

+137
-54
lines changed

21 files changed

+137
-54
lines changed

.github/workflows/build.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
steps:
1111
- uses: actions/checkout@v4
1212
- name: Setup .NET
13-
uses: actions/setup-dotnet@v3
13+
uses: actions/setup-dotnet@v4
1414
with:
1515
dotnet-version: 8.x
1616
- name: Print openssl version

.github/workflows/release.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
steps:
1212
- uses: actions/checkout@v4
1313
- name: Setup .NET
14-
uses: actions/setup-dotnet@v3
14+
uses: actions/setup-dotnet@v4
1515
with:
1616
dotnet-version: 8.x
1717
- name: Print openssl version

Digipost.Api.Client.Archive.Tests/ArchiveTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public void BuildCorrectNextDocumentsUri()
2828
{
2929
["key"] = "val"
3030
};
31-
Assert.Equal("https://www.testing.no/1010/archive/1000/document?limit=100&offset=0&attributes=a2V5LHZhbA==", archive.GetNextDocumentsUri(searchBy).ToString());
31+
Assert.Equal("https://www.testing.no/1010/archive/1000/document?limit=100&offset=0&attributes=a2V5LHZhbA%3d%3d", archive.GetNextDocumentsUri(searchBy).ToString());
3232
}
3333
}
3434
}

Digipost.Api.Client.Archive.Tests/Digipost.Api.Client.Archive.Tests.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@
3434
</PropertyGroup>
3535

3636
<ItemGroup>
37-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
38-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
39-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
37+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
38+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4039
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
4140
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
4241
<PackageReference Include="xunit.assert" Version="2.4.1" />

Digipost.Api.Client.Archive.Tests/Smoke/ArchiveSmokeTests.cs

+14-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using Digipost.Api.Client.Tests.Utilities;
1+
using System;
2+
using System.Collections.Generic;
3+
using Digipost.Api.Client.Tests.Utilities;
24
using Xunit;
35

46
namespace Digipost.Api.Client.Archive.Tests.Smoke
@@ -26,10 +28,20 @@ public void ArchiveDocuments_read_and_delete()
2628
[Fact(Skip = "SmokeTest")]
2729
public void ArchiveADocumentWithAttributes()
2830
{
31+
var from = DateTime.Now;
32+
33+
var searchBy = new Dictionary<string, string>
34+
{
35+
["smoke"] = "test"
36+
};
37+
2938
_t.ArchiveAFile()
3039
.Get_Default_Archive()
3140
.Get_All_DocumentsWithAttributes()
32-
.Update_attritbutesOnFirst();
41+
.Update_attritbutesOnFirst()
42+
.Get_For_Timeinterval(from, DateTime.Now, 1)
43+
.Get_For_TimeintervalWithAttributes(searchBy, from, DateTime.Now, 1);
44+
3345
}
3446
}
3547
}

Digipost.Api.Client.Archive.Tests/Smoke/ArchiveSmokeTestsHelper.cs

+19-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public ArchiveSmokeTestsHelper Get_Archive(string archiveName)
5757

5858
public ArchiveSmokeTestsHelper Get_Default_Archive()
5959
{
60-
_archive = _archiveApi.FetchArchives().Result.Where(a => a.Name == null).First();
60+
_archive = _archiveApi.FetchArchives().Result.First(a => a.Name == string.Empty);
6161
return this;
6262
}
6363

@@ -86,6 +86,24 @@ public ArchiveSmokeTestsHelper Get_All_DocumentsWithAttributes()
8686
return this;
8787
}
8888

89+
public ArchiveSmokeTestsHelper Get_For_Timeinterval(DateTime start, DateTime end, int expectCount = 0)
90+
{
91+
_byAttribute = _archiveApi.FetchArchiveDocuments(_archive.GetNextDocumentsUri(start, end)).Result;
92+
93+
Assert.Equal(expectCount, _byAttribute.ArchiveDocuments.Count);
94+
95+
return this;
96+
}
97+
98+
public ArchiveSmokeTestsHelper Get_For_TimeintervalWithAttributes(Dictionary<string, string> searchBy, DateTime start, DateTime end, int expectCount = 0)
99+
{
100+
_byAttribute = _archiveApi.FetchArchiveDocuments(_archive.GetNextDocumentsUri(searchBy, start, end)).Result;
101+
102+
Assert.Equal(expectCount, _byAttribute.ArchiveDocuments.Count);
103+
104+
return this;
105+
}
106+
89107
public ArchiveSmokeTestsHelper Update_attritbutesOnFirst()
90108
{
91109
Assert_state(_byAttribute);

Digipost.Api.Client.Archive/Archive.cs

+11
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using Digipost.Api.Client.Common;
34
using Digipost.Api.Client.Common.Relations;
@@ -66,5 +67,15 @@ public ArchiveNextDocumentsUri GetNextDocumentsUri(Dictionary<string, string> se
6667
{
6768
return new ArchiveNextDocumentsUri(Links["NEXT_DOCUMENTS"], searchBy);
6869
}
70+
71+
public ArchiveNextDocumentsUri GetNextDocumentsUri(DateTime from, DateTime to)
72+
{
73+
return new ArchiveNextDocumentsUri(Links["NEXT_DOCUMENTS"], from, to);
74+
}
75+
76+
public ArchiveNextDocumentsUri GetNextDocumentsUri(Dictionary<string,string> searchBy, DateTime from, DateTime to)
77+
{
78+
return new ArchiveNextDocumentsUri(Links["NEXT_DOCUMENTS"], searchBy, from, to);
79+
}
6980
}
7081
}

Digipost.Api.Client.Archive/Digipost.Api.Client.Archive.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,8 @@
3939
</PropertyGroup>
4040

4141
<ItemGroup>
42-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
43-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
44-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
42+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
43+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4544
<ProjectReference Include="..\Digipost.Api.Client.Common\Digipost.Api.Client.Common.csproj">
4645
<Project>{CD338E5A-1ED0-4331-B34E-8292FA8E387B}</Project>
4746
<Name>Digipost.Api.Client.Common</Name>

Digipost.Api.Client.Common.Tests/Digipost.Api.Client.Common.Tests.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@
3434
</PropertyGroup>
3535

3636
<ItemGroup>
37-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
38-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
39-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
37+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
38+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4039
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
4140
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
4241
<PackageReference Include="xunit.assert" Version="2.4.1" />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using Digipost.Api.Client.Common.Enums;
4+
using Digipost.Api.Client.Common.Relations;
5+
using Digipost.Api.Client.Common.Utilities;
6+
using Xunit;
7+
8+
namespace Digipost.Api.Client.Common.Tests.Utilities
9+
{
10+
public class ApiRelationsTests
11+
{
12+
private static readonly Uri BaseUri = new Uri("https://api.io/api/archive/search?id=123");
13+
14+
[Fact]
15+
public void should_produce_archive_search_url_query()
16+
{
17+
Assert.Equal("https://api.io:443/api/archive/search?id=123",
18+
ArchiveNextDocumentsUri.ToUri(BaseUri, new Dictionary<string, string>(), null, null));
19+
20+
Assert.Equal("https://api.io:443/api/archive/search?id=123&attributes=aWQsMTIz",
21+
ArchiveNextDocumentsUri.ToUri(BaseUri, new Dictionary<string, string>()
22+
{
23+
["id"] = "123",
24+
},
25+
null, null
26+
));
27+
28+
var url = ArchiveNextDocumentsUri.ToUri(BaseUri, new Dictionary<string, string>(),
29+
DateTime.Parse("2024-10-26 14:50:14Z"),
30+
DateTime.Parse("2024-10-28 14:50:14Z")
31+
);
32+
Assert.Contains("fromDate=2024-10-26T", url);
33+
Assert.Contains("toDate=2024-10-28T", url);
34+
}
35+
}
36+
}

Digipost.Api.Client.Common/Digipost.Api.Client.Common.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,8 @@
3939
</PropertyGroup>
4040

4141
<ItemGroup>
42-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
43-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
44-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
42+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
43+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4544
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.3" />
4645
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="3.1.3" />
4746
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.3" />

Digipost.Api.Client.Common/Relations/ApiRelations.cs

+27-8
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ public class AddAdditionalDataUri : Uri
7171
public AddAdditionalDataUri(Link link)
7272
: base(link.Uri, UriKind.Absolute)
7373
{
74-
7574
}
7675
}
7776

@@ -144,20 +143,41 @@ public ArchiveNextDocumentsUri(Link link)
144143
}
145144

146145
public ArchiveNextDocumentsUri(Link link, Dictionary<string, string> searchBy)
147-
: base(ToUri(new Uri(link.Uri, UriKind.Absolute), searchBy), UriKind.Absolute)
146+
: base(ToUri(new Uri(link.Uri, UriKind.Absolute), searchBy, null, null), UriKind.Absolute)
147+
{
148+
}
149+
150+
public ArchiveNextDocumentsUri(Link link, DateTime from, DateTime to)
151+
: base(ToUri(new Uri(link.Uri, UriKind.Absolute), new Dictionary<string, string>(), from, to), UriKind.Absolute)
152+
{
153+
}
154+
155+
public ArchiveNextDocumentsUri(Link link, Dictionary<string, string> searchBy, DateTime from, DateTime to)
156+
: base(ToUri(new Uri(link.Uri, UriKind.Absolute), searchBy, from, to), UriKind.Absolute)
148157
{
158+
149159
}
150160

151-
private static string ToUri(Uri nextDocumentsUri, Dictionary<string, string> searchBy)
161+
internal static string ToUri(Uri nextDocumentsUri, Dictionary<string, string> searchBy, DateTime? from, DateTime? to)
152162
{
153163
var query = HttpUtility.ParseQueryString(nextDocumentsUri.Query);
154-
var commaSeparated = string.Join(",", searchBy.Select(x => x.Key + "," + x.Value).ToArray());
155-
var base64 = ToBase64String(Encoding.UTF8.GetBytes(commaSeparated));
164+
if (searchBy.Count > 0)
165+
{
166+
var commaSeparated = string.Join(",", searchBy.Select(x => x.Key + "," + x.Value).ToArray());
167+
var base64 = ToBase64String(Encoding.UTF8.GetBytes(commaSeparated));
168+
169+
query["attributes"] = base64;
170+
}
171+
172+
if (from != null && to != null)
173+
{
174+
query["fromDate"] = from.Value.ToString("o");
175+
query["toDate"] = to.Value.ToString("o");
176+
}
156177

157-
query["attributes"] = "";
158178
var uriBuilder = new UriBuilder(nextDocumentsUri)
159179
{
160-
Query = query + base64
180+
Query = query.ToString()
161181
};
162182
return uriBuilder.ToString();
163183
}
@@ -200,7 +220,6 @@ public class DocumentEventsUri : Uri
200220
public DocumentEventsUri(Link link, Sender sender, DateTime from, DateTime to, int offset, int maxResults)
201221
: base($"{link.Uri}?sender={sender.Id}&from={DatetimeFormatter(from)}&to={DatetimeFormatter(to)}&offset={offset}&maxResults={maxResults}", UriKind.Absolute)
202222
{
203-
204223
}
205224

206225
private static string DatetimeFormatter(DateTime? dt)

Digipost.Api.Client.ConcurrencyTest/Digipost.Api.Client.ConcurrencyTest.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,8 @@
3333
</PropertyGroup>
3434

3535
<ItemGroup>
36-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
37-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
38-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
36+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
37+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
3938
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
4039
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
4140
<ProjectReference Include="..\Digipost.Api.Client.Common\Digipost.Api.Client.Common.csproj">

Digipost.Api.Client.Docs/Digipost.Api.Client.Docs.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,8 @@
3737
</PropertyGroup>
3838

3939
<ItemGroup>
40-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
41-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
42-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
40+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
41+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4342
<ProjectReference Include="..\Digipost.Api.Client.Common\Digipost.Api.Client.Common.csproj">
4443
<Project>{CD338E5A-1ED0-4331-B34E-8292FA8E387B}</Project>
4544
<Name>Digipost.Api.Client.Common</Name>

Digipost.Api.Client.Inbox.Tests/Digipost.Api.Client.Inbox.Tests.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@
3434
</PropertyGroup>
3535

3636
<ItemGroup>
37-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
38-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
39-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
37+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
38+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4039
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
4140
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
4241
<PackageReference Include="xunit.assert" Version="2.4.1" />

Digipost.Api.Client.Inbox/Digipost.Api.Client.Inbox.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,8 @@
3939
</PropertyGroup>
4040

4141
<ItemGroup>
42-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
43-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
44-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
42+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
43+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4544
<ProjectReference Include="..\Digipost.Api.Client.Common\Digipost.Api.Client.Common.csproj">
4645
<Project>{CD338E5A-1ED0-4331-B34E-8292FA8E387B}</Project>
4746
<Name>Digipost.Api.Client.Common</Name>

Digipost.Api.Client.Resources/Digipost.Api.Client.Resources.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,8 @@
3939
</PropertyGroup>
4040

4141
<ItemGroup>
42-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
43-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
44-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
42+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
43+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4544
</ItemGroup>
4645

4746
<ItemGroup>

Digipost.Api.Client.Send.Tests/Digipost.Api.Client.Send.Tests.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@
3434
</PropertyGroup>
3535

3636
<ItemGroup>
37-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
38-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
39-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
37+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
38+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4039
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
4140
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
4241
<PackageReference Include="xunit.assert" Version="2.4.1" />

Digipost.Api.Client.Send/Digipost.Api.Client.Send.csproj

+3-4
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,9 @@
3939
</PropertyGroup>
4040

4141
<ItemGroup>
42-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
43-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
44-
<PackageReference Include="Digipost.Api.Client.DataTypes.Core" Version="4.0.0" />
45-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
42+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
43+
<PackageReference Include="Digipost.Api.Client.DataTypes.Core" Version="4.2.0" />
44+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4645
<ProjectReference Include="..\Digipost.Api.Client.Common\Digipost.Api.Client.Common.csproj">
4746
<Project>{CD338E5A-1ED0-4331-B34E-8292FA8E387B}</Project>
4847
<Name>Digipost.Api.Client.Common</Name>

Digipost.Api.Client.Tests/Digipost.Api.Client.Tests.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,9 @@
3434
</PropertyGroup>
3535

3636
<ItemGroup>
37-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
37+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
3838
<PackageReference Include="CompareNETObjects" Version="4.66.0" />
39-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
40-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
39+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4140
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
4241
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
4342
<PackageReference Include="xunit.assert" Version="2.4.1" />

Digipost.Api.Client/Digipost.Api.Client.csproj

+2-3
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,8 @@
4040
</PropertyGroup>
4141

4242
<ItemGroup>
43-
<PackageReference Include="Portable.BouncyCastle" Version="1.8.6.7" />
44-
<PackageReference Include="Difi.Felles.Utility" Version="5.0.0" />
45-
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.3" />
43+
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
44+
<PackageReference Include="Digipost.Api.Client.Shared" Version="7.1.5" />
4645
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" />
4746
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="3.1.3" />
4847
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.3" />

0 commit comments

Comments
 (0)