diff --git a/cmd_ui.go b/cmd_ui.go index 412084339..dd5c31be5 100644 --- a/cmd_ui.go +++ b/cmd_ui.go @@ -1,46 +1,38 @@ package main import ( - "bytes" - "encoding/base64" + "context" "encoding/json" "fmt" "io" - "net/http" - "net/url" "os" - "path" "strconv" "strings" "time" + "github.com/danielpaulus/go-ios/ios/uidriver" "github.com/docopt/docopt-go" ) const ( - defaultUIDriver = "devicekit" - defaultWDAURL = "http://127.0.0.1:8100" - defaultDeviceKitURL = "http://127.0.0.1:12004" - uiDriverWDA = "wda" - uiDriverDeviceKit = "devicekit" - uiDriverAuto = "auto" - deviceKitRPCProtocol = "2.0" + defaultUIDriver = "devicekit" + defaultWDAURL = uidriver.DefaultWDAURL + defaultDeviceKitURL = uidriver.DefaultDeviceKitURL + uiDriverWDA = "wda" + uiDriverDeviceKit = "devicekit" + uiDriverAuto = "auto" ) +// uiClient wires the CLI arguments to a reusable uidriver.Driver. Argument +// parsing, backend resolution and output formatting live here; all HTTP work +// is delegated to the ios/uidriver package. type uiClient struct { driver string wdaURL string deviceKitURL string - httpClient *http.Client sessionID string } -type uiHTTPResponse struct { - StatusCode int - Header http.Header - Body []byte -} - func runUICommand(ctx commandContext) { if boolArg(ctx.Args, "download") { runUIDownloadCommand(ctx) @@ -51,26 +43,26 @@ func runUICommand(ctx commandContext) { switch { case boolArg(ctx.Args, "status"): - client.printStatus() + printUIResponse(client.driverOrExit().Status()) case boolArg(ctx.Args, "api") || boolArg(ctx.Args, "raw"): client.api(ctx) case boolArg(ctx.Args, "tap"): - client.tap(requiredIntArg(ctx.Args, "--x"), requiredIntArg(ctx.Args, "--y")) + printUIResponse(client.driverOrExit().Tap(requiredIntArg(ctx.Args, "--x"), requiredIntArg(ctx.Args, "--y"))) case boolArg(ctx.Args, "swipe"): - client.swipe( + printUIResponse(client.driverOrExit().Swipe( requiredIntArg(ctx.Args, "--from-x"), requiredIntArg(ctx.Args, "--from-y"), requiredIntArg(ctx.Args, "--to-x"), requiredIntArg(ctx.Args, "--to-y"), optionalFloatArg(ctx.Args, "--duration", 0), - ) + )) case boolArg(ctx.Args, "longpress"): - client.longPress(requiredIntArg(ctx.Args, "--x"), requiredIntArg(ctx.Args, "--y"), optionalFloatArg(ctx.Args, "--duration", 1)) + printUIResponse(client.driverOrExit().LongPress(requiredIntArg(ctx.Args, "--x"), requiredIntArg(ctx.Args, "--y"), optionalFloatArg(ctx.Args, "--duration", 1))) case boolArg(ctx.Args, "type"): - client.typeText(requiredStringArg(ctx.Args, "--text")) + printUIResponse(client.driverOrExit().Type(requiredStringArg(ctx.Args, "--text"))) case boolArg(ctx.Args, "button"): button, _ := ctx.Args.String("