fix: use Driver.GET instead of httpGET to avoid loop calling

This commit is contained in:
lilong.129
2024-12-16 17:39:38 +08:00
parent 6a9af1e588
commit 11f8366878
6 changed files with 23 additions and 26 deletions
+1 -1
View File
@@ -1 +1 @@
v5.0.0+2412131956 v5.0.0+2412161739
+2 -2
View File
@@ -72,7 +72,7 @@ func (sad *stubAndroidDriver) httpGET(pathElem ...string) (rawResp rawResponse,
return nil, fmt.Errorf("adb forward: %w", err) return nil, fmt.Errorf("adb forward: %w", err)
} }
sad.client = convertToHTTPClient(conn) sad.client = convertToHTTPClient(conn)
return sad.httpRequest(http.MethodGet, sad.concatURL(nil, pathElem...), nil) return sad.Request(http.MethodGet, sad.concatURL(nil, pathElem...), nil)
} }
func (sad *stubAndroidDriver) httpPOST(data interface{}, pathElem ...string) (rawResp rawResponse, err error) { func (sad *stubAndroidDriver) httpPOST(data interface{}, pathElem ...string) (rawResp rawResponse, err error) {
@@ -97,7 +97,7 @@ func (sad *stubAndroidDriver) httpPOST(data interface{}, pathElem ...string) (ra
return nil, err return nil, err
} }
} }
return sad.httpRequest(http.MethodPost, sad.concatURL(nil, pathElem...), bsJSON) return sad.Request(http.MethodPost, sad.concatURL(nil, pathElem...), bsJSON)
} }
func (sad *stubAndroidDriver) NewSession(capabilities Capabilities) (SessionInfo, error) { func (sad *stubAndroidDriver) NewSession(capabilities Capabilities) (SessionInfo, error) {
+6 -10
View File
@@ -94,11 +94,10 @@ func (ud *uiaDriver) resetDriver() error {
return nil return nil
} }
func (ud *uiaDriver) httpRequest(method string, rawURL string, rawBody []byte, disableRetry ...bool) (rawResp rawResponse, err error) { func (ud *uiaDriver) httpRequest(method string, rawURL string, rawBody []byte) (rawResp rawResponse, err error) {
disableRetryBool := len(disableRetry) > 0 && disableRetry[0]
for retryCount := 1; retryCount <= 5; retryCount++ { for retryCount := 1; retryCount <= 5; retryCount++ {
rawResp, err = ud.Driver.httpRequest(method, rawURL, rawBody) rawResp, err = ud.Driver.Request(method, rawURL, rawBody)
if err == nil || disableRetryBool { if err == nil {
return return
} }
// wait for UIA2 server to resume automatically // wait for UIA2 server to resume automatically
@@ -120,10 +119,6 @@ func (ud *uiaDriver) httpGET(pathElem ...string) (rawResp rawResponse, err error
return ud.httpRequest(http.MethodGet, ud.concatURL(nil, pathElem...), nil) return ud.httpRequest(http.MethodGet, ud.concatURL(nil, pathElem...), nil)
} }
func (ud *uiaDriver) httpGETWithRetry(pathElem ...string) (rawResp rawResponse, err error) {
return ud.httpRequest(http.MethodGet, ud.concatURL(nil, pathElem...), nil, true)
}
func (ud *uiaDriver) httpPOST(data interface{}, pathElem ...string) (rawResp rawResponse, err error) { func (ud *uiaDriver) httpPOST(data interface{}, pathElem ...string) (rawResp rawResponse, err error) {
var bsJSON []byte = nil var bsJSON []byte = nil
if data != nil { if data != nil {
@@ -147,7 +142,7 @@ func (ud *uiaDriver) NewSession(capabilities Capabilities) (sessionInfo SessionI
} else { } else {
data["capabilities"] = map[string]interface{}{"alwaysMatch": capabilities} data["capabilities"] = map[string]interface{}{"alwaysMatch": capabilities}
} }
if rawResp, err = ud.Driver.httpPOST(data, "/session"); err != nil { if rawResp, err = ud.Driver.POST(data, "/session"); err != nil {
return SessionInfo{SessionId: ""}, err return SessionInfo{SessionId: ""}, err
} }
reply := new(struct{ Value struct{ SessionId string } }) reply := new(struct{ Value struct{ SessionId string } })
@@ -175,7 +170,8 @@ func (ud *uiaDriver) DeleteSession() (err error) {
func (ud *uiaDriver) Status() (deviceStatus DeviceStatus, err error) { func (ud *uiaDriver) Status() (deviceStatus DeviceStatus, err error) {
// register(getHandler, new Status("/wd/hub/status")) // register(getHandler, new Status("/wd/hub/status"))
var rawResp rawResponse var rawResp rawResponse
if rawResp, err = ud.httpGET("/status"); err != nil { // Notice: use Driver.GET instead of httpGET to avoid loop calling
if rawResp, err = ud.Driver.GET("/status"); err != nil {
return DeviceStatus{Ready: false}, err return DeviceStatus{Ready: false}, err
} }
reply := new(struct { reply := new(struct {
+7 -7
View File
@@ -94,25 +94,25 @@ func (wd *Driver) concatURL(u *url.URL, elem ...string) string {
return tmp.String() return tmp.String()
} }
func (wd *Driver) httpGET(pathElem ...string) (rawResp rawResponse, err error) { func (wd *Driver) GET(pathElem ...string) (rawResp rawResponse, err error) {
return wd.httpRequest(http.MethodGet, wd.concatURL(nil, pathElem...), nil) return wd.Request(http.MethodGet, wd.concatURL(nil, pathElem...), nil)
} }
func (wd *Driver) httpPOST(data interface{}, pathElem ...string) (rawResp rawResponse, err error) { func (wd *Driver) POST(data interface{}, pathElem ...string) (rawResp rawResponse, err error) {
var bsJSON []byte = nil var bsJSON []byte = nil
if data != nil { if data != nil {
if bsJSON, err = json.Marshal(data); err != nil { if bsJSON, err = json.Marshal(data); err != nil {
return nil, err return nil, err
} }
} }
return wd.httpRequest(http.MethodPost, wd.concatURL(nil, pathElem...), bsJSON) return wd.Request(http.MethodPost, wd.concatURL(nil, pathElem...), bsJSON)
} }
func (wd *Driver) httpDELETE(pathElem ...string) (rawResp rawResponse, err error) { func (wd *Driver) DELETE(pathElem ...string) (rawResp rawResponse, err error) {
return wd.httpRequest(http.MethodDelete, wd.concatURL(nil, pathElem...), nil) return wd.Request(http.MethodDelete, wd.concatURL(nil, pathElem...), nil)
} }
func (wd *Driver) httpRequest(method string, rawURL string, rawBody []byte) (rawResp rawResponse, err error) { func (wd *Driver) Request(method string, rawURL string, rawBody []byte) (rawResp rawResponse, err error) {
driverResult := &DriverResult{ driverResult := &DriverResult{
RequestMethod: method, RequestMethod: method,
RequestUrl: rawURL, RequestUrl: rawURL,
+4 -4
View File
@@ -448,7 +448,7 @@ func (s *stubIOSDriver) GetDriverResults() []*DriverResult {
} }
func (s *stubIOSDriver) Source(srcOpt ...SourceOption) (string, error) { func (s *stubIOSDriver) Source(srcOpt ...SourceOption) (string, error) {
resp, err := s.Driver.httpRequest(http.MethodGet, fmt.Sprintf("%s/source?format=json&onlyWeb=false", s.bightInsightPrefix), []byte{}) resp, err := s.Driver.Request(http.MethodGet, fmt.Sprintf("%s/source?format=json&onlyWeb=false", s.bightInsightPrefix), []byte{})
if err != nil { if err != nil {
return "", err return "", err
} }
@@ -470,7 +470,7 @@ func (s *stubIOSDriver) LoginNoneUI(packageName, phoneNumber string, captcha, pa
if err != nil { if err != nil {
return info, err return info, err
} }
resp, err := s.Driver.httpRequest(http.MethodPost, fmt.Sprintf("%s/host/login/account/", s.serverPrefix), bsJSON) resp, err := s.Driver.Request(http.MethodPost, fmt.Sprintf("%s/host/login/account/", s.serverPrefix), bsJSON)
if err != nil { if err != nil {
return info, err return info, err
} }
@@ -494,7 +494,7 @@ func (s *stubIOSDriver) LoginNoneUI(packageName, phoneNumber string, captcha, pa
} }
func (s *stubIOSDriver) LogoutNoneUI(packageName string) error { func (s *stubIOSDriver) LogoutNoneUI(packageName string) error {
resp, err := s.Driver.httpRequest(http.MethodGet, fmt.Sprintf("%s/host/loginout/", s.serverPrefix), []byte{}) resp, err := s.Driver.Request(http.MethodGet, fmt.Sprintf("%s/host/loginout/", s.serverPrefix), []byte{})
if err != nil { if err != nil {
return err return err
} }
@@ -518,7 +518,7 @@ func (s *stubIOSDriver) TearDown() error {
} }
func (s *stubIOSDriver) getLoginAppInfo(packageName string) (info AppLoginInfo, err error) { func (s *stubIOSDriver) getLoginAppInfo(packageName string) (info AppLoginInfo, err error) {
resp, err := s.Driver.httpRequest(http.MethodGet, fmt.Sprintf("%s/host/app/info/", s.serverPrefix), []byte{}) resp, err := s.Driver.Request(http.MethodGet, fmt.Sprintf("%s/host/app/info/", s.serverPrefix), []byte{})
if err != nil { if err != nil {
return info, err return info, err
} }
+3 -2
View File
@@ -51,7 +51,7 @@ func (wd *wdaDriver) resetSession() error {
func (wd *wdaDriver) httpRequest(method string, rawURL string, rawBody []byte) (rawResp rawResponse, err error) { func (wd *wdaDriver) httpRequest(method string, rawURL string, rawBody []byte) (rawResp rawResponse, err error) {
retryInterval := 3 * time.Second retryInterval := 3 * time.Second
for retryCount := 1; retryCount <= 3; retryCount++ { for retryCount := 1; retryCount <= 3; retryCount++ {
rawResp, err = wd.Driver.httpRequest(method, rawURL, rawBody) rawResp, err = wd.Driver.Request(method, rawURL, rawBody)
if err == nil { if err == nil {
return return
} }
@@ -139,7 +139,8 @@ func (wd *wdaDriver) DeleteSession() (err error) {
func (wd *wdaDriver) Status() (deviceStatus DeviceStatus, err error) { func (wd *wdaDriver) Status() (deviceStatus DeviceStatus, err error) {
// [[FBRoute GET:@"/status"].withoutSession respondWithTarget:self action:@selector(handleGetStatus:)] // [[FBRoute GET:@"/status"].withoutSession respondWithTarget:self action:@selector(handleGetStatus:)]
var rawResp rawResponse var rawResp rawResponse
if rawResp, err = wd.httpGET("/status"); err != nil { // Notice: use Driver.GET instead of httpGET to avoid loop calling
if rawResp, err = wd.Driver.GET("/status"); err != nil {
return DeviceStatus{}, err return DeviceStatus{}, err
} }
reply := new(struct{ Value struct{ DeviceStatus } }) reply := new(struct{ Value struct{ DeviceStatus } })