@@ -362,9 +362,15 @@ func DeleteFile(ctx *context.APIContext, apiOpts api.DeleteFileOptions) {
362
362
// responses:
363
363
// "200":
364
364
// "$ref": "#/responses/FileDeleteResponse"
365
+ // "400":
366
+ // "$ref": "#/responses/error"
367
+ // "403":
368
+ // "$ref": "#/responses/error"
369
+ // "404":
370
+ // "$ref": "#/responses/error"
365
371
366
372
if ! CanWriteFiles (ctx .Repo ) {
367
- ctx .Error (http .StatusInternalServerError , "DeleteFile" , models.ErrUserDoesNotHaveAccessToRepo {
373
+ ctx .Error (http .StatusForbidden , "DeleteFile" , models.ErrUserDoesNotHaveAccessToRepo {
368
374
UserID : ctx .User .ID ,
369
375
RepoName : ctx .Repo .Repository .LowerName ,
370
376
})
@@ -402,9 +408,23 @@ func DeleteFile(ctx *context.APIContext, apiOpts api.DeleteFileOptions) {
402
408
}
403
409
404
410
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
+ }
405
425
ctx .Error (http .StatusInternalServerError , "DeleteFile" , err )
406
426
} else {
407
- ctx .JSON (http .StatusOK , fileResponse )
427
+ ctx .JSON (http .StatusOK , fileResponse ) // FIXME on APIv2: return http.StatusNoContent
408
428
}
409
429
}
410
430
@@ -439,6 +459,8 @@ func GetContents(ctx *context.APIContext) {
439
459
// responses:
440
460
// "200":
441
461
// "$ref": "#/responses/ContentsResponse"
462
+ // "404":
463
+ // "$ref": "#/responses/notFound"
442
464
443
465
if ! CanReadFiles (ctx .Repo ) {
444
466
ctx .Error (http .StatusInternalServerError , "GetContentsOrList" , models.ErrUserDoesNotHaveAccessToRepo {
@@ -452,6 +474,10 @@ func GetContents(ctx *context.APIContext) {
452
474
ref := ctx .QueryTrim ("ref" )
453
475
454
476
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
+ }
455
481
ctx .Error (http .StatusInternalServerError , "GetContentsOrList" , err )
456
482
} else {
457
483
ctx .JSON (http .StatusOK , fileList )
@@ -484,6 +510,8 @@ func GetContentsList(ctx *context.APIContext) {
484
510
// responses:
485
511
// "200":
486
512
// "$ref": "#/responses/ContentsListResponse"
513
+ // "404":
514
+ // "$ref": "#/responses/notFound"
487
515
488
516
// same as GetContents(), this function is here because swagger fails if path is empty in GetContents() interface
489
517
GetContents (ctx )
0 commit comments