forked from fabric8-services/fabric8-wit
/
render.go
42 lines (37 loc) · 1.25 KB
/
render.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package main
import (
"github.com/almighty/almighty-core/app"
"github.com/almighty/almighty-core/errors"
"github.com/almighty/almighty-core/jsonapi"
"github.com/almighty/almighty-core/rendering"
"github.com/goadesign/goa"
uuid "github.com/satori/go.uuid"
)
const (
RenderingType = "rendering"
RenderedValue = "value"
)
// RenderController implements the render resource.
type RenderController struct {
*goa.Controller
}
// NewRenderController creates a render controller.
func NewRenderController(service *goa.Service) *RenderController {
return &RenderController{Controller: service.NewController("RenderController")}
}
// Render runs the render action.
func (c *RenderController) Render(ctx *app.RenderRenderContext) error {
content := ctx.Payload.Data.Attributes.Content
markup := ctx.Payload.Data.Attributes.Markup
if !rendering.IsMarkupSupported(markup) {
return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError("Unsupported markup type", markup))
}
htmlResult := rendering.RenderMarkupToHTML(content, markup)
res := &app.MarkupRenderingSingle{Data: &app.MarkupRenderingData{
ID: uuid.NewV4().String(),
Type: RenderingType,
Attributes: &app.MarkupRenderingDataAttributes{
RenderedContent: htmlResult,
}}}
return ctx.OK(res)
}