Handle the case where the secret is not serialized as json (#3223)

This commit is contained in:
Teo Voinea 2023-06-23 15:35:21 -04:00 committed by GitHub
parent a941020a11
commit db1e489e55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 3 deletions

View File

@ -15,7 +15,7 @@ public interface ISecretsOperations {
return new SecretData<T>(new SecretAddress<T>(address));
}
public Task<T?> GetSecretValue<T>(ISecret<T> data);
public Task<T?> GetSecretValue<T>(ISecret<T> data) where T : class;
Task<Uri> StoreSecret(ISecret secret);
@ -52,14 +52,20 @@ public class SecretsOperations : ISecretsOperations {
};
}
public async Task<T?> GetSecretValue<T>(ISecret<T> data) {
public async Task<T?> GetSecretValue<T>(ISecret<T> data) where T : class {
switch ((data)) {
case SecretAddress<T> secretAddress:
var secretValue = (await GetSecret(secretAddress.Url))?.Value;
if (secretValue is null)
return default;
if (typeof(T) == typeof(string)) {
return secretValue as T;
}
return JsonSerializer.Deserialize<T>(secretValue, EntityConverter.GetJsonSerializerOptions());
case SecretValue<T> sValue:
return sValue.Value;

View File

@ -20,7 +20,7 @@ namespace Tests {
private readonly ConcurrentDictionary<Guid, string> _secrets = new();
public Task<T?> GetSecretValue<T>(ISecret<T> data) {
public Task<T?> GetSecretValue<T>(ISecret<T> data) where T : class {
switch (data) {
case SecretAddress<T> secretAddress:
var key = Guid.Parse(secretAddress.Url.Authority);