Giter Site home page Giter Site logo

arrays within query parameters about docker-modem HOT 9 OPEN

apocas avatar apocas commented on August 22, 2024 1
arrays within query parameters

from docker-modem.

Comments (9)

 avatar commented on August 22, 2024

@twifty arrays aren't being querystringify'd properly due to buildQuerystring (https://github.com/apocas/docker-modem/blob/master/lib/modem.js#L350). Arrays are being stringify'd before being passed to querystring.

/cc @apocas

from docker-modem.

apocas avatar apocas commented on August 22, 2024

Interesting, will check this one.

from docker-modem.

apocas avatar apocas commented on August 22, 2024

I can't replicated this, there's even a test for this.

https://github.com/apocas/docker-modem/blob/master/test/modem_test.js#L109

INPUT:

 var opts = {
      "limit": 12,
      "filters": {
        "label": ["staging", "env=green"]
      },
      "t": ["repo:latest", "repo:1.0.0"]
    };

OUTPUT:
limit=12&filters={"label":["staging","env=green"]}&t=repo:latest&t=repo:1.0.0

The array "t" was properly converted.

from docker-modem.

 avatar commented on August 22, 2024

@apocas the test case works because of key !== 't'

clone[key] = (opts[key] && typeof opts[key] === 'object' && key !== 't') ?

from docker-modem.

apocas avatar apocas commented on August 22, 2024

Missed that. Can't remember why that was done.
I suspect that endpoints didn't behave the same way, regarding input.

Will check if removing the stringify doesn't break anything.

from docker-modem.

apocas avatar apocas commented on August 22, 2024

Passes: https://github.com/apocas/dockerode/blob/master/test/docker.js#L648
Fails: https://github.com/apocas/dockerode/blob/master/test/docker.js#L658

So we can't just remove the stringify. Add that parameter as an exception?

from docker-modem.

 avatar commented on August 22, 2024

@apocas looks like it was introduced with this commit: 8565c3f. Regarding my use case, as far as I remember it was related to passing an array of environment variables when creating/starting (not sure) a Docker container using dockerode. It was not working and debug'd down to this part of the code in docker-modem.

from docker-modem.

apocas avatar apocas commented on August 22, 2024

But we can't just remove this condition because the are endpoints expecting the data "stringifed". Like https://github.com/apocas/dockerode/blob/master/test/docker.js#L658

On the other hand there are parameters that are expected by Docker to be repeated like "t" in imageBuild. https://docs.docker.com/engine/api/v1.40/#operation/ImageBuild
"A name and optional tag to apply to the image in the name:tag format. If you omit the tag the default latest value is assumed. You can provide several t parameters."

If "extrahosts" is one of this cases we can add it to the exception list, like "t".
(Docker documentation does not detail this enough in this use case)

from docker-modem.

roddc avatar roddc commented on August 22, 2024

@apocas I tried to get multiple images, I need to pass names as array to query, but it doesn't work.
I think you need to check the opts[key] is Array or not

from docker-modem.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.