// getApiClient checks the repo, and the given options, checking for // a running API service. if there is one, it returns a client. // otherwise, it returns errApiNotRunning, or another error. func getApiClient(repoPath, apiAddrStr string) (cmdsHttp.Client, error) { if apiAddrStr == "" { var err error if apiAddrStr, err = fsrepo.APIAddr(repoPath); err != nil { return nil, err } } addr, err := ma.NewMultiaddr(apiAddrStr) if err != nil { return nil, err } client, err := apiClientForAddr(addr) if err != nil { return nil, err } // make sure the api is actually running. // this is slow, as it might mean an RTT to a remote server. // TODO: optimize some way if err := apiVersionMatches(client); err != nil { return nil, err } return client, nil }
// getApiClient checks the repo, and the given options, checking for // a running API service. if there is one, it returns a client. // otherwise, it returns errApiNotRunning, or another error. func getApiClient(repoPath, apiAddrStr string) (cmdsHttp.Client, error) { if apiAddrStr == "" { var err error if apiAddrStr, err = fsrepo.APIAddr(repoPath); err != nil { return nil, err } } addr, err := ma.NewMultiaddr(apiAddrStr) if err != nil { return nil, err } return apiClientForAddr(addr) }
// getApiClient checks the repo, and the given options, checking for // a running API service. if there is one, it returns a client. // otherwise, it returns errApiNotRunning, or another error. func getApiClient(repoPath, apiAddrStr string) (cmdsHttp.Client, error) { var apiErrorFmt string switch { case osh.IsUnix(): apiErrorFmt = apiFileErrorFmt + checkIPFSUnixFmt case osh.IsWindows(): apiErrorFmt = apiFileErrorFmt + checkIPFSWinFmt default: apiErrorFmt = apiFileErrorFmt } var addr ma.Multiaddr var err error if len(apiAddrStr) != 0 { addr, err = ma.NewMultiaddr(apiAddrStr) if err != nil { return nil, err } if len(addr.Protocols()) == 0 { return nil, fmt.Errorf("mulitaddr doesn't provide any protocols") } } else { addr, err = fsrepo.APIAddr(repoPath) if err == repo.ErrApiNotRunning { return nil, err } if err != nil { return nil, fmt.Errorf(apiErrorFmt, repoPath, err.Error()) } } if len(addr.Protocols()) == 0 { return nil, fmt.Errorf(apiErrorFmt, repoPath, "multiaddr doesn't provide any protocols") } return apiClientForAddr(addr) }