From c990d0382bdb2a1d87914838dbc3aa1da426e857 Mon Sep 17 00:00:00 2001 From: RobIII Date: Mon, 19 Feb 2024 14:10:41 +0100 Subject: [PATCH] Add logo & package info. --- .../AutoRefreshTokenHttpMessageHandler.csproj | 24 ++++++++++++++++++ README.md | 8 ++++-- icon.png | Bin 0 -> 491 bytes logo.png | Bin 0 -> 3889 bytes 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 icon.png create mode 100644 logo.png diff --git a/AutoRefreshTokenHttpMessageHandler/AutoRefreshTokenHttpMessageHandler.csproj b/AutoRefreshTokenHttpMessageHandler/AutoRefreshTokenHttpMessageHandler.csproj index 87d098d..eea4a72 100644 --- a/AutoRefreshTokenHttpMessageHandler/AutoRefreshTokenHttpMessageHandler.csproj +++ b/AutoRefreshTokenHttpMessageHandler/AutoRefreshTokenHttpMessageHandler.csproj @@ -7,8 +7,32 @@ latest true latest + True + AutoRefreshTokenHttpMessageHandler + RobIII + Devcorner.nl + A thread-safe implementation of a DelegatingHandler that automatically refreshes the access token when the access token expires whilst **not** serializing all requests. + (C) 2024 Devcorner.nl + https://github.com/RobThree/AutoRefreshTokenHttpMessageHandler + README.md + https://github.com/RobThree/AutoRefreshTokenHttpMessageHandler.git + git + accesstoken;refreshtoken;delegatinghandler + MIT + logo.png + + + True + \ + + + True + \ + + + diff --git a/README.md b/README.md index 4e191fb..03e53a7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# AutoRefreshTokenHttpMessageHandler +# ![icon.png](icon.png) AutoRefreshTokenHttpMessageHandler This is a thread-safe implementation of a `DelegatingHandler` that automatically refreshes the access token when the access token expires whilst **not** serializing all requests. Most implementations use a lock internally which essentially makes all async actions synchronous again. This implementation only blocks during the actual refresh. Inspired by Bryan Helms' [Thread-Safe Auth Token Store Using ConcurrentDictionary and AsyncLazy](https://bryanhelms.com/2021/03/29/thread-safe-auth-token-store-using-concurrentdictionary-and-asynclazy.html). @@ -73,4 +73,8 @@ builder.Services.AddHttpClient() "TokenEndpoint": "http://auth.myservice.com/realms/myapi/protocol/openid-connect/token" } } -``` \ No newline at end of file +``` + +## Attribution + +Icon by [Freepik](https://www.freepik.com/icon/key_908229) \ No newline at end of file diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ccf17ef7830352619c6fa1b9f6360065848058b1 GIT binary patch literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA-45^xaRt&@Sy@g_PXD&){=cL9 z|B`NLw$1;uy8n0S{=W@I`@rJ+b^hPc`+rFH{~^8q=fUhFdjD_h{J*XL|CsLo`wE$v znRa$||2KiOxVyXmKcjo<)ahf#PJFqf*N|iJ?TX>|t@@icZ*6I5i7v^Gj*dRM*u~k& z_SPz!ckkYPezo7Nf5Y0fYu&n6@7uX>{`~ppw@v8p??1Grd*PHi=j_^9eKk&*Rh)Y& zOr{qV78d$7JHj4-xmn(ud&LCwW`jr+&16%#!|zZdkkK!H<)#^fe+;8 zk|4iehK9d?HVFUw@b>BT%ZGMMpVZw|o#JMw!7;I6)&!uM<(@8%AsXkC6A}`pFfdDc z3M3>oFs<@l5qVQe+9PU4qQ{MhRWDz9ym~E^KV_AT#EJy36OD~rn&(W7HeL%mu9ld! zF7Jhg=E{@Djw>DM%AB%nw~0VOSCYpLuV%*S7Cwg@Jv}`cIU1U5bR3*m)D|jov#;TK zvuRV40jI8}#e-+8LQEW-)v0N&uCA#aDw`$lXrx-J^DlUMPJpw{Xa4RThQ`Gl%`Ptm apEDTis9xr;?4J*GGJ~h9pUXO@geCwOFx{sB literal 0 HcmV?d00001 diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bfde4cff9edfc7bb4f5e096f8ee868d013ae40c1 GIT binary patch literal 3889 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 literal 0 HcmV?d00001