bilibili-backup/app/admin/main/apm/http/upload.go

136 lines
3.4 KiB
Go
Raw Normal View History

2019-04-22 10:59:20 +08:00
package http
import (
"encoding/json"
"io/ioutil"
"mime/multipart"
"time"
"go-common/app/admin/main/apm/model/ut"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func upload(c *bm.Context) {
var (
file multipart.File
body []byte
htmlURL string
reportURL string
dataURL string
err error
pkg = new(ut.PkgAnls)
files []*ut.File
res = &ut.UploadRes{}
header *multipart.FileHeader
)
c.Request.ParseMultipartForm(32 << 20)
if err = c.Bind(res); err != nil {
return
}
log.Info("ut.upload(%d) start! current_time(%d)", res.MergeID, time.Now().Unix())
defer log.Info("ut.upload(%d) finished. current_time(%d)", res.MergeID, time.Now().Unix())
if file, _, err = c.Request.FormFile("report_file"); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("report request upload err (%v)", err)
return
}
defer file.Close()
if body, err = ioutil.ReadAll(file); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("ioutil.ReadAll(c.Request().Body) error(%v)", err)
return
}
if body, err = apmSvc.ParseContent(c, body); err != nil {
c.JSON(err.Error(), err)
return
}
if pkg, err = apmSvc.CalcCount(c, body); err != nil {
c.JSON(nil, err)
return
}
if pkg.Assertions == 0 {
c.JSON("no result", nil)
return
}
if reportURL, err = apmSvc.Upload(c, "json", time.Now().Unix(), body); err != nil {
c.JSON(nil, err)
return
}
if file, header, err = c.Request.FormFile("data_file"); err == nil && header.Size > 0 {
defer file.Close()
if body, err = ioutil.ReadAll(file); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("Upload data request error(%v)", err)
return
}
if files, err = apmSvc.CalcCountFiles(c, res, body); err != nil {
c.JSON(nil, err)
log.Error("Upload data calcCount error(%v)", err)
return
}
if dataURL, err = apmSvc.Upload(c, "text/plain", time.Now().Unix(), body); err != nil {
c.JSON(nil, err)
return
}
}
if file, _, err = c.Request.FormFile("html_file"); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("html request upload err (%v)", err)
return
}
defer file.Close()
if body, err = ioutil.ReadAll(file); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("html read error(%v)", err)
return
}
if htmlURL, err = apmSvc.Upload(c, "html", time.Now().Unix(), body); err != nil {
c.JSON(nil, err)
return
}
if err = apmSvc.AddUT(c, pkg, files, res, dataURL, reportURL, htmlURL); err != nil {
c.JSON(nil, err)
return
}
// update ut_app has_ut = 1 && converage
if err = apmSvc.UpdateUTApp(c, pkg); err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
// uploadApp upload path to ut_app
func uploadApp(c *bm.Context) {
var (
file multipart.File
body []byte
apps []*ut.App
err error
)
c.Request.ParseMultipartForm(32 << 20)
if file, _, err = c.Request.FormFile("path_file"); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("path request upload error(%v)", err)
return
}
defer file.Close()
if body, err = ioutil.ReadAll(file); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("path_file read error(%v)", err)
return
}
if err = json.Unmarshal(body, &apps); err != nil {
log.Error("json.Unmarshal error(%v)", err)
return
}
if err = apmSvc.AddUTApp(c, apps); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("apmSvc.AddUtApp error(%v)", err)
return
}
c.JSON(nil, err)
}