@@ -362,9 +362,15 @@ func DeleteFile(ctx *context.APIContext, apiOpts api.DeleteFileOptions) {
362362 // responses:
363363 // "200":
364364 // "$ref": "#/responses/FileDeleteResponse"
365+ // "400":
366+ // "$ref": "#/responses/error"
367+ // "403":
368+ // "$ref": "#/responses/error"
369+ // "404":
370+ // "$ref": "#/responses/error"
365371
366372 if ! CanWriteFiles (ctx .Repo ) {
367- ctx .Error (http .StatusInternalServerError , "DeleteFile" , models.ErrUserDoesNotHaveAccessToRepo {
373+ ctx .Error (http .StatusForbidden , "DeleteFile" , models.ErrUserDoesNotHaveAccessToRepo {
368374 UserID : ctx .User .ID ,
369375 RepoName : ctx .Repo .Repository .LowerName ,
370376 })
@@ -402,9 +408,23 @@ func DeleteFile(ctx *context.APIContext, apiOpts api.DeleteFileOptions) {
402408 }
403409
404410 if fileResponse , err := repofiles .DeleteRepoFile (ctx .Repo .Repository , ctx .User , opts ); err != nil {
411+ if git .IsErrBranchNotExist (err ) || models .IsErrRepoFileDoesNotExist (err ) || git .IsErrNotExist (err ) {
412+ ctx .Error (http .StatusNotFound , "DeleteFile" , err )
413+ return
414+ } else if models .IsErrBranchAlreadyExists (err ) ||
415+ models .IsErrFilenameInvalid (err ) ||
416+ models .IsErrSHADoesNotMatch (err ) ||
417+ models .IsErrCommitIDDoesNotMatch (err ) ||
418+ models .IsErrSHAOrCommitIDNotProvided (err ) {
419+ ctx .Error (http .StatusBadRequest , "DeleteFile" , err )
420+ return
421+ } else if models .IsErrUserCannotCommit (err ) {
422+ ctx .Error (http .StatusForbidden , "DeleteFile" , err )
423+ return
424+ }
405425 ctx .Error (http .StatusInternalServerError , "DeleteFile" , err )
406426 } else {
407- ctx .JSON (http .StatusOK , fileResponse )
427+ ctx .JSON (http .StatusOK , fileResponse ) // FIXME on APIv2: return http.StatusNoContent
408428 }
409429}
410430
@@ -439,6 +459,8 @@ func GetContents(ctx *context.APIContext) {
439459 // responses:
440460 // "200":
441461 // "$ref": "#/responses/ContentsResponse"
462+ // "404":
463+ // "$ref": "#/responses/notFound"
442464
443465 if ! CanReadFiles (ctx .Repo ) {
444466 ctx .Error (http .StatusInternalServerError , "GetContentsOrList" , models.ErrUserDoesNotHaveAccessToRepo {
@@ -452,6 +474,10 @@ func GetContents(ctx *context.APIContext) {
452474 ref := ctx .QueryTrim ("ref" )
453475
454476 if fileList , err := repofiles .GetContentsOrList (ctx .Repo .Repository , treePath , ref ); err != nil {
477+ if git .IsErrNotExist (err ) {
478+ ctx .NotFound ("GetContentsOrList" , err )
479+ return
480+ }
455481 ctx .Error (http .StatusInternalServerError , "GetContentsOrList" , err )
456482 } else {
457483 ctx .JSON (http .StatusOK , fileList )
@@ -484,6 +510,8 @@ func GetContentsList(ctx *context.APIContext) {
484510 // responses:
485511 // "200":
486512 // "$ref": "#/responses/ContentsListResponse"
513+ // "404":
514+ // "$ref": "#/responses/notFound"
487515
488516 // same as GetContents(), this function is here because swagger fails if path is empty in GetContents() interface
489517 GetContents (ctx )
0 commit comments