@@ -21,6 +21,7 @@ use crate::auth::{check_oci_bandwidth, record_oci_bandwidth};
2121use crate :: auth:: {
2222 require_pull_access, require_push_access, resolve_project, validate_push_access,
2323} ;
24+ use crate :: error:: storage_error;
2425use crate :: response:: { DOCKER_CONTENT_DIGEST , OCI_SUBJECT , oci_cors_headers} ;
2526
2627/// Parse a reference string, returning the correct OCI error code on failure.
@@ -63,10 +64,7 @@ async fn resolve_reference(
6364) -> Result < Digest , HttpError > {
6465 match reference {
6566 Reference :: Digest ( d) => Ok ( d. clone ( ) ) ,
66- Reference :: Tag ( t) => storage
67- . resolve_tag ( name, t)
68- . await
69- . map_err ( |e| crate :: error:: into_http_error ( OciError :: from ( e) ) ) ,
67+ Reference :: Tag ( t) => storage. resolve_tag ( name, t) . await . map_err ( storage_error) ,
7068 }
7169}
7270
@@ -127,7 +125,7 @@ pub async fn oci_manifest_exists(
127125 let manifest = storage
128126 . get_manifest_by_digest ( & project_uuid, & digest)
129127 . await
130- . map_err ( |e| crate :: error :: into_http_error ( OciError :: from ( e ) ) ) ?;
128+ . map_err ( storage_error ) ?;
131129
132130 // Determine content type from typed manifest
133131 let parsed = Manifest :: from_bytes ( & manifest) . map_err ( |e| {
@@ -188,7 +186,7 @@ pub async fn oci_manifest_get(
188186 let manifest = storage
189187 . get_manifest_by_digest ( & project_uuid, & digest)
190188 . await
191- . map_err ( |e| crate :: error :: into_http_error ( OciError :: from ( e ) ) ) ?;
189+ . map_err ( storage_error ) ?;
192190
193191 // Record bandwidth usage
194192 #[ cfg( feature = "plus" ) ]
@@ -314,7 +312,7 @@ pub async fn oci_manifest_put(
314312 & parsed_manifest,
315313 )
316314 . await
317- . map_err ( |e| crate :: error :: into_http_error ( OciError :: from ( e ) ) ) ?;
315+ . map_err ( storage_error ) ?;
318316
319317 // Record bandwidth usage
320318 #[ cfg( feature = "plus" ) ]
@@ -396,7 +394,7 @@ async fn verify_referenced_blobs(
396394 let exists = storage
397395 . blob_exists ( repository, & digest)
398396 . await
399- . map_err ( |e| crate :: error :: into_http_error ( OciError :: from ( e ) ) ) ?;
397+ . map_err ( storage_error ) ?;
400398 if !exists {
401399 return Err ( crate :: error:: into_http_error (
402400 OciError :: ManifestBlobUnknown { digest : digest_str } ,
@@ -442,7 +440,7 @@ pub async fn oci_manifest_delete(
442440 Reference :: Tag ( tag) => storage
443441 . resolve_tag ( & project_uuid, tag)
444442 . await
445- . map_err ( |e| crate :: error :: into_http_error ( OciError :: from ( e ) ) ) ?,
443+ . map_err ( storage_error ) ?,
446444 } ;
447445
448446 match & reference {
@@ -451,14 +449,14 @@ pub async fn oci_manifest_delete(
451449 storage
452450 . delete_manifest ( & project_uuid, digest)
453451 . await
454- . map_err ( |e| crate :: error :: into_http_error ( OciError :: from ( e ) ) ) ?;
452+ . map_err ( storage_error ) ?;
455453 } ,
456454 Reference :: Tag ( tag) => {
457455 // Delete by tag - delete the tag link only (manifest may still exist)
458456 storage
459457 . delete_tag ( & project_uuid, tag)
460458 . await
461- . map_err ( |e| crate :: error :: into_http_error ( OciError :: from ( e ) ) ) ?;
459+ . map_err ( storage_error ) ?;
462460 } ,
463461 }
464462
0 commit comments