mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-13 00:11:28 +08:00
Merge pull request #1666 from httprunner/fix-GetImage
fix: reuse the same request body during GetImage retry
This commit is contained in:
@@ -103,9 +103,7 @@ func (t OCRTexts) FilterScope(scope AbsScope) (results OCRTexts) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t OCRTexts) FindText(text string, options ...ActionOption) (
|
func (t OCRTexts) FindText(text string, options ...ActionOption) (result OCRText, err error) {
|
||||||
result OCRText, err error) {
|
|
||||||
|
|
||||||
actionOptions := NewActionOptions(options...)
|
actionOptions := NewActionOptions(options...)
|
||||||
|
|
||||||
var results []OCRText
|
var results []OCRText
|
||||||
@@ -145,8 +143,7 @@ func (t OCRTexts) FindText(text string, options ...ActionOption) (
|
|||||||
return results[idx], nil
|
return results[idx], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t OCRTexts) FindTexts(texts []string, options ...ActionOption) (
|
func (t OCRTexts) FindTexts(texts []string, options ...ActionOption) (results OCRTexts, err error) {
|
||||||
results OCRTexts, err error) {
|
|
||||||
for _, text := range texts {
|
for _, text := range texts {
|
||||||
ocrText, err := t.FindText(text, options...)
|
ocrText, err := t.FindText(text, options...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -186,9 +183,7 @@ type veDEMImageService struct {
|
|||||||
actions []string
|
actions []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *veDEMImageService) GetImage(imageBuf *bytes.Buffer) (
|
func (s *veDEMImageService) GetImage(imageBuf *bytes.Buffer) (imageResult ImageResult, err error) {
|
||||||
imageResult ImageResult, err error) {
|
|
||||||
|
|
||||||
bodyBuf := &bytes.Buffer{}
|
bodyBuf := &bytes.Buffer{}
|
||||||
bodyWriter := multipart.NewWriter(bodyBuf)
|
bodyWriter := multipart.NewWriter(bodyBuf)
|
||||||
for _, action := range s.actions {
|
for _, action := range s.actions {
|
||||||
@@ -216,24 +211,30 @@ func (s *veDEMImageService) GetImage(imageBuf *bytes.Buffer) (
|
|||||||
fmt.Sprintf("close body writer error: %v", err))
|
fmt.Sprintf("close body writer error: %v", err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
var req *http.Request
|
||||||
req, err := http.NewRequest("POST", env.VEDEM_IMAGE_URL, bodyBuf)
|
|
||||||
if err != nil {
|
|
||||||
err = errors.Wrap(code.OCRRequestError,
|
|
||||||
fmt.Sprintf("construct request error: %v", err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
signToken := "UNSIGNED-PAYLOAD"
|
|
||||||
token := builtin.Sign("auth-v2", env.VEDEM_IMAGE_AK, env.VEDEM_IMAGE_SK, []byte(signToken))
|
|
||||||
|
|
||||||
req.Header.Add("Agw-Auth", token)
|
|
||||||
req.Header.Add("Agw-Auth-Content", signToken)
|
|
||||||
req.Header.Add("Content-Type", bodyWriter.FormDataContentType())
|
|
||||||
|
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
// retry 3 times
|
// retry 3 times
|
||||||
for i := 1; i <= 3; i++ {
|
for i := 1; i <= 3; i++ {
|
||||||
|
copiedBodyBuf := &bytes.Buffer{}
|
||||||
|
if _, err := copiedBodyBuf.Write(bodyBuf.Bytes()); err != nil {
|
||||||
|
log.Error().Err(err).Msg("copy screenshot buffer failed")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err = http.NewRequest("POST", env.VEDEM_IMAGE_URL, copiedBodyBuf)
|
||||||
|
if err != nil {
|
||||||
|
err = errors.Wrap(code.OCRRequestError,
|
||||||
|
fmt.Sprintf("construct request error: %v", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
signToken := "UNSIGNED-PAYLOAD"
|
||||||
|
token := builtin.Sign("auth-v2", env.VEDEM_IMAGE_AK, env.VEDEM_IMAGE_SK, []byte(signToken))
|
||||||
|
|
||||||
|
req.Header.Add("Agw-Auth", token)
|
||||||
|
req.Header.Add("Agw-Auth-Content", signToken)
|
||||||
|
req.Header.Add("Content-Type", bodyWriter.FormDataContentType())
|
||||||
|
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
resp, err = client.Do(req)
|
resp, err = client.Do(req)
|
||||||
elapsed := time.Since(start)
|
elapsed := time.Since(start)
|
||||||
|
|||||||
Reference in New Issue
Block a user