做的比较好的冷柜网站有哪些,中企动力建站怎么样,东莞哪里有网页设计,vs怎样建设新网站文章目录 本文章是为了解决 使用Jenkins执行TestNgSeleniumJsoup自动化测试和生成ExtentReport测试报告生成的测试报告#xff0c;只能在jenkins里面访问#xff0c;为了方便项目组内所有人员都能查看测试报#xff0c;可以在jenkins构建时#xff0c;把测试报告的html推送… 文章目录 本文章是为了解决 使用Jenkins执行TestNgSeleniumJsoup自动化测试和生成ExtentReport测试报告生成的测试报告只能在jenkins里面访问为了方便项目组内所有人员都能查看测试报可以在jenkins构建时把测试报告的html推送到其它http服务再让该http服务提供访问。 为了实现上边的功能需要编写两个HTTP接口 1、upload接口接收发送的html内容并保存到硬盘中。2、view接口提供浏览html文件服务。
本文使用Go的Gin框架实现上述功能
package mainimport (bufiocrypto/md5encoding/hexencoding/jsongithub.com/gin-gonic/ginuuid github.com/satori/go.uuidiolognet/httposstringstime
)type WebData struct {Content string json:content//Token string json:token_key
}
type ViewData struct {Date string uri:date binding:requiredHour string uri:hour binding:requiredPath string uri:path binding:required
}func readString(name string) string {file, err : os.Open(name)if err ! nil {panic(err)}var content r : bufio.NewReader(file)for {line, err : r.ReadString(\n)if err ! nil err ! io.EOF {panic(err)}line strings.TrimSpace(line)content lineif err io.EOF {break}content \n}file.Close()return content
}
func writeString(name string, content string) int {file, err : os.Create(name)if err ! nil {panic(err)}w : bufio.NewWriter(file)len, err2 : w.WriteString(content)if err2 nil {w.Flush()}file.Close()return len
}/*
*
本文不使用
*/
func md5Str(str string) (encode string) {md5 : md5.New()md5.Write([]byte(str))return hex.EncodeToString(md5.Sum(nil))
}
func upload(c *gin.Context) {result : gin.H{url: ,}data : WebData{}requestBody, err : c.GetRawData()if err nil {err2 : json.Unmarshal(requestBody, data)if err2 nil {date : time.Now().Format(20060102/15/)log.Printf(date%v, date)u1 : uuid.NewV4()log.Printf(uuid%v, u1.String())path : temp/ datefile : u1.String() .htmlname : path filelog.Printf(path%v, name)_, err : os.Stat(path)if err ! nil || os.IsNotExist(err) {os.MkdirAll(path, 0755)}content : data.Contentlen : writeString(name, content)log.Printf(writeString%v, len)result[url] server /view/ date file} else {log.Println(err2)}}c.JSON(http.StatusOK, gin.H{data: result,})
}
func view(c *gin.Context) {var viewData ViewDataif err : c.ShouldBindUri(viewData); err ! nil {c.String(400, err.Error())return}log.Printf(date:%v,hour:%v,path:%v, viewData.Date, viewData.Hour, viewData.Path)name : temp/ viewData.Date / viewData.Hour / viewData.Pathc.Header(Content-Type, text/html;charsetutf-8)conetnt : readString(name)log.Printf(view content:%v, conetnt)c.String(http.StatusOK, conetnt)
}const server string http://localhost:8080/htmlfunc main() {router : gin.Default()router.Static(/temp, ./temp)v1 : router.Group(/html){v1.POST(/upload, upload)v1.GET(/view/:date/:hour/:path, view)}// 监听并在 0.0.0.0:8080 上启动服务router.Run(:8080)
}
后期优化可以添加安全验证功能。
运行效果 访问upload接口
通过view接口访问页面