httpie-unixsocket
httpie-unixsocket copied to clipboard
Look into supporting nicer URL syntax of curl-unix-socket
Inspired by issue #7, as I think the current syntax is ugly and too error-prone.
root@db2722aaf51d:/# curl-unix-socket unix:///var/run/docker.sock:/info
{"Containers":2,"Debug":1,"DockerRootDir":"/var/lib/docker","Driver":"btrfs","DriverStatus":[],"ExecutionDriver":"native-0.2","ID":"EXI6:MA6J:YU45:24S3:CA6L:37PQ:JLKG:WPWI:5NFP:L3XW:WECP:HWK3","IPv4Forwarding":1,"Images":86,"IndexServerAddress":"https://index.docker.io/v1/","InitPath":"/usr/bin/docker","InitSha1":"","KernelVersion":"4.0.0-rc3","Labels":null,"MemTotal":33343193088,"MemoryLimit":1,"NCPU":8,"NEventsListener":0,"NFd":24,"NGoroutines":53,"Name":"debian","OperatingSystem":"Debian GNU/Linux 8 (jessie)","RegistryConfig":{"IndexConfigs":{"docker.io":{"Mirrors":null,"Name":"docker.io","Official":true,"Secure":true}},"InsecureRegistryCIDRs":["127.0.0.0/8"]},"SwapLimit":1,"SystemTime":"2015-03-18T12:00:18.261465223-07:00"}
Cc: @jakubroztocil, @jfrazelle
Sounds good, anything needed from HTTTPie?
@jkbrzt: Question: Is it possible for an HTTPie transport plugin to support multiple prefixes? E.g.:
class UnixSocketTransportPlugin(TransportPlugin):
name = 'UNIX socket transport'
prefix = ['http://sock.local/', 'http+unix://']
def get_adapter(self):
return UnixAdapter()
Because I have a new scheme that I'm playing with, but I thought it would be nice to support the old prefix too. Though maybe I shouldn't worry too much about it, since the version number is < 1 and thus arguably, people should be willing to accept breaking changes.
@msabramo the plugin API currently only supports one prefix per plugin. But you could, for example, expose two plugins (differing only in the prefix) in setup.py, e.g.:
entry_points={
'httpie.plugins.transport.v1': [
'httpie_unixsocket = httpie_unixsocket:UnixSocketTransportPlugin',
'httpie_unixsocket_legacy = httpie_unixsocket:LegacyUnixSocketTransportPlugin',
]
},
you can't use sock.local
".local" is the domain used to advertise with multicast DNS.
you need to use a subdomain of your own domain name.
@jkbrzt: Thanks! Yeah that's what I was starting to think of as well after I posted my comment. Not a bad option. Although I might end up not needing it, because folks seem to be wanting to keep the http+unix:// protocol, in which case I could get by with just one plugin object.
Note: I have begun working on this in https://github.com/msabramo/requests-unixsocket/pull/34
Thanks, @graingert! Yeah a few people have mentioned that; I wasn't aware that .local has special meaning; good to know! And I see you found and commented on https://github.com/msabramo/requests-unixsocket/pull/34, which is great, because that's where all that discussion is happening.