using System; using System.IO; using Amazon; using Amazon.SecretsManager; using Amazon.SecretsManager.Model; using Newtonsoft.Json; using classes; public class SecretsManagerService { public DbUserModel GetDBSecret() { string dbUserSecret = ""; string secretName = Constants.DBARN; MemoryStream memoryStream = new MemoryStream(); IAmazonSecretsManager client = new AmazonSecretsManagerClient(RegionEndpoint.GetBySystemName(Constants.REGION)); GetSecretValueRequest request = new GetSecretValueRequest(); request.SecretId = secretName; request.VersionStage = "AWSCURRENT"; // VersionStage defaults to AWSCURRENT if unspecified. GetSecretValueResponse response = null; // In this sample we only handle the specific exceptions for the 'GetSecretValue' API. // See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html try { response = client.GetSecretValueAsync(request).Result; } catch (Exception ex) { // We can't find the resource that you asked for. throw ex; } // Decrypts secret using the associated KMS CMK. // Depending on whether the secret is a string or binary, one of these fields will be populated. if (response.SecretString != null) { dbUserSecret = response.SecretString; return JsonConvert.DeserializeObject(dbUserSecret); } else { memoryStream = response.SecretBinary; StreamReader reader = new StreamReader(memoryStream); string decodedBinarySecret = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(reader.ReadToEnd())); return JsonConvert.DeserializeObject(decodedBinarySecret); } } public SesUserModel GetSesUser() { string sesUserSecret = ""; string secretName = Constants.SESARN; MemoryStream memoryStream = new MemoryStream(); IAmazonSecretsManager client = new AmazonSecretsManagerClient(RegionEndpoint.GetBySystemName(Constants.REGION)); GetSecretValueRequest request = new GetSecretValueRequest(); request.SecretId = secretName; request.VersionStage = "AWSCURRENT"; // VersionStage defaults to AWSCURRENT if unspecified. GetSecretValueResponse response = null; try { response = client.GetSecretValueAsync(request).Result; } catch (Exception ae) { // More than one of the above exceptions were triggered. throw ae; } if (response.SecretString != null) { sesUserSecret = response.SecretString; return JsonConvert.DeserializeObject(sesUserSecret); } else { memoryStream = response.SecretBinary; StreamReader reader = new StreamReader(memoryStream); string decodedBinarySecret = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(reader.ReadToEnd())); return JsonConvert.DeserializeObject(decodedBinarySecret); } } public EndPointModel GetAPIEndPoint() { string apiEndPointSecret = ""; string secretName = "pmf-enatis"; MemoryStream memoryStream = new MemoryStream(); IAmazonSecretsManager client = new AmazonSecretsManagerClient(RegionEndpoint.GetBySystemName(Constants.REGION)); GetSecretValueRequest request = new GetSecretValueRequest(); request.SecretId = secretName; request.VersionStage = "AWSCURRENT"; // VersionStage defaults to AWSCURRENT if unspecified. GetSecretValueResponse response = null; try { response = client.GetSecretValueAsync(request).Result; } catch (Exception ex) { throw ex; } if (response.SecretString != null) { apiEndPointSecret = response.SecretString; return JsonConvert.DeserializeObject(apiEndPointSecret); } else { memoryStream = response.SecretBinary; StreamReader reader = new StreamReader(memoryStream); string decodedBinarySecret = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(reader.ReadToEnd())); return JsonConvert.DeserializeObject(decodedBinarySecret); } } public BucketSecretModel GetBucket() { string bucketSecret = ""; string secretName = "pmf-invoices-bucket"; MemoryStream memoryStream = new MemoryStream(); IAmazonSecretsManager client = new AmazonSecretsManagerClient(RegionEndpoint.GetBySystemName(Constants.REGION)); GetSecretValueRequest request = new GetSecretValueRequest(); request.SecretId = secretName; request.VersionStage = "AWSCURRENT"; // VersionStage defaults to AWSCURRENT if unspecified. GetSecretValueResponse response = null; try { response = client.GetSecretValueAsync(request).Result; } catch (Exception ex) { throw ex; } if (response.SecretString != null) { bucketSecret = response.SecretString; return JsonConvert.DeserializeObject(bucketSecret); } else { memoryStream = response.SecretBinary; StreamReader reader = new StreamReader(memoryStream); string decodedBinarySecret = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(reader.ReadToEnd())); return JsonConvert.DeserializeObject(decodedBinarySecret); } } public PdfSecretModel GetPdfServer() { string serverSecret = ""; string secretName = "pmf-pdf-server"; MemoryStream memoryStream = new MemoryStream(); IAmazonSecretsManager client = new AmazonSecretsManagerClient(RegionEndpoint.GetBySystemName(Constants.REGION)); GetSecretValueRequest request = new GetSecretValueRequest(); request.SecretId = secretName; request.VersionStage = "AWSCURRENT"; // VersionStage defaults to AWSCURRENT if unspecified. GetSecretValueResponse response = null; try { response = client.GetSecretValueAsync(request).Result; } catch (Exception ex) { throw ex; } if (response.SecretString != null) { serverSecret = response.SecretString; return JsonConvert.DeserializeObject(serverSecret); } else { memoryStream = response.SecretBinary; StreamReader reader = new StreamReader(memoryStream); string decodedBinarySecret = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(reader.ReadToEnd())); return JsonConvert.DeserializeObject(decodedBinarySecret); } } public MailAddressModel GetTMTEmail() { string mailSecret = ""; string secretName = "pmf-mail"; MemoryStream memoryStream = new MemoryStream(); IAmazonSecretsManager client = new AmazonSecretsManagerClient(RegionEndpoint.GetBySystemName(Constants.REGION)); GetSecretValueRequest request = new GetSecretValueRequest(); request.SecretId = secretName; request.VersionStage = "AWSCURRENT"; // VersionStage defaults to AWSCURRENT if unspecified. GetSecretValueResponse response = null; try { response = client.GetSecretValueAsync(request).Result; } catch (Exception ex) { throw ex; } if (response.SecretString != null) { mailSecret = response.SecretString; return JsonConvert.DeserializeObject(mailSecret); } else { memoryStream = response.SecretBinary; StreamReader reader = new StreamReader(memoryStream); string decodedBinarySecret = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(reader.ReadToEnd())); return JsonConvert.DeserializeObject(decodedBinarySecret); } } }