68 lines
1.2 KiB
Go
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: "流程网图",
|
|
})
|
|
}
|