Merge pull request #1142 from TomasTomecek/dont-url-encode-repository-name

docker client consistency: don't quote ':/'
This commit is contained in:
Daniel Nephin 2016-08-10 14:52:07 -04:00 committed by GitHub
commit 7de30c3a9b
2 changed files with 11 additions and 3 deletions

View File

@ -14,6 +14,7 @@
import json
import struct
from functools import partial
import requests
import requests.exceptions
@ -156,7 +157,8 @@ class Client(
'instead'.format(arg, type(arg))
)
args = map(six.moves.urllib.parse.quote_plus, args)
quote_f = partial(six.moves.urllib.parse.quote_plus, safe="/:")
args = map(quote_f, args)
if kwargs.get('versioned_api', True):
return '{0}/v{1}{2}'.format(

View File

@ -159,9 +159,15 @@ class DockerApiTest(DockerClientTest):
'{0}{1}'.format(url_prefix, 'hello/somename/world/someothername')
)
url = self.client._url('/hello/{0}/world', '/some?name')
url = self.client._url('/hello/{0}/world', 'some?name')
self.assertEqual(
url, '{0}{1}'.format(url_prefix, 'hello/%2Fsome%3Fname/world')
url, '{0}{1}'.format(url_prefix, 'hello/some%3Fname/world')
)
url = self.client._url("/images/{0}/push", "localhost:5000/image")
self.assertEqual(
url,
'{0}{1}'.format(url_prefix, 'images/localhost:5000/image/push')
)
def test_url_invalid_resource(self):