2
2
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
3
package com .oracle .cloud .spring .vault ;
4
4
5
+ import java .text .SimpleDateFormat ;
5
6
import java .util .ArrayList ;
6
- import java .util .Date ;
7
+ import java .util .Calendar ;
7
8
import java .util .List ;
8
9
9
10
import com .oracle .bmc .secrets .Secrets ;
29
30
* @see Vault
30
31
*/
31
32
public class VaultImpl implements Vault {
33
+ private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat ("yyyy-MM-dd" );
34
+
32
35
private final Vaults vaults ;
33
36
private final Secrets secrets ;
34
37
private final String vaultId ;
@@ -45,6 +48,11 @@ public VaultImpl(Vaults vaults, Secrets secrets, String vaultId, String compartm
45
48
this .compartmentId = compartmentId ;
46
49
}
47
50
51
+ /**
52
+ * Retrieves a secret by name.
53
+ * @param secretName The name of the secret.
54
+ * @return The secret bundle response.
55
+ */
48
56
@ Override
49
57
public GetSecretBundleByNameResponse getSecret (String secretName ) {
50
58
Assert .hasText (secretName , "secretName must not be empty" );
@@ -55,6 +63,12 @@ public GetSecretBundleByNameResponse getSecret(String secretName) {
55
63
return secrets .getSecretBundleByName (request );
56
64
}
57
65
66
+ /**
67
+ * Create a secret.
68
+ * @param secretName The name of the secret being created.
69
+ * @param body The secret body to create.
70
+ * @return A create secret response.
71
+ */
58
72
@ Override
59
73
public CreateSecretResponse createSecret (String secretName , CreateSecretDetails body ) {
60
74
Assert .hasText (secretName , "secretName must not be empty" );
@@ -69,15 +83,24 @@ public CreateSecretResponse createSecret(String secretName, CreateSecretDetails
69
83
return vaults .createSecret (request );
70
84
}
71
85
86
+ /**
87
+ * Schedule the deletion of a secret.
88
+ * @param secretName The name of the secret to schedule deletion for.
89
+ * @param deleteAfterDays The number of days after which the secret will be deleted. May be between 1 and 30.
90
+ * @return A delete secret respones.
91
+ */
72
92
@ Override
73
- public ScheduleSecretDeletionResponse scheduleSecretDeletion (String secretName , Date timeOfDeletion ) {
93
+ public ScheduleSecretDeletionResponse scheduleSecretDeletion (String secretName , int deleteAfterDays ) {
74
94
Assert .hasText (secretName , "secretName must not be empty" );
75
- Assert .notNull (timeOfDeletion , "timeOfDeletion must not be null" );
95
+ Assert .isTrue (deleteAfterDays >= 1 && deleteAfterDays <= 30 , "deleteAfterDays must be between 1 and 30" );
96
+
97
+ Calendar cal = Calendar .getInstance ();
98
+ cal .add (Calendar .DAY_OF_YEAR , deleteAfterDays );
76
99
String secretId = getSecret (secretName )
77
100
.getSecretBundle ()
78
101
.getSecretId ();
79
102
ScheduleSecretDeletionDetails body = ScheduleSecretDeletionDetails .builder ()
80
- .timeOfDeletion (timeOfDeletion )
103
+ .timeOfDeletion (cal . getTime () )
81
104
.build ();
82
105
ScheduleSecretDeletionRequest request = ScheduleSecretDeletionRequest .builder ()
83
106
.secretId (secretId )
@@ -86,6 +109,12 @@ public ScheduleSecretDeletionResponse scheduleSecretDeletion(String secretName,
86
109
return vaults .scheduleSecretDeletion (request );
87
110
}
88
111
112
+ /**
113
+ * Update a secret content.
114
+ * @param secretName The name of the secret to update.
115
+ * @param body The secret body to update.
116
+ * @return An update secret response.
117
+ */
89
118
@ Override
90
119
public UpdateSecretResponse updateSecret (String secretName , UpdateSecretDetails body ) {
91
120
Assert .hasText (secretName , "secretName must not be empty" );
@@ -100,6 +129,10 @@ public UpdateSecretResponse updateSecret(String secretName, UpdateSecretDetails
100
129
return vaults .updateSecret (request );
101
130
}
102
131
132
+ /**
133
+ * Lists all secrets in the Vault.
134
+ * @return A list of secret summaries.
135
+ */
103
136
@ Override
104
137
public List <SecretSummary > listSecrets () {
105
138
List <SecretSummary > summaries = new ArrayList <>();
0 commit comments