summaryrefslogtreecommitdiffstats
path: root/src/transport.rs
AgeCommit message (Collapse)Author
2021-02-20Fix lifetimes (#272)Eli W. Hunter
* Some changes * Clarify lifetimes in transport.rs * Fix remaining easy lifetimes in lib.rs * Refactor Images::build for new lifetimes to work * Fix Exec::start() * Fix Container::exec() * Make header_bytes not a Vec * Make Docker::{images,...}() lifetimes explicit * Fix Containers::get() * Remove unnecessary locals from examples * Update changelog * Appease clippy
2021-02-08Add services api (#263)Wojciech Kępka
* Add initial Services models * Add initial Services controllers * Add ServicesListOptions * Rename ServicesList -> ServiceList * Fix some optional fields on ServiceRep * Add Service::inspect * Add Service::delete * Add Service::logs * Rename example logs -> containerlogs * Add ServiceOptions, ServiceCreateInfo, fix typo * Add a way to pass headers to request, add Payload and Headers for easier types * Add Service::create * Add examples * Fix fmt * Fix example
2021-01-15Upgrade all dependencies (#246)maowtm
* Upgrade dependencies and add required features * Special case for parsing unix:// url in Docker::new hyper::Uri doesn't allow urls with empty authority, hence parsing unix:///var/run/docker.sock will fail. * Remove empty /lib.rs * Fix cargo fmt
2021-01-09Allow `Image::pull` to handle chunks with multiple JSON values (#240)Tom Fay
* add fn for stream post that returns json values use when pulling docker images, to fix bug where shiplift would error if multiple JSON values were returned in a single HTTP chunk * fix unnecessary lazy evaluation * add comments to stream post requests
2020-11-10Enable streaming results over UNIX sockets (#166) (#238)Dustin Frisch
2020-07-23Async/Await Support (continuation of #191) (#229)Eli W. Hunter
* it builds! * remove unused dependencies * bump dependencies * reimplement 'exec' endpoint * update a few more examples * update remaining examples * fix doc tests, remove unused 'read' module * remove feature-gated async closures * split futures dependency to just 'futures-util' * update version and readme * make functions accepting Body generic over Into<Body> again * update changelog * reinstate 'unix-socket' feature * reinstate 'attach' endpoint * fix clippy lints * fix documentation typo * fix container copyfrom/into implementations * add convenience methods for TtyChunk struct * remove 'main' from code example to silence clippy lint * Update hyper to 0.13.1 * Add Send bounds to TtyWriter * Appease clippy * Fix examples * Update issue in changelog Co-authored-by: Daniel Eades <danieleades@hotmail.com> Co-authored-by: Marc Schreiber <marc.schreiber@aixigo.de>
2019-12-26Re-export hyper::Uri as shiplift::Uri (#209)Thomas Eizinger
This patch removes the explicit dependency on the http crate and instead accesses the re-exported version of hyper. This should make the update process slightly easier because those versions would need to be kept in sync manually. We also re-export hyper::Uri as shiplift::Uri because it is part of the public API of shiplift::Docker. This allows users to access the Uri type without having to seperately depend on http or hyper.
2019-12-05Don't vendor OpenSSL except on Windows (#197)Andy Caldwell
* Don't vendor OpenSSL except on Windows * Use a feature rather than guessing based on OS
2019-03-30Add a registry authentication. (#157)Anton Ageev
2019-02-22Migrate serde dependency to use derive feature (#152)Vegard Sandengen
This is in line with best practices recommended by serde[1]. This will also resolve downstream crates depending on shiplift who enable the serde derive feature, due to Cargos unification of features for each crate[2]. [1]: https://github.com/serde-rs/serde/issues/1441 [2]: https://github.com/rust-lang/cargo/issues/4361#issuecomment-348538243
2019-02-13Copy from container (#150)Andy Caldwell
* Add 'copy_from' function to 'Container' * Run clippy * Update deps
2019-01-08Make TLS/openssl an optional dependency (#130)rsdy
2018-12-24update to 2018 edition (#141)doug tangren
* update to 2018 edition * remove more externs * bump version
2018-12-23update travis build (#140)doug tangren
* update travis build * notes on fmting * remove quotes * comment below * rouge quote * first host.port usage * fix deprecation warning
2018-12-22Support interactive stdin/stdout streams (#136)Dylan McKay
* Support interactive stdin/stdout streams This adds support for streaming stdin, stderr, and stdout independently to a running container. The underlying API is futures-based, meaning the code is implemented asynchronously. A synchronous API is also exposed, which is implemented by simply waiting on the asynchronous API futures. This also modifies the existing Tty logic so that the storage type of the data is a Vec<u8> rather than a String. This is also how the Rust standard library persists data from the standard streams. In my particular application, I'm using stdin/stdout as the communication method between a container a host application. In it, a byte-based protocol is used. Streaming works by performing a TCP upgrade; upgrading a higher-level HTTP connection to a lower-level TCP byte stream upon agreement with the server. Docker will automatically upgrade HTTP container log requests to TCP byte streams of a custom std{in,out,err} multiplexing protocol if the client requests it with the 'Connection: Upgrade' header. * Return an error rather than panic when Docker refuses to upgrade to TCP * Add interpret-as-string accessors to tty::Chunk Also updates the examples to use them.
2018-11-14Async api (#128)Antoine Büsch
* Refactored Transport for better async use Still a bit rough, but it now builds a big future using combinators. It still does one `Runtime::block_on()` to keep the existing API, but this is a first up before making the whole API async. * Migrate most APIs to be Future-based I still need to finish a few of the more tricky ones that I've commented out for now, but most of it compiles and some examples work. In particular, `Docker::stats()` now properly returns an async stream of stats. * Fix events and containerinspect examples * Fix imageinspect, images, info and top examples * Fix containercreate, imagedelete and imagepull examples * Fix more examples * Add back debug statement in Transport::request * De-glob imports in examples * Remove unused imports in examples * Fix NetworkCreateOptions serialization * Add back error message extraction in Transport * Fix Container::create serialization of options * Add containerdelete example * Simplify result * Fix some error handling to remove unwrap() * Fix Image::export() * Fix imagebuild example * Add adapter from Stream of Chunks to AsyncRead Having an `AsyncRead` is required to be able to use the `FramedRead` and `Decoder` stuff from tokio_codec. This code is "borrowed" from https:/github.com/ferristseng/rust-ipfs-api though should probably be moved to its own crate or to tokio_codec. * Fix Container::logs() It now properly demuxes stdout/stderr, and returns a `Stream<Item = TtyLine>`. * Fix Container::export() * Use LineCodec for streaming JSON Although in my limited testing it seemed to work fine, there is no guarantee that 1 chunk == 1 piece of valid JSON. However, each JSON structure seems to be serialized on one line, so use LineCodec to turn the body into a stream of lines, then deserialize over this. * Fix serialization of ExecContainerOptions * Fix Container::exec() (kind of...) * Simplify deserialisation in Image::delete() * Small clean-ups * More clean ups * Fix rustdoc + remove extraneous "extern crate" * Fix doc example * Fix formatting
2018-10-10fix a number of clippy warnings (#122)doug tangren
2018-10-08try to get a consistent and repeatable codestyle goingsoftprops
2018-10-01Migrate to serde_jsonAntoine Büsch
2018-09-29Merge branch 'master' into update-to-hyper-0.12Antoine Büsch
2018-09-27Fix build with non-nightly RustFelix Krull
2018-09-24Fix typosAntoine Büsch
2018-09-24Remove use of wait() in get_error_message()Antoine Büsch
2018-09-24Remove unused InteractiveStreamAntoine Büsch
2018-09-24Remove dependency on tokio-coreAntoine Büsch
Tokio-core seems to be deprecated so remove it and use Tokio's Runtime instead.
2018-09-08Make Unix socket support optionalFelix Krull
By making Unix sockets optional, hyperlocal becomes optional as well, which means shiplift builds on Windows.
2018-08-07Update to Hyper 0.12Dylan McKay
2018-07-29Add support for the 304 Not Modified HTTP status codeDylan McKay
2017-09-09code style enforcementsoftprops
2017-06-25apply rustfmtsoftprops
2017-06-25replace all uses of try with ?. fixes #42softprops
2017-04-25The transport extracts a message from the response JSON if possibleTim Martin
2017-01-21Kill unused import warningsPete Hayes
2016-12-27Update hyper to 0.9 (fix #13)Roey Darwish Dror
2016-12-26Set the Host headerRoey Darwish Dror
It is currently impossible to create new container. This patch resolves this issue. See the following link for details: https://github.com/docker/docker/issues/20865
2016-07-01don't panicGreg Weber
2016-01-18rust fmtsoftprops
2016-01-18massive progresssoftprops
2016-01-15wip for image buildingsoftprops
2016-01-03add debug loggingsoftprops
2016-01-03rustfmtsoftprops
2016-01-03impl container filtersoftprops
2016-01-03better error repsoftprops
2016-01-03most things don't require mutsoftprops
2016-01-03document transportsoftprops
2016-01-03rustfmtsoftprops
2016-01-03back to shorter namesoftprops
2016-01-03fix some warningssoftprops
2016-01-03transitioning into hyperlocalsoftprops
2015-07-13update depssoftprops