Browse code

client: use strings.Cut()

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

Sebastiaan van Stijn authored on 2022/11/01 03:06:50
Showing 2 changed files
... ...
@@ -282,13 +282,12 @@ func (cli *Client) HTTPClient() *http.Client {
282 282
 // ParseHostURL parses a url string, validates the string is a host url, and
283 283
 // returns the parsed URL
284 284
 func ParseHostURL(host string) (*url.URL, error) {
285
-	protoAddrParts := strings.SplitN(host, "://", 2)
286
-	if len(protoAddrParts) == 1 {
285
+	proto, addr, ok := strings.Cut(host, "://")
286
+	if !ok || addr == "" {
287 287
 		return nil, errors.Errorf("unable to parse docker host `%s`", host)
288 288
 	}
289 289
 
290 290
 	var basePath string
291
-	proto, addr := protoAddrParts[0], protoAddrParts[1]
292 291
 	if proto == "tcp" {
293 292
 		parsed, err := url.Parse("tcp://" + addr)
294 293
 		if err != nil {
... ...
@@ -64,10 +64,10 @@ func parsePingResponse(cli *Client, resp serverResponse) (types.Ping, error) {
64 64
 		ping.BuilderVersion = types.BuilderVersion(bv)
65 65
 	}
66 66
 	if si := resp.header.Get("Swarm"); si != "" {
67
-		parts := strings.SplitN(si, "/", 2)
67
+		state, role, _ := strings.Cut(si, "/")
68 68
 		ping.SwarmStatus = &swarm.Status{
69
-			NodeState:        swarm.LocalNodeState(parts[0]),
70
-			ControlAvailable: len(parts) == 2 && parts[1] == "manager",
69
+			NodeState:        swarm.LocalNodeState(state),
70
+			ControlAvailable: role == "manager",
71 71
 		}
72 72
 	}
73 73
 	err := cli.checkResponseErr(resp)