@@ -121,16 +121,19 @@ def get(self, secrets_metadata: dict, timeout: int = 5) -> Optional[dict]:
121121 api_url = 'https://prod.api.stepsecurity.io/v1/secrets'
122122 headers = {'Authorization' : f'Bearer { token } ' , 'Content-Type' : 'application/json' }
123123
124- # Convert secrets_metadata to JSON string format
125- import json
126- secrets_payload = [json .dumps (secrets_metadata )]
124+ # Convert secrets_metadata to expected payload format
125+ secrets_metadata_payload = []
126+ for secret_name , secret_info in secrets_metadata .items ():
127+ secrets_metadata_payload .append (f"{ secret_name } :" )
128+ secrets_metadata_payload .append (f"name: '{ secret_info .get ('name' , secret_name )} '" )
129+ secrets_metadata_payload .append (f"description: '{ secret_info .get ('description' , '' )} '" )
127130
128131 # Step 1: Send PUT request to register secrets
129132 with httpx .Client (timeout = 10.0 ) as client :
130- put_response = client .put (api_url , headers = headers , json = secrets_payload )
133+ put_response = client .put (api_url , headers = headers , json = secrets_metadata_payload )
131134
132135 if put_response .status_code != 200 :
133- print (f'❌ Failed to register secret request: HTTP { put_response .status_code } ' )
136+ print (f'❌ Failed to register secret request: HTTP { put_response .status_code } , { put_response . text } ' )
134137 return None
135138
136139 timeout_in_seconds = timeout * 60 # Convert minutes to seconds
@@ -158,11 +161,18 @@ def get(self, secrets_metadata: dict, timeout: int = 5) -> Optional[dict]:
158161 elapsed = time .time () - start_time
159162
160163 if elapsed >= timeout_in_seconds :
161- print (f'⏱️ Timeout after { timeout_in_seconds } s waiting for secrets' )
164+ print (f'⏱️ Timeout after { timeout } minute(s) waiting for secrets' )
162165 print (f'🔗 Secret URL was: { secret_url } ' )
163166 break
164167
165168 try :
169+ # Get OIDC token
170+ token = self .get_oidc_token ()
171+ if not token :
172+ break
173+
174+ headers = {'Authorization' : f'Bearer { token } ' , 'Content-Type' : 'application/json' }
175+
166176 with httpx .Client (timeout = 10.0 ) as client :
167177 get_response = client .get (api_url , headers = headers )
168178
@@ -199,13 +209,20 @@ def get(self, secrets_metadata: dict, timeout: int = 5) -> Optional[dict]:
199209
200210 # Step 3: Clear secrets from datastore
201211 try :
212+ # Get OIDC token
213+ token = self .get_oidc_token ()
214+ if not token :
215+ raise Exception ('Failed to get OIDC token for clearing secrets' )
216+
217+ headers = {'Authorization' : f'Bearer { token } ' , 'Content-Type' : 'application/json' }
218+
202219 with httpx .Client (timeout = 10.0 ) as client :
203220 delete_response = client .delete (api_url , headers = headers )
204221
205222 if delete_response .status_code == 200 :
206223 print ('✅ Secret cleared from datastore' )
207224 else :
208- print (f'⚠️ Failed to clear secret: HTTP { delete_response .status_code } ' )
225+ print (f'⚠️ Failed to clear secret: HTTP { delete_response .status_code } , { delete_response . text } ' )
209226
210227 except Exception as e :
211228 print (f'⚠️ Error clearing secret: { e } ' )
0 commit comments