bilibili-backup/app/admin/main/aegis/server/http/svg.go
2019-04-22 02:59:20 +00:00

68 lines
1.2 KiB
Go

package http
import (
"bytes"
"net/http"
modsvg "go-common/app/admin/main/aegis/model/svg"
bm "go-common/library/net/http/blademaster"
"github.com/pkg/errors"
)
// HTMLContentType
var (
HTMLContentType = []string{"text/html"}
_ Render = HTML{}
)
// HTML str.
type HTML struct {
Content []byte
Title string
}
// WriteContentType fn
func (j HTML) WriteContentType(w http.ResponseWriter) {
writeContentType(w, HTMLContentType, j.Title, "html")
}
// Render (JSON) writes data with json ContentType.
func (j HTML) Render(w http.ResponseWriter) (err error) {
if _, err = w.Write(j.Content); err != nil {
err = errors.WithStack(err)
}
return
}
func svg(c *bm.Context) {
opt := new(struct {
NetID int64 `form:"net_id" validate:"required"`
Debug int8 `form:"debug"`
})
if err := c.Bind(opt); err != nil {
return
}
var (
nv *modsvg.NetView
err error
)
if opt.Debug > 0 {
nv = modsvg.DebugSVG()
} else {
if nv, err = srv.NetSVG(c, opt.NetID); err != nil {
c.JSON(nil, err)
return
}
}
bs := bytes.NewBufferString("")
nv.Execute(c.Writer, nv.Data)
c.Render(http.StatusOK, CSV{
Content: bs.Bytes(),
Title: "流程网图",
})
}