mirror of
				https://gitcode.com/gitea/gitea.git
				synced 2025-10-26 05:04:27 +08:00 
			
		
		
		
	 6b33152b7d
			
		
	
	6b33152b7d
	
	
	
		
			
			Replace #16455 Close #21803 Mixing different Gitea contexts together causes some problems: 1. Unable to respond proper content when error occurs, eg: Web should respond HTML while API should respond JSON 2. Unclear dependency, eg: it's unclear when Context is used in APIContext, which fields should be initialized, which methods are necessary. To make things clear, this PR introduces a Base context, it only provides basic Req/Resp/Data features. This PR mainly moves code. There are still many legacy problems and TODOs in code, leave unrelated changes to future PRs.
		
			
				
	
	
		
			111 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2014 The Gogs Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package misc
 | |
| 
 | |
| import (
 | |
| 	"net/http"
 | |
| 
 | |
| 	"code.gitea.io/gitea/modules/context"
 | |
| 	"code.gitea.io/gitea/modules/markup"
 | |
| 	"code.gitea.io/gitea/modules/markup/markdown"
 | |
| 	api "code.gitea.io/gitea/modules/structs"
 | |
| 	"code.gitea.io/gitea/modules/web"
 | |
| 	"code.gitea.io/gitea/routers/common"
 | |
| )
 | |
| 
 | |
| // Markup render markup document to HTML
 | |
| func Markup(ctx *context.APIContext) {
 | |
| 	// swagger:operation POST /markup miscellaneous renderMarkup
 | |
| 	// ---
 | |
| 	// summary: Render a markup document as HTML
 | |
| 	// parameters:
 | |
| 	// - name: body
 | |
| 	//   in: body
 | |
| 	//   schema:
 | |
| 	//     "$ref": "#/definitions/MarkupOption"
 | |
| 	// consumes:
 | |
| 	// - application/json
 | |
| 	// produces:
 | |
| 	//     - text/html
 | |
| 	// responses:
 | |
| 	//   "200":
 | |
| 	//     "$ref": "#/responses/MarkupRender"
 | |
| 	//   "422":
 | |
| 	//     "$ref": "#/responses/validationError"
 | |
| 
 | |
| 	form := web.GetForm(ctx).(*api.MarkupOption)
 | |
| 
 | |
| 	if ctx.HasAPIError() {
 | |
| 		ctx.Error(http.StatusUnprocessableEntity, "", ctx.GetErrMsg())
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	common.RenderMarkup(ctx.Base, ctx.Repo, form.Mode, form.Text, form.Context, form.FilePath, form.Wiki)
 | |
| }
 | |
| 
 | |
| // Markdown render markdown document to HTML
 | |
| func Markdown(ctx *context.APIContext) {
 | |
| 	// swagger:operation POST /markdown miscellaneous renderMarkdown
 | |
| 	// ---
 | |
| 	// summary: Render a markdown document as HTML
 | |
| 	// parameters:
 | |
| 	// - name: body
 | |
| 	//   in: body
 | |
| 	//   schema:
 | |
| 	//     "$ref": "#/definitions/MarkdownOption"
 | |
| 	// consumes:
 | |
| 	// - application/json
 | |
| 	// produces:
 | |
| 	//     - text/html
 | |
| 	// responses:
 | |
| 	//   "200":
 | |
| 	//     "$ref": "#/responses/MarkdownRender"
 | |
| 	//   "422":
 | |
| 	//     "$ref": "#/responses/validationError"
 | |
| 
 | |
| 	form := web.GetForm(ctx).(*api.MarkdownOption)
 | |
| 
 | |
| 	if ctx.HasAPIError() {
 | |
| 		ctx.Error(http.StatusUnprocessableEntity, "", ctx.GetErrMsg())
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	mode := "markdown"
 | |
| 	if form.Mode == "comment" || form.Mode == "gfm" {
 | |
| 		mode = form.Mode
 | |
| 	}
 | |
| 
 | |
| 	common.RenderMarkup(ctx.Base, ctx.Repo, mode, form.Text, form.Context, "", form.Wiki)
 | |
| }
 | |
| 
 | |
| // MarkdownRaw render raw markdown HTML
 | |
| func MarkdownRaw(ctx *context.APIContext) {
 | |
| 	// swagger:operation POST /markdown/raw miscellaneous renderMarkdownRaw
 | |
| 	// ---
 | |
| 	// summary: Render raw markdown as HTML
 | |
| 	// parameters:
 | |
| 	//     - name: body
 | |
| 	//       in: body
 | |
| 	//       description: Request body to render
 | |
| 	//       required: true
 | |
| 	//       schema:
 | |
| 	//         type: string
 | |
| 	// consumes:
 | |
| 	//     - text/plain
 | |
| 	// produces:
 | |
| 	//     - text/html
 | |
| 	// responses:
 | |
| 	//   "200":
 | |
| 	//     "$ref": "#/responses/MarkdownRender"
 | |
| 	//   "422":
 | |
| 	//     "$ref": "#/responses/validationError"
 | |
| 	defer ctx.Req.Body.Close()
 | |
| 	if err := markdown.RenderRaw(&markup.RenderContext{
 | |
| 		Ctx: ctx,
 | |
| 	}, ctx.Req.Body, ctx.Resp); err != nil {
 | |
| 		ctx.InternalServerError(err)
 | |
| 		return
 | |
| 	}
 | |
| }
 |