11<?php
22
3+ require_once __DIR__ . '/errors.php ' ;
4+
35function handleGetObject ($ params )
46{
57 // Get ClientID from HTTP header
68 $ clientId = $ _SERVER ['HTTP_X_CLIENT_ID ' ] ?? $ _SERVER ['HTTP_CLIENTID ' ] ?? null ;
79
810 if (empty ($ clientId )) {
9- http_response_code (400 );
10- return json_encode (['error ' => 'ClientID header is required ' ]);
11+ return GenericServerError ("ClientID header is required " , 400 );
1112 }
1213
1314 # Get the S3EncryptionClient from the client_cache
1415 $ s3ecClientTuple = getCachedClient ($ clientId );
1516 if ($ s3ecClientTuple == null ) {
16- $ s3ecClientTuple = createDefaultClientTuple ( );
17+ return GenericServerError ( " No client found for ClientID: " . $ clientId , 404 );
1718 }
1819
1920 $ metadata = $ _SERVER ['HTTP_CONTENT_METADATA ' ] ?? '' ;
@@ -23,6 +24,10 @@ function handleGetObject($params)
2324 $ bucket = $ params ['bucket ' ] ?? null ;
2425 $ key = $ params ['key ' ] ?? null ;
2526
27+ if (is_null ($ bucket ) || is_null ($ key )) {
28+ return GenericServerError ("Invalidb bucket or key parameters " , 400 );
29+ }
30+
2631 $ s3ec = $ s3ecClientTuple ["encryptionClient " ];
2732 $ materialProvider = $ s3ecClientTuple ["materialsProvider " ];
2833 $ clientConfig = $ s3ecClientTuple ["config " ];
@@ -62,22 +67,19 @@ function handleGetObject($params)
6267 return $ body ;
6368 } catch (InvalidArgumentException $ e ) {
6469 // Clean up output buffer if still active
65- if (ob_get_level ())
70+ if (ob_get_level ()) {
6671 ob_end_clean ();
67- http_response_code ( 400 );
68- return json_encode ([ ' error ' => ' Invalid argument: ' . $ e ->getMessage ()] );
72+ }
73+ return GenericServerError ( " Invalid argument: " . $ e ->getMessage (), 400 );
6974 } catch (Exception $ e ) {
7075 // Clean up output buffer if still active
71- if (ob_get_level ())
76+ if (ob_get_level ()) {
7277 ob_end_clean ();
73- http_response_code ( 500 );
78+ }
7479 if (strpos ($ e ->getMessage (), "@SecurityProfile=V2 " ) !== false ) {
75- return json_encode ([
76- "__type " => "software.amazon.encryption.s3#S3EncryptionClientError " ,
77- "message " => $ e ->getMessage () . "Enable legacy wrapping algorithms to use legacy key wrapping algorithm: kms " ,
78- ]);
80+ return S3EncryptionClientError ($ e ->getMessage () . " " . "Enable legacy wrapping algorithms to use legacy key wrapping algorithm: kms " );
7981 } else {
80- return json_encode ([ ' error ' => ' Server error: ' . $ e ->getMessage ()] );
82+ return GenericServerError ( " Server argument: " . $ e ->getMessage (), 500 );
8183 }
8284 }
8385}
0 commit comments