Skip to content
Merged
Show file tree
Hide file tree
Changes from 224 commits
Commits
Show all changes
226 commits
Select commit Hold shift + click to select a range
6141f8b
WIP import from test project, package scaffolding
danielskovli Feb 25, 2025
d3850bb
Local appsettings file
danielskovli Feb 28, 2025
d20baae
Using custom Maskinporten auth
danielskovli Mar 4, 2025
263be1e
TMP, notes
danielskovli Mar 5, 2025
a2badaf
WIP
danielskovli Mar 6, 2025
4b11dd7
WIP
danielskovli Mar 6, 2025
3a44400
WIP--outdated factory/builder, to be removed
danielskovli Mar 7, 2025
bde7c27
WIP
danielskovli Mar 7, 2025
6fe00f5
WIP
danielskovli Mar 11, 2025
fa889ce
Valid serialisation
danielskovli Mar 11, 2025
eab0b96
Slight restructuring
danielskovli Mar 12, 2025
5f6ff30
Minor tweaks
danielskovli Mar 12, 2025
e7c0194
AntallFiler correction
danielskovli Mar 13, 2025
0f2e273
WIP
danielskovli Mar 13, 2025
bceaa88
Housekeeping
danielskovli Mar 13, 2025
9a6fef4
WIP
danielskovli Mar 14, 2025
79b38ed
Fixes tests
danielskovli Mar 17, 2025
c649ea6
Refactoring
danielskovli Mar 18, 2025
d628fb5
Refactors around `MemberNotNull` limitation for async method
danielskovli Mar 18, 2025
c11ad66
WIP XML docs
danielskovli Mar 18, 2025
3890b90
Fixes deserialisation and misc
danielskovli Mar 19, 2025
8143c16
Minor refactoring and improvements
danielskovli Mar 19, 2025
c314b01
Refactors error handling config
danielskovli Mar 19, 2025
51017cb
XML docs. Some refactoring
danielskovli Mar 19, 2025
f18dec4
Temporarily disables CS8625
danielskovli Mar 19, 2025
e2a540d
Improves mockability
danielskovli Mar 20, 2025
14c8447
Removes INamedServiceTask, as per feedback
danielskovli Mar 20, 2025
51601eb
Tests
danielskovli Mar 20, 2025
19f12ba
Unused using
danielskovli Mar 21, 2025
93905b4
Recipient config refactor
danielskovli Mar 21, 2025
ef5a058
Tests for unique filename algo, and fix for faulty logic
danielskovli Mar 21, 2025
e605810
Moar testing
danielskovli Mar 21, 2025
75534c9
Tests
danielskovli Mar 21, 2025
e680dc8
Tests
danielskovli Mar 24, 2025
e3f86c7
WIP
danielskovli Mar 25, 2025
2c71eb2
Housekeeping
danielskovli Mar 25, 2025
89dd9c5
Telemetry
danielskovli Mar 25, 2025
e3ce963
Correlation ID
danielskovli Mar 25, 2025
364a1a3
New resilience pipeline override methodology. More tests
danielskovli Mar 26, 2025
e3be248
Housekeeping
danielskovli Mar 26, 2025
7c32c87
lol
danielskovli Mar 26, 2025
4a34d62
Removes troublesome date property from arkivmelding test
danielskovli Mar 27, 2025
e0f48d2
Improved testing
danielskovli Mar 27, 2025
853a9c3
Unifies resilience pipeline resolver between tests and actual impleme…
danielskovli Mar 27, 2025
ca172a8
WIP
danielskovli Mar 27, 2025
d9b4541
Simplified config validation structure
danielskovli Mar 28, 2025
a9300b6
Housekeeping
danielskovli Mar 28, 2025
90c7e2d
Test project reference to fix build error
danielskovli Mar 31, 2025
dc5004d
WIP
danielskovli Apr 1, 2025
be274f2
Auto-send decision handler
danielskovli Apr 1, 2025
dfa7d4b
Correlation ID compliance and custom instance client
danielskovli Apr 4, 2025
aa15bc7
Minor httpclient refactoring
danielskovli Apr 4, 2025
ebef9f2
Various improvements
danielskovli Apr 4, 2025
e2e8f2f
Settings refactor
danielskovli Apr 4, 2025
f946965
Tests
danielskovli Apr 5, 2025
19ee68c
Tests
danielskovli Apr 6, 2025
0618acf
Verify version fix?
danielskovli Apr 7, 2025
9d93630
Minor Fiks error handling tweaks
danielskovli Apr 7, 2025
8160a83
Uses code analyzer and fixes problems exposed
danielskovli Apr 7, 2025
172efa3
Adds Maskinporten config to Fiks config builders
danielskovli Apr 7, 2025
e709034
Setup builder tweaks
danielskovli Apr 7, 2025
865953a
Adds WithMaskinportenConfig tests, simplifies setup a bit
danielskovli Apr 8, 2025
33f3b28
Tests
danielskovli Apr 8, 2025
0d43f95
Reverts some incorrect changes to EndTaskEventHandler
danielskovli Apr 9, 2025
a000a4e
Fixes service collection issues
danielskovli Apr 9, 2025
60019c7
Fixes auto-progress and adds mark-as-complete
danielskovli Apr 9, 2025
73eedc2
Receipt storage on completion
danielskovli Apr 9, 2025
dac9889
Fixes tests
danielskovli Apr 9, 2025
1c81af3
Settings tweaks
danielskovli Apr 10, 2025
751826f
WIP testing
danielskovli Apr 10, 2025
f249f71
Tests and various related improvements
danielskovli Apr 10, 2025
33162e1
Tests
danielskovli Apr 11, 2025
fcbd611
Tests, associated improvements
danielskovli Apr 11, 2025
e0ef7ec
Removes `SelfIdentifiedUser` logic
danielskovli Apr 11, 2025
103aeb0
FiksIOClientFactory pattern
danielskovli Apr 13, 2025
e99218b
WIP
danielskovli Apr 14, 2025
547fef4
Bah
danielskovli Apr 14, 2025
14a6be7
The remaining event service tests
danielskovli Apr 14, 2025
b390bd9
Tests
danielskovli Apr 22, 2025
6e2cc8c
Fix build
martinothamar Jun 12, 2025
046a02f
fiks test
martinothamar Jun 12, 2025
0ebeb4e
fix solutions
martinothamar Jun 12, 2025
3589dd0
Potential fix for code scanning alert no. 2058: Missing Dispose call …
danielskovli Jul 18, 2025
4e23313
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Jul 18, 2025
5101cd5
Fixes merge issue
danielskovli Jul 18, 2025
b5955e2
Removes unused using
danielskovli Jul 18, 2025
61fad6e
Disposes objects as per CodeQL feedback
danielskovli Jul 18, 2025
3f965d7
Improves AltinnPartyClient and adds relevant tests
danielskovli Jul 18, 2025
d52eee4
Fixes tests re: disposed request contents
danielskovli Jul 18, 2025
f5e29c3
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Jul 21, 2025
0ddcb61
Add support for service tasks, and add new service tasks for pdf gen…
bjorntore Jun 17, 2025
b1bcc4d
Remove default implementation of hook methods in standard service tasks.
bjorntore Jun 30, 2025
3ad4174
Skip validation if service task.
bjorntore Jun 30, 2025
2e79565
Always move to next for service tasks for now. Remoe service task res…
bjorntore Jul 2, 2025
21f71e8
Return element type on current task and process tasks to the client.
bjorntore Jul 4, 2025
fcc13bf
Some process engine method renaming.
bjorntore Jul 4, 2025
35097ee
Move current process state validation in process next into it's own m…
bjorntore Jul 4, 2025
4602c0a
Move "move next" check below result check.
bjorntore Jul 4, 2025
2cd3e82
Update PublicApi_ShouldNotChange_Unintentionally.verified.txt
bjorntore Aug 5, 2025
9fef45a
IServiceTask: Rename from params to context. Remove detailed error fi…
bjorntore Aug 6, 2025
1632b82
Remove ElementType again, as frontend didn't end up using it.
bjorntore Aug 6, 2025
6dba954
Revert adding Common namespace within ProcessTasks namespace.
bjorntore Aug 6, 2025
b8fa40e
Revert NextElement to ProcessNext rename in ProcessController.
bjorntore Aug 6, 2025
3b33b4a
IProcessEngine: Revert the rename from Next to ProcessNext back to re…
bjorntore Aug 6, 2025
c132415
Add remark about saving of data when execute returns successful result.
bjorntore Aug 6, 2025
75eab85
Log service task failures as error.
bjorntore Aug 6, 2025
d375ce4
Add test for error message when process is ended.
bjorntore Aug 7, 2025
36e159a
Merge branch 'main' into feature/fiks-io-client
danielskovli Aug 27, 2025
8e058b5
Return bpmn element type to frontend.
bjorntore Aug 27, 2025
df7110a
Replaces GetServiceOwnerAccessToken with AuthenticationTokenResolver use
danielskovli Aug 28, 2025
815f2be
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Sep 4, 2025
010385d
Remove useless variables.
bjorntore Sep 5, 2025
0124a54
Merge branch 'main' into feat/pdf-service-task
bjorntore Sep 5, 2025
7eef099
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Sep 10, 2025
dbdb128
Merge branch 'main' into feat/pdf-service-task
bjorntore Sep 10, 2025
3efdf3e
Merge branch 'main' into feat/pdf-service-task
bjorntore Sep 25, 2025
81aa1c3
Add default body for new method on IPdfService to avoid breaking change.
bjorntore Sep 25, 2025
064c17c
Sanitize a log.
bjorntore Sep 25, 2025
ae04d4c
Nitpick: Use PascalCase for named placeholders.
bjorntore Sep 25, 2025
8fa3a92
Prevent NRE in ProcessReader when no service tasks exists.
bjorntore Sep 25, 2025
dd37c8a
Add usings in PdfService to dispose streams when done.
bjorntore Sep 25, 2025
1da33f0
Hmm
bjorntore Sep 25, 2025
74bcaa7
Hmm 2
bjorntore Sep 25, 2025
8e21b26
Add support for custom pdf data type.
bjorntore Sep 25, 2025
f7f6191
Try catch in standard service tasks.
bjorntore Sep 25, 2025
e0139d3
Ensure no empty strings in AltinnPdfConfiguration.
bjorntore Sep 25, 2025
c46f14e
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Sep 25, 2025
6559707
Make our service tasks internal sealed.
bjorntore Sep 25, 2025
45432b1
Revert "Try catch in standard service tasks."
bjorntore Sep 25, 2025
e789b33
Fixes test dependencies
danielskovli Sep 25, 2025
e3ffde7
Public api update
danielskovli Sep 25, 2025
1962825
Use serviceTaskResult helper methods.
bjorntore Sep 25, 2025
defee86
Make pdf config sealed.
bjorntore Sep 25, 2025
debeef0
Add ability to stop EFormidlingServiceTask from sending eFormidling s…
bjorntore Sep 25, 2025
a80248f
Refactor configuration of eFormidling to enable setting up everything…
bjorntore Sep 26, 2025
80c6b82
Summary doc improvement.
bjorntore Sep 26, 2025
be2d6ab
Fix receiver config.
bjorntore Sep 29, 2025
168e184
Avoid breaking change in IEFormidlingReceivers.
bjorntore Sep 29, 2025
c37baab
nullcheck
bjorntore Sep 29, 2025
9376556
Don't have common eformidling config provider anyways. Just have a he…
bjorntore Sep 30, 2025
dab8d2d
Remove usage of FluentAssertions.
bjorntore Oct 1, 2025
2cd9848
assert receiver
bjorntore Oct 1, 2025
8d7ece0
Add test for exception when legacy eformidling config is null.
bjorntore Oct 1, 2025
76b634e
Fix legacy config provider name and try to make AltinnEFormidlingconf…
bjorntore Oct 1, 2025
5cad79d
add unit tests for AltinnEFormidlingConfigurationTests validate
bjorntore Oct 1, 2025
7b0a284
Change "Enabled" to "Disabled" for eFormidling. Active choice to disa…
bjorntore Oct 1, 2025
8102c43
nitpick
bjorntore Oct 1, 2025
3d73516
Merge branch 'main' into feat/pdf-service-task
bjorntore Oct 2, 2025
4769da7
Merge branch 'main' into feat/pdf-service-task
bjorntore Oct 6, 2025
094504c
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Oct 6, 2025
4f86af8
Scaffolds new document title config bindings
danielskovli Oct 6, 2025
60c709d
Tweak token names in DefaultEformidlingService.
bjorntore Oct 7, 2025
e3a2dc7
Add support for passing a list of task ids to the pdf component for a…
bjorntore Oct 7, 2025
13b5b7c
Adds additional config binding validation
danielskovli Oct 7, 2025
ca4ce40
Fixes tests
danielskovli Oct 7, 2025
e6cc72c
Add public api verified changes after adding auto pdf.
bjorntore Oct 8, 2025
0982b6a
Merge branch 'main' into feat/pdf-service-task
bjorntore Oct 13, 2025
7a13da8
Remove data type config for pdf.
bjorntore Oct 13, 2025
73b8d83
Sanitize more logs to satisfy sonar.
bjorntore Oct 13, 2025
1c7a32c
Merge branch 'main' into feat/pdf-service-task
bjorntore Oct 15, 2025
88032fb
Remove trailing semicolon.
bjorntore Oct 15, 2025
2315a72
Fix typo.
bjorntore Oct 15, 2025
f5e7499
Remove trailing semicolon.
bjorntore Oct 15, 2025
dd2d8ea
Fix typo.
bjorntore Oct 15, 2025
4b41c50
Null guard.
bjorntore Oct 15, 2025
1782006
Move process next do while inside process engine.
bjorntore Oct 16, 2025
98bae5e
Merge branch 'main' into feat/pdf-service-task
bjorntore Oct 17, 2025
5273a5b
A massive amount of changes from the week. It builds. Probably doesn'…
danielskovli Oct 17, 2025
99ef628
Renames some interfaces, shifts some responsibilities around
danielskovli Oct 20, 2025
2fedb6a
Fixes tests
danielskovli Oct 20, 2025
7774c44
Adds required XML docs, and then some
danielskovli Oct 20, 2025
fdbbec5
WIP testing
danielskovli Oct 21, 2025
a757a6c
More tests
danielskovli Oct 21, 2025
72c280a
More tests
danielskovli Oct 21, 2025
46a0983
Some tweaks and fixes to runtime functionality
danielskovli Oct 21, 2025
9b652c2
Merge branch 'main' into feat/pdf-service-task
bjorntore Oct 21, 2025
cb9b661
Merge branch 'main' into feat/pdf-service-task
bjorntore Oct 22, 2025
2da943b
Add AMQP and API host values to FiksIOSettings (#1504)
olavsorl Oct 22, 2025
318b9a9
Merge branch 'main' into feat/pdf-service-task
bjorntore Oct 22, 2025
ad4c17e
Service restructure, test fixing
danielskovli Oct 22, 2025
49a70c3
Merge remote-tracking branch 'origin/feature/fiks-io-client' into fea…
danielskovli Oct 22, 2025
db0dbe1
Lots of tweaks
danielskovli Oct 22, 2025
daaee48
Lots of testing and tweaks
danielskovli Oct 23, 2025
15f2d35
Le tests
danielskovli Oct 23, 2025
f74c7b4
Adds arkivmelding validation and some other tests, along with loads o…
danielskovli Oct 24, 2025
683fa1b
Removes unnecessary MP+LoggerFactory from FiksIOClient. This is alrea…
danielskovli Oct 25, 2025
3028c75
Testing, tweaks
danielskovli Oct 25, 2025
348ba1e
More testing
danielskovli Oct 26, 2025
6700162
Fixes disposal race?
danielskovli Oct 26, 2025
5b982ca
Removes todo list
danielskovli Oct 26, 2025
ecb23cf
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Oct 26, 2025
1c3d38e
Ensures non-empty values for config-bound items
danielskovli Oct 27, 2025
5df2e71
CSharpier didnt run :-/
danielskovli Oct 27, 2025
5d30397
Merge branch 'main' into feat/pdf-service-task
bjorntore Oct 27, 2025
2be9d0f
Merge remote-tracking branch 'origin/feat/pdf-service-task' into feat…
danielskovli Oct 27, 2025
cce270f
Moves Fiks Arkiv shipment logic to Service Tasks
danielskovli Oct 28, 2025
6e7a7db
Fixes a couple of tests
danielskovli Oct 28, 2025
2663934
Fixes remaining tests
danielskovli Oct 29, 2025
a510068
Updated pub api test result
danielskovli Oct 29, 2025
33ce78c
Merge branch 'main' into feat/pdf-service-task
bjorntore Oct 29, 2025
fa043be
Unit test custom pdf file name.
bjorntore Oct 29, 2025
407c7d6
Smidge more testing
danielskovli Oct 29, 2025
0d4f44a
Merge remote-tracking branch 'origin/feat/pdf-service-task' into feat…
danielskovli Oct 29, 2025
6470b1f
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Oct 30, 2025
d540068
CodeRabbit feedback
danielskovli Oct 31, 2025
8a6c02a
CodeRabbit feedback
danielskovli Oct 31, 2025
1bb1437
Moar feedback
danielskovli Oct 31, 2025
ca2e9f9
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Oct 31, 2025
4f22a04
Some service task tweaks
danielskovli Oct 31, 2025
a175866
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Oct 31, 2025
7f65c6e
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Oct 31, 2025
aede9a0
Reverts JsonIgnoreCondition.Never and fixes the relevant tests
danielskovli Oct 31, 2025
509a135
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Oct 31, 2025
c28937f
Avoids using deprecated method in IDataClient
danielskovli Oct 31, 2025
2866179
Fixes mock
danielskovli Oct 31, 2025
73c02b9
Update test/Altinn.App.Clients.Fiks.Tests/FiksArkiv/FiksArkivServiceT…
danielskovli Nov 3, 2025
f9f6f64
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Nov 3, 2025
189206c
Empty-string checks for success/error actions
danielskovli Nov 3, 2025
8b1e73b
Makes IFiksArkivHost public to enable ad-hoc shipments outside of Fik…
danielskovli Nov 5, 2025
e4b4b86
CodeRabbit feedback
danielskovli Nov 5, 2025
85c584f
public API snapshot tests
martinothamar Nov 6, 2025
13276dd
cleanup todos
martinothamar Nov 6, 2025
295e8eb
Improves telemetry, removes IFiksArkivServiceTask interface, updates …
danielskovli Nov 6, 2025
7d3d34a
Merge remote-tracking branch 'origin/main' into feature/fiks-io-client
danielskovli Nov 6, 2025
37b8c07
Cleans up PlatformHttpException. Current implementation is good enoug…
danielskovli Nov 6, 2025
7fca75e
PR feedback
danielskovli Nov 6, 2025
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
3 changes: 3 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,9 @@ dotnet_diagnostic.CA1720.severity = suggestion
# CA1816: Call GC.SuppressFinalize correctly
dotnet_diagnostic.CA1816.severity = warning

# CA1826: Use property instead of Linq Enumerable method
dotnet_code_quality.CA1826.exclude_ordefault_methods = true

[Program.cs]
dotnet_diagnostic.CA1050.severity = none
dotnet_diagnostic.S1118.severity = none
Expand Down
14 changes: 14 additions & 0 deletions AppLibDotnet.sln
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.App.Internal.Analyze
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.App.Analyzers", "src\Altinn.App.Analyzers\Altinn.App.Analyzers.csproj", "{9F956488-F123-48A2-B21A-2C2918E8B416}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.App.Clients.Fiks", "src\Altinn.App.Clients.Fiks\Altinn.App.Clients.Fiks.csproj", "{024AF273-AECF-4275-B123-05F8CE8C7AAC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.App.Clients.Fiks.Tests", "test\Altinn.App.Clients.Fiks.Tests\Altinn.App.Clients.Fiks.Tests.csproj", "{927BF3D3-24B9-40B0-B66C-4DA24A869622}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -58,6 +62,14 @@ Global
{9F956488-F123-48A2-B21A-2C2918E8B416}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9F956488-F123-48A2-B21A-2C2918E8B416}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9F956488-F123-48A2-B21A-2C2918E8B416}.Release|Any CPU.Build.0 = Release|Any CPU
{024AF273-AECF-4275-B123-05F8CE8C7AAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{024AF273-AECF-4275-B123-05F8CE8C7AAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{024AF273-AECF-4275-B123-05F8CE8C7AAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{024AF273-AECF-4275-B123-05F8CE8C7AAC}.Release|Any CPU.Build.0 = Release|Any CPU
{927BF3D3-24B9-40B0-B66C-4DA24A869622}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{927BF3D3-24B9-40B0-B66C-4DA24A869622}.Debug|Any CPU.Build.0 = Debug|Any CPU
{927BF3D3-24B9-40B0-B66C-4DA24A869622}.Release|Any CPU.ActiveCfg = Release|Any CPU
{927BF3D3-24B9-40B0-B66C-4DA24A869622}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -70,6 +82,8 @@ Global
{D5838692-2703-4E42-8802-6E1FA7F1B50B} = {6C8EB054-1747-4BAC-A637-754F304BCAFA}
{A43CE769-FAB0-49E7-BDD4-3FCA939E1E5A} = {7AD5FADE-607F-4D5F-8511-6647D0C1AA1C}
{9F956488-F123-48A2-B21A-2C2918E8B416} = {7AD5FADE-607F-4D5F-8511-6647D0C1AA1C}
{024AF273-AECF-4275-B123-05F8CE8C7AAC} = {7AD5FADE-607F-4D5F-8511-6647D0C1AA1C}
{927BF3D3-24B9-40B0-B66C-4DA24A869622} = {6C8EB054-1747-4BAC-A637-754F304BCAFA}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4584C6E1-D5B4-40B1-A8C4-CF4620EB0896}
Expand Down
5 changes: 5 additions & 0 deletions AppLibDotnet.sln.DotSettings
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IO/@EntryIndexedValue">IO</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=arkiv/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=arkivmelding/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=fiks/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
6 changes: 6 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,10 @@
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" />
<!-- End JWTCookieAuthentication deps -->
</ItemGroup>
<ItemGroup>
<PackageVersion Include="KS.Fiks.Arkiv.Models.V1" Version="1.0.7" />
<PackageVersion Include="KS.Fiks.IO.Client" Version="6.1.0" />
<PackageVersion Include="Polly.Extensions" Version="8.6.4" />
<PackageVersion Include="Polly.Testing" Version="8.6.4" />
</ItemGroup>
</Project>
14 changes: 13 additions & 1 deletion solutions/All.sln
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
Expand All @@ -23,6 +23,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.App.Api.Tests", "..\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.App.Integration.Tests", "..\test\Altinn.App.Integration.Tests\Altinn.App.Integration.Tests.csproj", "{0DE9F775-FE1A-4604-B239-4CFE4E105B1D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.App.Clients.Fiks", "..\src\Altinn.App.Clients.Fiks\Altinn.App.Clients.Fiks.csproj", "{B9EF324F-7223-484B-B9BC-C8F705431AE3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.App.Clients.Fiks.Tests", "..\test\Altinn.App.Clients.Fiks.Tests\Altinn.App.Clients.Fiks.Tests.csproj", "{4CCE3E2A-E12C-4382-9089-84A0275478AB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.App.SourceGenerator.Tests", "..\test\Altinn.App.SourceGenerator.Tests\Altinn.App.SourceGenerator.Tests.csproj", "{976E3CF9-26CC-4825-92F7-5EEBD99A8B6A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C5968C89-1529-42F3-B082-DC1184C18395}"
Expand Down Expand Up @@ -93,6 +97,14 @@ Global
{836CECBF-5518-4276-BE2C-B0F255BF19F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{836CECBF-5518-4276-BE2C-B0F255BF19F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{836CECBF-5518-4276-BE2C-B0F255BF19F2}.Release|Any CPU.Build.0 = Release|Any CPU
{B9EF324F-7223-484B-B9BC-C8F705431AE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9EF324F-7223-484B-B9BC-C8F705431AE3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9EF324F-7223-484B-B9BC-C8F705431AE3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9EF324F-7223-484B-B9BC-C8F705431AE3}.Release|Any CPU.Build.0 = Release|Any CPU
{4CCE3E2A-E12C-4382-9089-84A0275478AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4CCE3E2A-E12C-4382-9089-84A0275478AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4CCE3E2A-E12C-4382-9089-84A0275478AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4CCE3E2A-E12C-4382-9089-84A0275478AB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{D6C1901B-BED6-44AC-A061-5981A2DEB937} = {C5968C89-1529-42F3-B082-DC1184C18395}
Expand Down
22 changes: 10 additions & 12 deletions src/Altinn.App.Api/Extensions/ServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -151,12 +151,11 @@ IWebHostEnvironment env
public static IServiceCollection ConfigureMaskinportenClient(
this IServiceCollection services,
Action<MaskinportenSettings> configureOptions
)
{
services.AddOptions<MaskinportenSettings>().Configure(configureOptions).ValidateDataAnnotations();

return services;
}
) =>
Altinn.App.Core.Features.Maskinporten.Extensions.ServiceCollectionExtensions.ConfigureMaskinportenClient(
services,
configureOptions
);

/// <summary>
/// <p>Binds a <see cref="MaskinportenClient"/> configuration to the supplied config section path.</p>
Expand All @@ -168,12 +167,11 @@ Action<MaskinportenSettings> configureOptions
public static IServiceCollection ConfigureMaskinportenClient(
this IServiceCollection services,
string configSectionPath
)
{
services.AddOptions<MaskinportenSettings>().BindConfiguration(configSectionPath).ValidateDataAnnotations();

return services;
}
) =>
Altinn.App.Core.Features.Maskinporten.Extensions.ServiceCollectionExtensions.ConfigureMaskinportenClient(
services,
configSectionPath
);

/// <summary>
/// Adds Application Insights to the service collection.
Expand Down
26 changes: 26 additions & 0 deletions src/Altinn.App.Clients.Fiks/Altinn.App.Clients.Fiks.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<PackageTags>Altinn;Studio;App;Clients;Fiks</PackageTags>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="../Altinn.App.Core/Altinn.App.Core.csproj"/>
<ProjectReference Include="../Altinn.App.Api/Altinn.App.Api.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="KS.Fiks.Arkiv.Models.V1" />
<PackageReference Include="KS.Fiks.IO.Client" />
<PackageReference Include="Polly.Extensions" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="../Altinn.App.Internal.Analyzers/Altinn.App.Internal.Analyzers.csproj" PrivateAssets="all" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />
</ItemGroup>

<ItemGroup>
<InternalsVisibleTo Include="Altinn.App.Clients.Fiks.Tests" />
<InternalsVisibleTo Include="DynamicProxyGenAssembly2" />
</ItemGroup>
</Project>
175 changes: 175 additions & 0 deletions src/Altinn.App.Clients.Fiks/Configuration/FiksSetupBuilder.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
using Altinn.App.Clients.Fiks.Constants;
using Altinn.App.Clients.Fiks.Extensions;
using Altinn.App.Clients.Fiks.FiksArkiv;
using Altinn.App.Clients.Fiks.FiksArkiv.Models;
using Altinn.App.Clients.Fiks.FiksIO.Models;
using Altinn.App.Core.Features.Maskinporten.Extensions;
using Altinn.App.Core.Features.Maskinporten.Models;
using Microsoft.Extensions.DependencyInjection;
using Polly;
using Polly.DependencyInjection;

namespace Altinn.App.Clients.Fiks.Configuration;

internal abstract class FiksSetupBuilder(IServiceCollection services)
{
/// <inheritdoc cref="IFiksSetupBuilder{T}.WithFiksIOConfig(System.Action{Altinn.App.Clients.Fiks.FiksIO.Models.FiksIOSettings})"/>
protected FiksSetupBuilder ConfigureFiksIO(Action<FiksIOSettings> configureOptions)
{
services.ConfigureFiksIOClient(configureOptions);
return this;
}

/// <inheritdoc cref="IFiksSetupBuilder{T}.WithFiksIOConfig(string)"/>
protected FiksSetupBuilder ConfigureFiksIO(string configSectionPath)
{
services.ConfigureFiksIOClient(configSectionPath);
return this;
}

/// <summary>
/// Configures the Fiks Arkiv client with the provided options.
/// </summary>
/// <param name="configureOptions">Configuration delegate.</param>
/// <returns>The builder instance.</returns>
protected FiksSetupBuilder ConfigureFiksArkiv(Action<FiksArkivSettings> configureOptions)
{
services.ConfigureFiksArkiv(configureOptions);
return this;
}

/// <summary>
/// Configures the Fiks Arkiv client with the options from the specified configuration section.
/// </summary>
/// <param name="configSectionPath">Configuration section path.</param>
/// <returns>The builder instance.</returns>
protected FiksSetupBuilder ConfigureFiksArkiv(string configSectionPath)
{
services.ConfigureFiksArkiv(configSectionPath);
return this;
}

/// <inheritdoc cref="IFiksSetupBuilder{T}.WithMaskinportenConfig(System.Action{Altinn.App.Core.Features.Maskinporten.Models.MaskinportenSettings})"/>
protected FiksSetupBuilder ConfigureMaskinporten(Action<MaskinportenSettings> configureOptions)
{
services.ConfigureMaskinportenClient(configureOptions);
return this;
}

/// <inheritdoc cref="IFiksSetupBuilder{T}.WithMaskinportenConfig(string)"/>
protected FiksSetupBuilder ConfigureMaskinporten(string configSectionPath)
{
services.ConfigureMaskinportenClient(configSectionPath);
return this;
}

/// <summary>
/// Registers a custom message response handler for Fiks Arkiv messages.
/// </summary>
/// <typeparam name="THandler">The implementation of the message response handler.</typeparam>
/// <returns>The builder instance.</returns>
protected FiksSetupBuilder UseMessageResponseHandler<THandler>()
where THandler : IFiksArkivResponseHandler
{
services.AddTransient(typeof(IFiksArkivResponseHandler), typeof(THandler));
return this;
}

/// <summary>
/// Registers a custom payload generator for Fiks Arkiv messages.
/// </summary>
/// <typeparam name="TGenerator">The implementation of the message payload generator.</typeparam>
/// <returns>The builder instance.</returns>
protected FiksSetupBuilder UseMessagePayloadGenerator<TGenerator>()
where TGenerator : IFiksArkivPayloadGenerator
{
services.AddTransient(typeof(IFiksArkivPayloadGenerator), typeof(TGenerator));
return this;
}

/// <inheritdoc cref="IFiksSetupBuilder{T}.WithResiliencePipeline"/>
protected FiksSetupBuilder ConfigureResiliencePipeline(
Action<ResiliencePipelineBuilder<FiksIOMessageResponse>, AddResiliencePipelineContext<string>> configure
)
{
services.AddResiliencePipeline(FiksIOConstants.UserDefinedResiliencePipelineId, configure);
return this;
}

/// <inheritdoc cref="IFiksSetupBuilder{T}.CompleteSetup"/>
public IServiceCollection CompleteSetup() => services;
}

/// <summary>
/// Fiks IO setup builder.
/// </summary>
internal sealed class FiksIOSetupBuilder(IServiceCollection services) : FiksSetupBuilder(services), IFiksIOSetupBuilder
{
/// <inheritdoc />
public IFiksIOSetupBuilder WithFiksIOConfig(Action<FiksIOSettings> configureOptions) =>
(IFiksIOSetupBuilder)ConfigureFiksIO(configureOptions);

/// <inheritdoc />
public IFiksIOSetupBuilder WithFiksIOConfig(string configSectionPath) =>
(IFiksIOSetupBuilder)ConfigureFiksIO(configSectionPath);

/// <inheritdoc />
public IFiksIOSetupBuilder WithMaskinportenConfig(Action<MaskinportenSettings> configureOptions) =>
(IFiksIOSetupBuilder)ConfigureMaskinporten(configureOptions);

/// <inheritdoc />
public IFiksIOSetupBuilder WithMaskinportenConfig(string configSectionPath) =>
(IFiksIOSetupBuilder)ConfigureMaskinporten(configSectionPath);

/// <inheritdoc />
public IFiksIOSetupBuilder WithResiliencePipeline(
Action<ResiliencePipelineBuilder<FiksIOMessageResponse>, AddResiliencePipelineContext<string>> configure
) => (IFiksIOSetupBuilder)ConfigureResiliencePipeline(configure);
}

/// <summary>
/// Fiks Arkiv setup builder.
/// </summary>
internal sealed class FiksArkivSetupBuilder(IServiceCollection services)
: FiksSetupBuilder(services),
IFiksArkivSetupBuilder
{
/// <inheritdoc />
public IFiksArkivSetupBuilder WithFiksIOConfig(string configSectionPath) =>
(IFiksArkivSetupBuilder)ConfigureFiksIO(configSectionPath);

/// <inheritdoc />
public IFiksArkivSetupBuilder WithFiksIOConfig(Action<FiksIOSettings> configureOptions) =>
(IFiksArkivSetupBuilder)ConfigureFiksIO(configureOptions);

/// <inheritdoc />
public IFiksArkivSetupBuilder WithMaskinportenConfig(Action<MaskinportenSettings> configureOptions) =>
(IFiksArkivSetupBuilder)ConfigureMaskinporten(configureOptions);

/// <inheritdoc />
public IFiksArkivSetupBuilder WithMaskinportenConfig(string configSectionPath) =>
(IFiksArkivSetupBuilder)ConfigureMaskinporten(configSectionPath);

/// <inheritdoc />
public IFiksArkivSetupBuilder WithResiliencePipeline(
Action<ResiliencePipelineBuilder<FiksIOMessageResponse>, AddResiliencePipelineContext<string>> configure
) => (IFiksArkivSetupBuilder)ConfigureResiliencePipeline(configure);

/// <inheritdoc />
public IFiksArkivSetupBuilder WithFiksArkivConfig(Action<FiksArkivSettings> configureOptions) =>
(IFiksArkivSetupBuilder)ConfigureFiksArkiv(configureOptions);

/// <inheritdoc />
public IFiksArkivSetupBuilder WithFiksArkivConfig(string configSectionPath) =>
(IFiksArkivSetupBuilder)ConfigureFiksArkiv(configSectionPath);

/// <inheritdoc />
public IFiksArkivSetupBuilder WithResponseHandler<TMessageHandler>()
where TMessageHandler : IFiksArkivResponseHandler =>
(IFiksArkivSetupBuilder)UseMessageResponseHandler<TMessageHandler>();

/// <inheritdoc />
public IFiksArkivSetupBuilder WithPayloadGenerator<TMessageHandler>()
where TMessageHandler : IFiksArkivPayloadGenerator =>
(IFiksArkivSetupBuilder)UseMessagePayloadGenerator<TMessageHandler>();
}
Loading
Loading