diff --git a/modules/context/api.go b/modules/context/api.go index fdc000e4a..156cdcc7e 100644 --- a/modules/context/api.go +++ b/modules/context/api.go @@ -255,3 +255,26 @@ func (ctx *APIContext) NotFound(objs ...interface{}) { "errors": errors, }) } + +func (ctx *APIContext) FileNameError(objs ...interface{}){ + var message = "FileName too long" + var errors []string + + for _, obj := range objs { + // Ignore nil + if obj == nil { + continue + } + + if err, ok := obj.(error); ok { + errors = append(errors, err.Error()) + } else { + message = obj.(string) + } + } + ctx.JSON(500, map[string]interface{}{ + "message": message, + "documentation_url": setting.API.SwaggerURL, + "errors": errors, + }) +} diff --git a/routers/api/v1/repo/wiki.go b/routers/api/v1/repo/wiki.go index e7785e286..a8afa8622 100644 --- a/routers/api/v1/repo/wiki.go +++ b/routers/api/v1/repo/wiki.go @@ -36,8 +36,7 @@ func WikiList(ctx *context.APIContext) { // "$ref": "#/responses/WikiList" repository := ctx.Repo.Repository - wikiCloneLink := repository.WikiCloneLink() - + wikiCloneLink:= repository.CloneLink() wikiRepo, commit, err := wikies.FindWikiRepoCommit(ctx) if err != nil { if wikiRepo != nil { @@ -217,11 +216,15 @@ func CreateWiki(ctx *context.APIContext, form api.WikiOption) { // "200": // "$ref": "#/responses/Wiki" + err1 := wiki_service.CheckFile(form.Name) + if err1 != nil{ + ctx.FileNameError() + return + } err2 := wiki_service.AddWikiPage(ctx.User, ctx.Repo.Repository, form.Name, form.Content, form.CommitMessage) if err2 != nil{ ctx.ServerError("CreateWikiPage", err2) } - fmt.Println("content", form.Content) wikiRepo, commit, _ := wikies.FindWikiRepoCommit(ctx) data, entry, pageFilename, _:= wikies.WikiContentsByName(ctx, commit, form.Name) metas := ctx.Repo.Repository.ComposeDocumentMetas() diff --git a/services/wiki/wiki.go b/services/wiki/wiki.go index 3616823c5..40b246c77 100644 --- a/services/wiki/wiki.go +++ b/services/wiki/wiki.go @@ -6,6 +6,7 @@ package wiki import ( + "errors" "fmt" "net/url" "os" @@ -65,6 +66,17 @@ func FilenameToName(filename string) (string, error) { } return NormalizeWikiName(unescaped), nil } +// check filename +func CheckFile(filename string) error { + if(len(filename) <= 150 ){ + return nil + }else { + err := errors.New("The name is too long, please be less than 200 bytes") + return err + } +} + + // InitWiki initializes a wiki for repository, // it does nothing when repository already has wiki.