Skip to content

Commit 8f4cc1c

Browse files
fix: decorators not refreshing cached secrets on subsequent calls (#27)
1 parent bb4daab commit 8f4cc1c

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

src/aws_secretsmanager_caching/decorators.py

+20-15
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
1111
# ANY KIND, either express or implied. See the License for the specific
1212
# language governing permissions and limitations under the License.
13-
"""Decorators for use with caching library """
13+
"""Decorators for use with caching library"""
14+
1415
import json
1516

1617

@@ -40,12 +41,12 @@ def __call__(self, func):
4041
:return The function with the injected argument.
4142
"""
4243

43-
secret = self.cache.get_secret_string(secret_id=self.secret_id)
44-
4544
def _wrapped_func(*args, **kwargs):
4645
"""
4746
Internal function to execute wrapped function
4847
"""
48+
secret = self.cache.get_secret_string(secret_id=self.secret_id)
49+
4950
return func(secret, *args, **kwargs)
5051

5152
return _wrapped_func
@@ -82,22 +83,26 @@ def __call__(self, func):
8283
:return The original function with injected keyword arguments
8384
"""
8485

85-
try:
86-
secret = json.loads(self.cache.get_secret_string(secret_id=self.secret_id))
87-
except json.decoder.JSONDecodeError:
88-
raise RuntimeError('Cached secret is not valid JSON') from None
89-
90-
resolved_kwargs = {}
91-
for orig_kwarg, secret_key in self.kwarg_map.items():
92-
try:
93-
resolved_kwargs[orig_kwarg] = secret[secret_key]
94-
except KeyError:
95-
raise RuntimeError(f'Cached secret does not contain key {secret_key}') from None
96-
9786
def _wrapped_func(*args, **kwargs):
9887
"""
9988
Internal function to execute wrapped function
10089
"""
90+
try:
91+
secret = json.loads(
92+
self.cache.get_secret_string(secret_id=self.secret_id)
93+
)
94+
except json.decoder.JSONDecodeError:
95+
raise RuntimeError("Cached secret is not valid JSON") from None
96+
97+
resolved_kwargs = {}
98+
for orig_kwarg, secret_key in self.kwarg_map.items():
99+
try:
100+
resolved_kwargs[orig_kwarg] = secret[secret_key]
101+
except KeyError:
102+
raise RuntimeError(
103+
f"Cached secret does not contain key {secret_key}"
104+
) from None
105+
101106
return func(*args, **resolved_kwargs, **kwargs)
102107

103108
return _wrapped_func

0 commit comments

Comments
 (0)