diff options
author | Jhon Honce <jhonce@redhat.com> | 2021-03-29 16:57:02 -0700 |
---|---|---|
committer | Jhon Honce <jhonce@redhat.com> | 2021-03-30 08:46:41 -0700 |
commit | e731e624ca70288a1a16468deecd9b0d2de7f069 (patch) | |
tree | 1d249406e55effaf71bfa13ece7fce233f865372 | |
parent | b9e064ab84044f3db25e48384a1bd6fe5dc6ecdc (diff) | |
download | podman-e731e624ca70288a1a16468deecd9b0d2de7f069.tar.gz podman-e731e624ca70288a1a16468deecd9b0d2de7f069.tar.bz2 podman-e731e624ca70288a1a16468deecd9b0d2de7f069.zip |
Remove semantic version suffices from API calls
When using the bindings do not include the pre-release or build
metadata in the URL for the service. This breaks older services, while
not providing that much additional functionality.
[NO TESTS NEEDED]
Signed-off-by: Jhon Honce <jhonce@redhat.com>
-rw-r--r-- | pkg/bindings/connection.go | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/pkg/bindings/connection.go b/pkg/bindings/connection.go index 21a8e7a8b..fd93c5ac7 100644 --- a/pkg/bindings/connection.go +++ b/pkg/bindings/connection.go @@ -22,14 +22,6 @@ import ( "golang.org/x/crypto/ssh/agent" ) -var ( - BasePath = &url.URL{ - Scheme: "http", - Host: "d", - Path: "/v" + version.APIVersion[version.Libpod][version.CurrentAPI].String() + "/libpod", - } -) - type APIResponse struct { *http.Response Request *http.Request @@ -318,16 +310,24 @@ func (c *Connection) DoRequest(httpBody io.Reader, httpMethod, endpoint string, err error response *http.Response ) - safePathValues := make([]interface{}, len(pathValues)) - // Make sure path values are http url safe + + params := make([]interface{}, len(pathValues)+3) + + // Including the semver suffices breaks older services... so do not include them + v := version.APIVersion[version.Libpod][version.CurrentAPI] + params[0] = v.Major + params[1] = v.Minor + params[2] = v.Patch for i, pv := range pathValues { - safePathValues[i] = url.PathEscape(pv) + // url.URL lacks the semantics for escaping embedded path parameters... so we manually + // escape each one and assume the caller included the correct formatting in "endpoint" + params[i+3] = url.PathEscape(pv) } - // Lets eventually use URL for this which might lead to safer - // usage - safeEndpoint := fmt.Sprintf(endpoint, safePathValues...) - e := BasePath.String() + safeEndpoint - req, err := http.NewRequest(httpMethod, e, httpBody) + + uri := fmt.Sprintf("http://d/v%d.%d.%d/libpod"+endpoint, params...) + logrus.Debugf("DoRequest Method: %s URI: %v", httpMethod, uri) + + req, err := http.NewRequest(httpMethod, uri, httpBody) if err != nil { return nil, err } |