func apiClientForAddr(addr ma.Multiaddr) (cmdsHttp.Client, error) { _, host, err := manet.DialArgs(addr) if err != nil { return nil, err } return cmdsHttp.NewClient(host), nil }
func main() { flag.Parse() // extract address from host flag addr, err := ma.NewMultiaddr(*host) if err != nil { log.Fatal("NewMultiaddr() failed: ", err) } p := addr.Protocols() if len(p) < 2 { log.Fatal("need two protocols in host flag (/ip/tcp): ", addr) } _, host, err := manet.DialArgs(addr) if err != nil { log.Fatal("manet.DialArgs() failed: ", err) } if *verbose { // lower log level logging.SetDebugLogging() } // construct url to dial var u url.URL u.Scheme = "http" u.Host = host u.Path = *endpoint // show what we got start := time.Now() log.Debug("starting at %s, tries: %d, timeout: %s, url: %s", start, *tries, *timeout, u) for *tries > 0 { err := checkOK(http.Get(u.String())) if err == nil { log.Debugf("ok - endpoint reachable with %d tries remaining, took %s", *tries, time.Since(start)) os.Exit(0) } log.Debug("get failed: ", err) time.Sleep(*timeout) *tries-- } log.Error("failed.") os.Exit(1) }