docker-py icon indicating copy to clipboard operation
docker-py copied to clipboard

Handle custom headers in post request

Open montanier opened this issue 2 years ago • 0 comments

Issue

As of now, options such as stream, or timeout are not passed to the call to the docker API.

Cause

These options are circulated through the headers of the http query to the docker API. But recent modifications of the requests library state that adding custom headers to an http query should be handled by the code inheriting from "". See: https://github.com/psf/requests/blob/786255613bd92f87c9c8f066c4271aab1b9eeaad/requests/adapters.py#L401-L413

Solution

Therefore, I think that a add_headers methods should be added to the UnixHTTPAdapter.

Here is my (particularly ugly) workaround:

        def add_headers(self, request, **kwargs):
            from requests.structures import CaseInsensitiveDict
            new_head = dict(request.headers)
            for key, val in kwargs.items():
                new_head[key] = str(val)
            request.headers = CaseInsensitiveDict(new_head)

        cli = docker.APIClient()
        if hasattr(cli, '_transport_adapter'):
            cli._transport_adapter.add_headers = add_headers

montanier avatar Jul 22 '22 11:07 montanier