From a3b55348cec15023704de9bccbfc656dce948bf1 Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Wed, 16 Jul 2025 00:41:42 +0800 Subject: [PATCH] refactor: use DeviceHTTPDriverError when request driver failed --- uixt/driver_session.go | 23 ++++++----------------- uixt/ios_device.go | 3 +-- uixt/ios_driver_wda.go | 12 +++++------- 3 files changed, 12 insertions(+), 26 deletions(-) diff --git a/uixt/driver_session.go b/uixt/driver_session.go index ab837c9a..43bc1491 100644 --- a/uixt/driver_session.go +++ b/uixt/driver_session.go @@ -155,33 +155,21 @@ func (s *DriverSession) buildURL(urlStr string) (string, error) { } func (s *DriverSession) GET(urlStr string, opts ...option.ActionOption) (rawResp DriverRawResponse, err error) { - rawResp, err = s.RequestWithRetry(http.MethodGet, urlStr, nil, opts...) - if err != nil { - return nil, errors.Wrap(code.DeviceHTTPDriverError, err.Error()) - } - return rawResp, nil + return s.RequestWithRetry(http.MethodGet, urlStr, nil, opts...) } func (s *DriverSession) POST(data interface{}, urlStr string, opts ...option.ActionOption) (rawResp DriverRawResponse, err error) { var bsJSON []byte = nil if data != nil { if bsJSON, err = json.Marshal(data); err != nil { - return nil, errors.Wrap(code.DeviceHTTPDriverError, err.Error()) + return nil, errors.Wrap(code.InvalidParamError, err.Error()) } } - rawResp, err = s.RequestWithRetry(http.MethodPost, urlStr, bsJSON, opts...) - if err != nil { - return nil, errors.Wrap(code.DeviceHTTPDriverError, err.Error()) - } - return rawResp, nil + return s.RequestWithRetry(http.MethodPost, urlStr, bsJSON, opts...) } func (s *DriverSession) DELETE(urlStr string, opts ...option.ActionOption) (rawResp DriverRawResponse, err error) { - rawResp, err = s.RequestWithRetry(http.MethodDelete, urlStr, nil, opts...) - if err != nil { - return nil, errors.Wrap(code.DeviceHTTPDriverError, err.Error()) - } - return rawResp, nil + return s.RequestWithRetry(http.MethodDelete, urlStr, nil, opts...) } func (s *DriverSession) RequestWithRetry(method string, urlStr string, rawBody []byte, opts ...option.ActionOption) ( @@ -205,7 +193,8 @@ func (s *DriverSession) RequestWithRetry(method string, urlStr string, rawBody [ return rawResp, nil } - lastError = err + // Notice: use DeviceHTTPDriverError when request driver failed + lastError = errors.Wrap(code.DeviceHTTPDriverError, err.Error()) log.Warn().Err(err).Msgf("request failed, attempt %d/%d", attempt, s.maxRetry) // If this was the last attempt, break diff --git a/uixt/ios_device.go b/uixt/ios_device.go index ba16502f..59d66258 100644 --- a/uixt/ios_device.go +++ b/uixt/ios_device.go @@ -231,8 +231,7 @@ func (dev *IOSDevice) NewDriver() (driver IDriver, err error) { if dev.Options.ResetHomeOnStartup { log.Info().Msg("go back to home screen") if err = wdaDriver.Home(); err != nil { - return nil, errors.Wrap(code.DeviceHTTPDriverError, - fmt.Sprintf("go back to home screen failed: %v", err)) + return nil, errors.Wrap(err, "go back to home screen failed") } } if dev.Options.LogOn { diff --git a/uixt/ios_driver_wda.go b/uixt/ios_driver_wda.go index 2ca91d9f..724b1357 100644 --- a/uixt/ios_driver_wda.go +++ b/uixt/ios_driver_wda.go @@ -196,7 +196,7 @@ func (wd *WDADriver) DeviceInfo() (deviceInfo types.DeviceInfo, err error) { // [[FBRoute GET:@"/wda/device/info"].withoutSession var rawResp DriverRawResponse if rawResp, err = wd.Session.GET("/wda/device/info"); err != nil { - return types.DeviceInfo{}, errors.Wrap(code.DeviceHTTPDriverError, err.Error()) + return types.DeviceInfo{}, err } reply := new(struct{ Value struct{ types.DeviceInfo } }) if err = json.Unmarshal(rawResp, reply); err != nil { @@ -298,12 +298,12 @@ func (wd *WDADriver) ScreenShot(opts ...option.ActionOption) (raw *bytes.Buffer, // [[FBRoute GET:@"/screenshot"].withoutSession respondWithTarget:self action:@selector(handleGetScreenshot:)] rawResp, err := wd.Session.GET("/screenshot") if err != nil { - return nil, errors.Wrap(code.DeviceHTTPDriverError, + return nil, errors.Wrap(code.DeviceScreenShotError, fmt.Sprintf("WDA screenshot failed %v", err)) } raw, err = rawResp.ValueDecodeAsBase64() if err != nil { - return nil, errors.Wrap(code.DeviceHTTPDriverError, + return nil, errors.Wrap(code.DeviceScreenShotError, fmt.Sprintf("decode WDA screenshot data failed: %v", err)) } return raw, nil @@ -454,8 +454,7 @@ func (wd *WDADriver) AppLaunch(bundleId string) (err error) { } _, err = wd.Session.POST(data, "/wings/apps/launch") if err != nil { - return errors.Wrap(code.DeviceHTTPDriverError, - fmt.Sprintf("wda launch failed: %v", err)) + return errors.Wrap(err, "wda app launch failed") } return nil } @@ -466,8 +465,7 @@ func (wd *WDADriver) AppLaunchUnattached(bundleId string) (err error) { data := map[string]interface{}{"bundleId": bundleId} _, err = wd.Session.POST(data, "/wda/apps/launchUnattached") if err != nil { - return errors.Wrap(code.DeviceHTTPDriverError, - fmt.Sprintf("wda launchUnattached failed: %v", err)) + return errors.Wrap(err, "wda app launchUnattached failed") } return nil }