How to make http requests to unix socket?
Sebastiaan Koppe via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Aug 12 11:41:14 PDT 2017
On Friday, 11 August 2017 at 18:39:54 UTC, dvnguyen wrote:
> How to make http requests to unix socket? For example, in
> Docker engine api,
>
> curl --unix-socket /var/run/docker.sock
> http:/v1.24/containers/json
I made a pull request a year ago or so to have vibe-d's
requestHttp to support unix sockets. Call it like this
`requestHTTP("https+unix://%2Fvar%2Frun%2Fdocker.sock/containers/create`.
You will need to set some vibe-d tls things to accept the
connection.
Sönke just upgraded vibe-core/event-core to support it as well if
I remember it correctly (so you can also use vibe 8.x with
vibe-core).
As for endpoints which return streams (like
containers/"~id~"/logs?stdout=1&stderr=1&follow=1), Docker
multiplexes stdout/stderr over http with chunked
transfer-encoding.
The protocol is a 8 byte Header + Frame. The last four bytes in
the Header is an uint32 representing the frame size. The first
byte is either 1 -> stdout or 2 -> stderr, which designates the
type of the stream in the following frame.
More information about the Digitalmars-d-learn
mailing list