Skip to content

Mulighet for å legge til request-interceptors i API-kall#246

Draft
kklocker wants to merge 8 commits into
digipost:mainfrom
kklocker:feature/request-interceptors
Draft

Mulighet for å legge til request-interceptors i API-kall#246
kklocker wants to merge 8 commits into
digipost:mainfrom
kklocker:feature/request-interceptors

Conversation

@kklocker

Copy link
Copy Markdown

Hei! Driver og er litt i utforskningsfasen på integrasjon med digipost-api på jobb.

En ting jeg umiddelbart merket manglet var mulighet til å fange opp requester "og slikt" - vi har det ofte som pattern på eksterne integrasjoner at vi legger på interne sporingsmekanismer hvor vi tar vare på diverse informasjon om selve requesten.

Fikk claude til å starte litt arbeid her basert på en commit jeg hadde i desember. Jeg har ikke kjørt noe av dette, ei heller vet jeg hvordan jeg evt skulle testet det. Tar gjerne i mot tilbakemeldinger.

kklocker and others added 2 commits December 19, 2025 14:00
- Add IRequestInterceptor interface with OnBeforeRequestAsync / OnAfterResponseAsync
- Add RequestInterceptorBase convenience base class (override only what you need)
- Add InterceptorHandler (DelegatingHandler) that runs interceptors FIFO pre-request, LIFO post-response
- Wire InterceptorHandler into DigipostClient.GetHttpClient pipeline
- Add ClientConfig.RequestInterceptors property for consumer registration
- Add Digipost.Api.Client.Interceptors.Tests project with 7 passing xUnit tests:
  - Pre-request interceptor is called
  - Post-response interceptor is called
  - Multiple interceptors run FIFO (pre) and LIFO (post)
  - Interceptors can modify request headers
  - Interceptors can inspect response status
  - Base class with only OnBeforeRequestAsync overridden
  - Base class with only OnAfterResponseAsync overridden
- Bump all test projects from net9.0 to net10.0 (stable runtime on this machine)
- Update xunit/test SDK packages for net10.0 compatibility

Co-authored-by: Claude <noreply@anthropic.com>
@eivinhb

eivinhb commented Apr 8, 2026

Copy link
Copy Markdown
Member

Jeg syns det er en interessant tanke dette her. I DigipostClient har vi constructorer som tar inn ILoggerFactory for å sette opp en request handler for logging. Kan hende vi kunne bygget dette om til å basere seg på en slik interceptor arkitektur.
Først og fremst vil jeg helst at du rydder i alle de oppgraderingene som gjøres. Det gjør PR-en litt rotete og vanskelig å lese. Vi kan se på om vi kan oppgradere til .NET10 separat. Det er vel tid for det.

Så syns jeg ikke at Claude er så god på å lage tester. Den er veldig glad i lage tester som er utrolig tett knyttet til dens egen implementasjon. Disse kan du bare kaste imho.
Så må jo dette inn i DigipostClient på en måte. Jeg ser du utvider ClientConfig til dette. Men kanskje en builder er bedre?

For å teste finnes det Smoke-tester. Disse kan du bruke mot din test-virksomhet i testmiljøet til Digipost om du har fått opprettet deg det.

@kklocker

kklocker commented Apr 8, 2026

Copy link
Copy Markdown
Author

Hei @eivinhb , takk for tilbakemelding. Helt enig, versjons- og pakkeoppgraderinger burde vært fjernet - skal få en venn (TM) til å rydde opp litt før jeg sjekker ut.

Tror jeg bare har tilgang til test-miljø gjennom den gamle sftp-løsningen.
Kan se litt på oppbyggingen av klienten, men oppsettet var litt uvant, så gikk for raskeste måte å skohorne det inn på.

Er det noen som har noen tanker om design på løsningen her hos dere? Tanken min var å minimere API-endringer

@kklocker

Copy link
Copy Markdown
Author

@eivinhb Har litt problemer med å bygge lokalt her jeg - er det noe man må sette opp før man starter utvikling her?

Får blant annet 1>CSC : error CS7027: Error signing output with public key from file '..\signingkey.snk' -- File not found.
når jeg forsøker solution build.

Prøvde å kjøre den kommandoen som står i readme også, men det gjør vondt verre

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants