|
-
-
-
-
- package misc
-
- import (
- "net/http"
- "strings"
-
- "code.gitea.io/gitea/modules/context"
- "code.gitea.io/gitea/modules/markup/markdown"
- "code.gitea.io/gitea/modules/setting"
- api "code.gitea.io/gitea/modules/structs"
- "code.gitea.io/gitea/modules/util"
-
- "mvdan.cc/xurls/v2"
- )
-
-
- func Markdown(ctx *context.APIContext, form api.MarkdownOption) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if ctx.HasAPIError() {
- ctx.Error(422, "", ctx.GetErrMsg())
- return
- }
-
- if len(form.Text) == 0 {
- _, _ = ctx.Write([]byte(""))
- return
- }
-
- switch form.Mode {
- case "gfm":
- md := []byte(form.Text)
- urlPrefix := form.Context
- var meta map[string]string
- if !strings.HasPrefix(setting.AppSubURL+"/", urlPrefix) {
-
- linkRegex, _ := xurls.StrictMatchingScheme("https?://")
- m := linkRegex.FindStringIndex(urlPrefix)
- if m == nil {
- urlPrefix = util.URLJoin(setting.AppURL, form.Context)
- }
- }
- if ctx.Repo != nil && ctx.Repo.Repository != nil {
- meta = ctx.Repo.Repository.ComposeMetas()
- }
- if form.Wiki {
- _, err := ctx.Write([]byte(markdown.RenderWiki(md, urlPrefix, meta)))
- if err != nil {
- ctx.Error(http.StatusInternalServerError, "", err)
- return
- }
- } else {
- _, err := ctx.Write(markdown.Render(md, urlPrefix, meta))
- if err != nil {
- ctx.Error(http.StatusInternalServerError, "", err)
- return
- }
- }
- default:
- _, err := ctx.Write(markdown.RenderRaw([]byte(form.Text), "", false))
- if err != nil {
- ctx.Error(http.StatusInternalServerError, "", err)
- return
- }
- }
- }
-
-
- func MarkdownRaw(ctx *context.APIContext) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- body, err := ctx.Req.Body().Bytes()
- if err != nil {
- ctx.Error(422, "", err)
- return
- }
- _, err = ctx.Write(markdown.RenderRaw(body, "", false))
- if err != nil {
- ctx.Error(http.StatusInternalServerError, "", err)
- return
- }
- }
|