diff --git a/.travis.yml b/.travis.yml index 4995c9f..51882d2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,8 @@ sudo: required language: rust rust: - - nightly-2017-10-11 + - nightly-2018-11-24 + - nightly matrix: allow_failures: - rust: nightly @@ -24,12 +25,18 @@ script: - | travis-cargo build -- --all-features --all --locked && travis-cargo test -- --all-features --all && - travis-cargo --only nightly-2017-10-11 doc -- --no-deps --all-features --all + travis-cargo --only nightly-2018-11-24 doc -- --no-deps --all-features --all after_script: - sudo docker-compose -f diesel/docker-compose.db.yml down -v after_success: - - travis-cargo --only nightly-2017-10-11 doc-upload + - travis-cargo --only nightly-2018-11-24 doc-upload env: global: - TRAVIS_CARGO_NIGHTLY_FEATURE="" - secure: hwv0LMn8lmU6kJy3kwumu/V+k0Nh0yJ8/3UFnaYT7WefcXWWl5B8oXem7+SEtSpe6/dfJ+rX1MpwAJhfRlNXSrGc3BZwIvWy6G19AyeXqGLhHpJVXjA3XWXyer72BHuB59FNw0glGVg+p2bl/pOkzUDkQotBoTnMBusSgaTXgPwFOG35KcDf/zfpOd7Cu2mSOLRbQ9KwxhS0v5NyDdpxWrSd1YQYbUUveaBlLKBl87A3ik8StErWopiMUGM4CO4OAR2giUhKkC4fqeodY9+kGwgydkMluKrRTC40xDm25GexDSPlcbs3SiqTd7ezmlk7+N+qU1dclmutkpldr59WZjKiG//CaaPiE7pa+7ferF08p+TyN+W+ce5kqNUNI2bqJy8Pk0Al6YAnwn2SAVZ7WCL8PO/B4NMO7LO5WO6+w9DPSE0cFvyuRCyMHU/q2zTZjB+4A5oTgeZvP3U1TSSPKAslb9LCY7SxwJTin6VS3dfLnVS+dMJe1dpn/Xa7eqp2INcEPKTFMOf63iwP1Go5mvcIvUF4v1JDbAfb1gU5UFwN6an5NAgJUlsfB0Un2K48APyIXrIWcGuHHT9yJV9jpA6TfVkJN7CfTJfPoR0vZbmE9fChZ69JY0HfK+EvVcF3utkIhWXiZ5hjUtcVa2dMVehyRoGCYzimVCWPpllsKSs= +branches: + only: + - master + +notifications: + email: false diff --git a/Cargo.lock b/Cargo.lock index 4c2b3f3..b7bac10 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,41 +1,25 @@ -[root] -name = "rowdy-diesel" -version = "0.0.8" -dependencies = [ - "diesel 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "diesel_codegen 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "r2d2 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "r2d2-diesel 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rocket 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rowdy 0.0.8", - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. [[package]] -name = "advapi32-sys" -version = "0.2.0" +name = "MacTypes-sys" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "aho-corasick" -version = "0.6.3" +name = "ansi_term" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "ansi_term" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "antidote" @@ -47,120 +31,136 @@ name = "argon2rs" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "blake2-rfc 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)", - "scoped_threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "arrayvec" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "atty" -version = "0.2.3" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "autocfg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "base64" -version = "0.6.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "biscuit" -version = "0.0.7" +name = "base64" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "data-encoding 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", - "num 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "bitflags" -version = "0.7.0" +name = "biscuit" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "bitflags" -version = "0.9.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "blake2-rfc" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "byteorder" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bytes" -version = "0.4.5" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cc" -version = "1.0.3" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cfg-if" -version = "0.1.2" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "chrono" -version = "0.4.0" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "clap" -version = "2.27.1" +version = "2.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "coco" -version = "0.1.1" +name = "cloudabi" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "either 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -170,216 +170,250 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cookie" -version = "0.9.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "core-foundation" -version = "0.2.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "core-foundation-sys" -version = "0.2.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "crypt32-sys" -version = "0.2.0" +name = "crossbeam-deque" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-queue" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "csv" -version = "1.0.0-beta.5" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "csv-core 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", + "csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "csv-core" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "data-encoding" -version = "1.2.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "derive-error-chain" -version = "0.10.1" +name = "devise" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", + "devise_codegen 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "devise_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "diesel" -version = "0.16.0" +name = "devise_codegen" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libsqlite3-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "mysqlclient-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "pq-sys 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "devise_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "diesel_codegen" -version = "0.16.0" +name = "devise_core" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "diesel 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "diesel_infer_schema 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "diesel_infer_schema" -version = "0.16.0" +name = "diesel" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "diesel 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "diesel_derives 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libsqlite3-sys 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mysqlclient-sys 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "pq-sys 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "r2d2 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "dotenv" -version = "0.10.1" +name = "diesel_derives" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "derive-error-chain 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "dtoa" -version = "0.4.2" +name = "fnv" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "either" -version = "1.3.0" +name = "foreign-types" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] -name = "error-chain" -version = "0.10.0" +name = "foreign-types-shared" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "foreign-types" -version = "0.2.0" +name = "fuchsia-cprng" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "fuchsia-zircon" -version = "0.2.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fuchsia-zircon-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "fuchsia-zircon-sys" -version = "0.2.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "futures" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "gcc" -version = "0.3.54" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "httparse" -version = "1.2.3" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hyper" -version = "0.10.13" +version = "0.10.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "idna" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "indexmap" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "iovec" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "isatty" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "itoa" -version = "0.3.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -398,117 +432,139 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazy_static" -version = "0.2.9" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazycell" -version = "0.5.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lber" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "nom 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ldap3" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", - "lber 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lber 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "nom 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tls 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds-proto 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libc" -version = "0.2.33" +version = "0.2.50" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libsqlite3-sys" -version = "0.8.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "linked-hash-map" -version = "0.4.2" +name = "lock_api" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "log" -version = "0.3.8" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "matches" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "1.0.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "memoffset" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "mime" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mio" -version = "0.6.11" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fuchsia-zircon 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazycell 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mio-uds" -version = "0.6.4" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -517,44 +573,52 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mysqlclient-sys" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "native-tls" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "openssl 0.9.20 (registry+https://github.com/rust-lang/crates.io-index)", - "schannel 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)", + "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "net2" -version = "0.2.31" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "nodrop" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "nom" version = "2.2.1" @@ -562,318 +626,472 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "num" -version = "0.1.40" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-bigint 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "num-complex 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", - "num-rational 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", + "num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", + "num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-bigint" -version = "0.1.40" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-complex" -version = "0.1.40" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-integer" -version = "0.1.35" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-iter" -version = "0.1.34" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-rational" -version = "0.1.39" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-bigint 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-traits" -version = "0.1.40" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "num_cpus" -version = "1.7.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "openssl" -version = "0.9.20" +version = "0.10.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "foreign-types 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.20 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "openssl-probe" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "openssl-sys" -version = "0.9.20" +version = "0.9.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "owning_ref" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "ordermap" -version = "0.2.13" +name = "parking_lot_core" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "pear" -version = "0.0.10" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "pear_codegen 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "pear_codegen" -version = "0.0.10" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "yansi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "percent-encoding" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "pkg-config" -version = "0.3.9" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "pq-sys" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro2" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "quote" -version = "0.3.15" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "r2d2" -version = "0.7.4" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "scheduled-thread-pool 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "scheduled-thread-pool 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "r2d2-diesel" -version = "0.16.0" +name = "rand" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "diesel 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "r2d2 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.3.17" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fuchsia-zircon 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rayon" -version = "0.7.1" +name = "rand" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rayon-core 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rayon-core" -version = "1.2.1" +name = "rand_chacha" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "coco 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "redox_syscall" -version = "0.1.31" +name = "rand_core" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] -name = "redox_termios" +name = "rand_core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_isaac" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "redox_syscall 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "regex" -version = "0.2.2" +name = "rand_jitter" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "regex-syntax" -version = "0.4.1" +name = "rand_os" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_pcg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_xorshift" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_syscall" +version = "0.1.51" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "redox_termios" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "remove_dir_all" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "ring" -version = "0.11.0" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rocket" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cookie 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", - "isatty 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ordermap 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "pear 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", - "pear_codegen 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "state 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "yansi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "isatty 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pear 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rocket_codegen 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rocket_http 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "state 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "yansi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rocket_codegen" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rocket 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "yansi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "devise 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "rocket_http 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "yansi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rocket_cors" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rocket 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "rocket 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicase_serde 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rocket_http" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cookie 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pear 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "state 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rowdy" -version = "0.0.8" +version = "0.0.9" dependencies = [ "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "biscuit 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "csv 1.0.0-beta.5 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ldap3 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rocket 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rocket_codegen 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rocket_cors 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_test 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "strfmt 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "biscuit 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "csv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ldap3 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rocket 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rocket_cors 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_test 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "strfmt 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rowdy-cli" -version = "0.0.8" +version = "0.0.9" dependencies = [ - "clap 2.27.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rocket 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rocket_codegen 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rowdy 0.0.8", - "rowdy-diesel 0.0.8", - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rocket 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rowdy 0.0.9", + "rowdy-diesel 0.0.9", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rowdy-diesel" +version = "0.0.9" +dependencies = [ + "diesel 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "r2d2 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rocket 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rowdy 0.0.9", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -883,34 +1101,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "rustc_version" -version = "0.1.7" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ryu" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "safemem" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "schannel" -version = "0.1.8" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "advapi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crypt32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", - "secur32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "scheduled-thread-pool" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -918,12 +1136,12 @@ dependencies = [ [[package]] name = "scoped-tls" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "scoped_threadpool" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -932,37 +1150,37 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "secur32-sys" -version = "0.2.0" +name = "security-framework" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "security-framework" -version = "0.1.16" +name = "security-framework-sys" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "security-framework-sys" -version = "0.1.16" +name = "semver" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "semver" -version = "0.1.20" +name = "semver-parser" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -972,46 +1190,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.16" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde_derive" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive_internals 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_derive_internals" -version = "0.16.0" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", - "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.5" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_test" -version = "1.0.16" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1021,7 +1229,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "slab" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1031,40 +1239,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "smallvec" -version = "0.4.4" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "stable_deref_trait" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "state" -version = "0.3.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "strfmt" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "strsim" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "syn" -version = "0.11.11" +version = "0.15.29" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "synom" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1073,11 +1278,16 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "tempdir" -version = "0.3.5" +name = "tempfile" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1085,62 +1295,116 @@ name = "termion" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "textwrap" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "thread_local" -version = "0.3.4" +name = "time" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "time" -version = "0.1.38" +name = "tokio" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-codec" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-core" -version = "0.1.10" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-current-thread" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-executor" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-fs" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "scoped-tls 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-io" -version = "0.1.3" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1148,72 +1412,168 @@ name = "tokio-proto" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-reactor" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-service" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-sync" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-tcp" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-threadpool" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-timer" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-tls" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-udp" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-uds" -version = "0.1.6" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-uds" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-uds-proto" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "toml" -version = "0.4.5" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1231,15 +1591,15 @@ name = "unicase" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicase" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1247,8 +1607,8 @@ name = "unicase_serde" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1256,45 +1616,40 @@ name = "unicode-bidi" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicode-normalization" -version = "0.1.5" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "unicode-width" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unicode-xid" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unreachable" -version = "1.0.0" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "untrusted" -version = "0.5.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "url" -version = "1.5.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1302,15 +1657,10 @@ name = "url_serde" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "utf8-ranges" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "uuid" version = "0.4.0" @@ -1321,34 +1671,48 @@ dependencies = [ [[package]] name = "vcpkg" -version = "0.2.2" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "vec_map" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "version_check" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "void" -version = "1.0.2" +name = "winapi" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" -version = "0.2.8" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "winapi-build" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "ws2_32-sys" version = "0.2.1" @@ -1360,166 +1724,204 @@ dependencies = [ [[package]] name = "yansi" -version = "0.3.4" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "yansi" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum advapi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a" -"checksum aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699" +"checksum MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eaf9f0d0b1cc33a4d2aee14fb4b2eac03462ef4db29c8ac4057327d8a71ad86f" +"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" "checksum antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34fde25430d87a9388dadbe6e34d7f72a462c8b43ac8d309b42b0a8505d7e2a5" "checksum argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f67b0b6a86dae6e67ff4ca2b6201396074996379fba2b92ff649126f37cb392" -"checksum atty 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "21e50800ec991574876040fff8ee46b136a53e985286fbe6a3bdfe6421b78860" -"checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9" -"checksum biscuit 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "cb6d7f739fdf63978981834b8f6cd69210266129d7521c623e7ad96f36ec4b9e" -"checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" -"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" -"checksum blake2-rfc 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" = "0c6a476f32fef3402f1161f89d0d39822809627754a126f8441ff2a9d45e2d59" -"checksum byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff81738b726f5d099632ceaffe7fb65b90212e8dce59d518729e7e8634032d3d" -"checksum bytes 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d828f97b58cc5de3e40c421d0cf2132d6b2da4ee0e11b8632fa838f0f9333ad6" -"checksum cc 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a9b13a57efd6b30ecd6598ebdb302cca617930b5470647570468a65d12ef9719" -"checksum cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de" -"checksum chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c20ebe0b2b08b0aeddba49c609fe7957ba2e33449882cb186a180bc60682fa9" -"checksum clap 2.27.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1b8c532887f1a292d17de05ae858a8fe50a301e196f9ef0ddb7ccd0d1d00f180" -"checksum coco 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c06169f5beb7e31c7c67ebf5540b8b472d23e3eade3b2ec7d1f5b504a85f91bd" +"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" +"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" +"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" +"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" +"checksum biscuit 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92eac19d602da63cc2ced79a098cd608590d9688300d0fb50c81dde8d327b3d9" +"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" +"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" +"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +"checksum cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)" = "d01c69d08ff207f231f07196e30f84c70f1c815b04f980f8b7b01ff01f05eb92" +"checksum cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "11d43355396e872eefb45ce6342e4374ed7bc2b3a502d1b28e36d6e23c05d1f4" +"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" +"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" +"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" -"checksum cookie 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "477eb650753e319be2ae77ec368a58c638f9f0c4d941c39bad95e950fb1d1d0d" -"checksum core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25bfd746d203017f7d5cbd31ee5d8e17f94b6521c7af77ece6c9e4b2d4b16c67" -"checksum core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "065a5d7ffdcbc8fa145d6f0746f3555025b9097a9e9cda59f7467abae670c78d" -"checksum crypt32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e34988f7e069e0b2f3bfc064295161e489b2d4e04a2e4248fb94360cdf00b4ec" -"checksum csv 1.0.0-beta.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e7a9e063dcebdb56c306f23e672bfd31df3da8ec5f6d696b35f2c29c2a9572f0" -"checksum csv-core 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ae1fbabf21d9a52d04675cc5b032d7bae24ecdcd22646f7eefcd0496a122686c" -"checksum data-encoding 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d867ddbf09de0b73e09ec798972fb7f870495a0893f6f736c1855448c5a56789" -"checksum derive-error-chain 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3c9ca9ade651388daad7c993f005d0d20c4f6fe78c1cdc93e95f161c6f5ede4a" -"checksum diesel 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "304226fa7a3982b0405f6bb95dd9c10c3e2000709f194038a60ec2c277150951" -"checksum diesel_codegen 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18a42ca5c9b660add51d58bc5a50a87123380e1e458069c5504528a851ed7384" -"checksum diesel_infer_schema 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bf1957ff5cd3b04772e43c162c2f69c2aa918080ff9b020276792d236be8be52" -"checksum dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d6f0e2bb24d163428d8031d3ebd2d2bd903ad933205a97d0f18c7c1aade380f3" -"checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab" -"checksum either 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e311a7479512fbdf858fb54d91ec59f3b9f85bc0113659f46bba12b199d273ce" -"checksum error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8" -"checksum foreign-types 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e4056b9bd47f8ac5ba12be771f77a0dae796d1bbaaf5fd0b9c2d38b69b8a29d" -"checksum fuchsia-zircon 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f6c0581a4e363262e52b87f59ee2afe3415361c6ec35e665924eb08afe8ff159" -"checksum fuchsia-zircon-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "43f3795b4bae048dc6123a6b972cadde2e676f9ded08aef6bb77f5f157684a82" -"checksum futures 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "05a23db7bd162d4e8265968602930c476f688f0c180b44bdaf55e0cb2c687558" -"checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" -"checksum httparse 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "af2f2dd97457e8fb1ae7c5a420db346af389926e36f43768b96f101546b04a07" -"checksum hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)" = "368cb56b2740ebf4230520e2b90ebb0461e69034d85d1945febd9b3971426db2" -"checksum idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d" -"checksum iovec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b6e8b9c2247fcf6c6a1151f1156932be5606c9fd6f55a2d7f9fc1cb29386b2f7" -"checksum isatty 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "00c9301a947a2eaee7ce2556b80285dcc89558d07088962e6e8b9c25730f9dc6" -"checksum itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c" +"checksum cookie 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1465f8134efa296b4c19db34d909637cb2bf0f7aaf21299e23e18fa29ac557cf" +"checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" +"checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" +"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" +"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" +"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" +"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" +"checksum csv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "9fd1c44c58078cfbeaf11fbb3eac9ae5534c23004ed770cc4bfb48e658ae4f04" +"checksum csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5cdef62f37e6ffe7d1f07a381bc0db32b7a3ff1cac0de56cb0d81e71f53d65" +"checksum data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4f47ca1860a761136924ddd2422ba77b2ea54fe8cc75b9040804a0d9d32ad97" +"checksum devise 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "74e04ba2d03c5fa0d954c061fc8c9c288badadffc272ebb87679a89846de3ed3" +"checksum devise_codegen 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "066ceb7928ca93a9bedc6d0e612a8a0424048b0ab1f75971b203d01420c055d7" +"checksum devise_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf41c59b22b5e3ec0ea55c7847e5f358d340f3a8d6d53a5cf4f1564967f96487" +"checksum diesel 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a2469cbcf1dfb9446e491cac4c493c2554133f87f7d041e892ac82e5cd36e863" +"checksum diesel_derives 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "62a27666098617d52c487a41f70de23d44a1dc1f3aa5877ceba2790fb1f1cab4" +"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" +"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +"checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" +"checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" +"checksum hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "df0caae6b71d266b91b4a83111a61d2b94ed2e2bea024c532b933dcff867e58c" +"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" +"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" +"checksum isatty 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e31a8281fc93ec9693494da65fbf28c0c2aa60a2eaec25dc58e2f31952e95edc" +"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" -"checksum lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c9e5e58fa1a4c3b915a561a78a22ee0cac6ab97dca2504428bc1cb074375f8d5" -"checksum lazycell 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3b585b7a6811fb03aa10e74b278a0f00f8dd9b45dc681f148bb29fa5cb61859b" -"checksum lber 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b2ba3d9e03604fda60029cb5b2aa77bbcf8d7dd68a47592b3ff1f1df268c8d5e" -"checksum ldap3 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3bd15c8100d9f6a77aa421b7955e1bf074f079732d36405bea3ba6ab113ac7f0" -"checksum libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "5ba3df4dcb460b9dfbd070d41c94c19209620c191b0340b929ce748a2bcd42d2" -"checksum libsqlite3-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "370090ad578ba845a3ad4f383ceb3deba7abd51ab1915ad1f2c982cc6035e31c" -"checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" -"checksum log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b" -"checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376" -"checksum memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "148fab2e51b4f1cfc66da2a7c32981d1d3c083a803978268bb11fe4b86925e7a" +"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" +"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" +"checksum lber 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aa172a35dd26774593b503d085735a189e322d16a2049b2739eb7f914b141b36" +"checksum ldap3 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dae98945f9023ddb484ec9cd9faffddabf18174e1f08bab360848a36ab4f8a80" +"checksum libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "aab692d7759f5cd8c859e169db98ae5b52c924add2af5fbbca11d12fefb567c1" +"checksum libsqlite3-sys 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd6457c70bbff456d9fe49deaba35ec47c3e598bf8d7950ff0575ceb7a8a6ad1" +"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" +"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" +"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" +"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" +"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" "checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" -"checksum mio 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0e8411968194c7b139e9105bc4ae7db0bae232af087147e72f0616ebf5fdb9cb" -"checksum mio-uds 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1731a873077147b626d89cc6c2a0db6288d607496c5d10c0cfcf3adc697ec673" +"checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" +"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum mysqlclient-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "879ce08e38739c54d87b7f8332a476004fe2a095f40a142a36f889779d9942b7" -"checksum native-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04b781c9134a954c84f0594b9ab3f5606abc516030388e8511887ef4c204a1e5" -"checksum net2 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)" = "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09" +"checksum mysqlclient-sys 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7e9637d93448044078aaafea7419aed69d301b4a12bcc4aa0ae856eb169bef85" +"checksum native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8e08de0070bbf4c31f452ea2a70db092f36f6f2e4d897adf5674477d488fb2" +"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" +"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nom 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf51a729ecf40266a2368ad335a5fdde43471f545a967109cd62146ecf8b66ff" -"checksum num 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "a311b77ebdc5dd4cf6449d81e4135d9f0e3b153839ac90e648a8ef538f923525" -"checksum num-bigint 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "8fd0f8dbb4c0960998958a796281d88c16fbe68d87b1baa6f31e2979e81fd0bd" -"checksum num-complex 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "503e668405c5492d67cf662a81e05be40efe2e6bcf10f7794a07bd9865e704e6" -"checksum num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba" -"checksum num-iter 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)" = "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01" -"checksum num-rational 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "288629c76fac4b33556f4b7ab57ba21ae202da65ba8b77466e6d598e31990790" -"checksum num-traits 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "99843c856d68d8b4313b03a17e33c4bb42ae8f6610ea81b28abe076ac721b9b0" -"checksum num_cpus 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "514f0d73e64be53ff320680ca671b64fe3fb91da01e1ae2ddc99eb51d453b20d" -"checksum openssl 0.9.20 (registry+https://github.com/rust-lang/crates.io-index)" = "8bf434ff6117485dc16478d77a4f5c84eccc9c3645c4da8323b287ad6a15a638" -"checksum openssl-sys 0.9.20 (registry+https://github.com/rust-lang/crates.io-index)" = "0ad395f1cee51b64a8d07cc8063498dc7554db62d5f3ca87a67f4eed2791d0c8" -"checksum ordermap 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b81cf3b8cb96aa0e73bbedfcdc9708d09fec2854ba8d474be4e6f666d7379e8b" -"checksum pear 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "87dd0e084e2c18b047658e40f89b856dfc23104011fd43f9369e873d03b7f15b" -"checksum pear_codegen 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0455b67d07b3aa40a552256059f11eb8db3a848cbec81bae3e3cb366e6e74e24" -"checksum percent-encoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de154f638187706bde41d9b4738748933d64e6b37bdbffc0b47a97d16a6ae356" -"checksum pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903" -"checksum pq-sys 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4dfb5e575ef93a1b7b2a381d47ba7c5d4e4f73bff37cee932195de769aad9a54" -"checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" -"checksum r2d2 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2c8284508b38df440f8f3527395e23c4780b22f74226b270daf58fee38e4bcce" -"checksum r2d2-diesel 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f6b921696a6c45991296d21b52ed973b9fb56f6c47524fda1f99458c2d6c0478" -"checksum rand 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "61efcbcd9fa8d8fbb07c84e34a8af18a1ff177b449689ad38a6e9457ecc7b2ae" -"checksum rayon 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a77c51c07654ddd93f6cb543c7a849863b03abc7e82591afda6dc8ad4ac3ac4a" -"checksum rayon-core 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7febc28567082c345f10cddc3612c6ea020fc3297a1977d472cf9fdb73e6e493" -"checksum redox_syscall 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "8dde11f18c108289bef24469638a04dce49da56084f2d50618b226e47eb04509" +"checksum num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" +"checksum num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)" = "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1" +"checksum num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "b288631d7878aaf59442cffd36910ea604ecd7745c36054328595114001c9656" +"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" +"checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" +"checksum num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e" +"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" +"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" +"checksum openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)" = "84321fb9004c3bce5611188a644d6171f895fa2889d155927d528782edb21c5d" +"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" +"checksum openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)" = "cb534d752bf98cf363b473950659ac2546517f9c6be9723771614ab3f03bbc9e" +"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" +"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" +"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" +"checksum pear 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c26d2b92e47063ffce70d3e3b1bd097af121a9e0db07ca38a6cc1cf0cc85ff25" +"checksum pear_codegen 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "336db4a192cc7f54efeb0c4e11a9245394824cc3bcbd37ba3ff51240c35d7a6e" +"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" +"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" +"checksum pq-sys 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "6ac25eee5a0582f45a67e837e350d784e7003bd29a5f460796772061ca49ffda" +"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" +"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" +"checksum r2d2 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5d746fc8a0dab19ccea7ff73ad535854e90ddb3b4b8cdce953dd5cd0b2e7bd22" +"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" +"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" +"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +"checksum rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9ea758282efe12823e0d952ddb269d2e1897227e464919a554f2a03ef1b832" +"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b" -"checksum regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db" -"checksum ring 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1f2a6dc7fc06a05e6de183c5b97058582e9da2de0c136eafe49609769c507724" -"checksum rocket 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ad92f830d1ae2e9400ff212c949f6101b794cb3f50df975a8278b30280de51e" -"checksum rocket_codegen 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a945a800964fd73054d726fcfb52dbb5ed2c77f9c97f94de81f94970779f12ad" -"checksum rocket_cors 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7ca88ff48fdc775d3950372ca4b4d5d569c9dd5d95673b52f780e7816654b001" +"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" +"checksum ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" +"checksum rocket 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "242154377a85c2a9e036fc31ffc8c200b9e1f22a196e47baa3b57716606ca89d" +"checksum rocket_codegen 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7d907d6d458c859651c1cf4c8fa99b77685082bde0561db6a4600b365058f710" +"checksum rocket_cors 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d8adde8b1ed231f4a0288085605d869baa02503310a4f80c07ed53fde24dce1b" +"checksum rocket_http 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba9d4f2ce5bba6e1b6d3100493bbad63879e99bbf6b4365d61e6f781daab324d" "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" -"checksum rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084" -"checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" -"checksum schannel 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7554288337c1110e34d7a2433518d889374c1de1a45f856b7bcddb03702131fc" -"checksum scheduled-thread-pool 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d9fbe48ead32343b76f544c85953bf260ed39219a8bbbb62cd85f6a00f9644f" -"checksum scoped-tls 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f417c22df063e9450888a7561788e9bd46d3bb3c1466435b4eccb903807f147d" -"checksum scoped_threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4ea459fe3ceff01e09534847c49860891d3ff1c12b4eb7731b67f2778fb60190" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" +"checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" +"checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339" +"checksum scheduled-thread-pool 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a2ff3fc5223829be817806c6441279c676e454cc7da608faf03b0ccc09d3889" +"checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" +"checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" -"checksum secur32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3f412dfa83308d893101dd59c10d6fda8283465976c28c287c5c855bf8d216bc" -"checksum security-framework 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "dfa44ee9c54ce5eecc9de7d5acbad112ee58755239381f687e564004ba4a2332" -"checksum security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "5421621e836278a0b139268f36eee0dc7e389b784dc3f79d8f11aabadf41bead" -"checksum semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac" +"checksum security-framework 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfab8dda0e7a327c696d893df9ffa19cadc4bd195797997f5223cf5831beaf05" +"checksum security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3d6696852716b589dff9e886ff83778bb635150168e83afa8ac6b8a78cb82abc" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)" = "34b623917345a631dc9608d5194cc206b3fe6c3554cd1c75b937e55e285254af" -"checksum serde 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" = "e11a631f964d4e6572712ea12075fb1d65eeef42b0058884195b430ac1e26809" -"checksum serde_derive 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" = "1a51d54c805fbc8e12b603d1ba51eaed3195862976be468888ab0e4995d0000e" -"checksum serde_derive_internals 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bd381f6d01a6616cdba8530492d453b7761b456ba974e98768a18cad2cd76f58" -"checksum serde_json 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ae1e67ce320daa7e494c578e34d4b00689f23bb94512fe0ca0dfaf02ea53fb67" -"checksum serde_test 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2d74239122a8d698a02965c052a40abf9e49a92c1c113f4686a51261004ecfdb" +"checksum serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "92514fb95f900c9b5126e32d020f5c6d40564c27a5ea6d1d7d9f157a96623560" +"checksum serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6eabf4b5914e88e24eea240bb7c9f9a2cbc1bbbe8d961d381975ec3c6b806c" +"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" +"checksum serde_test 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "70807e147558b5253cb70f55d343db1d07204d773087c96d0f35fced295dba82" "checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" -"checksum slab 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fdeff4cd9ecff59ec7e3744cbca73dfe5ac35c2aedb2cfba8a1c715a18912e9d" +"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c8cbcd6df1e117c2210e13ab5109635ad68a929fcbb8964dc965b76cb5ee013" -"checksum smallvec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ee4f357e8cd37bf8822e1b964e96fd39e2cb5a0424f8aaa284ccaccc2162411c" -"checksum state 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "acc74e29126a281afcfd8dfa0ae83f1720a1adf5fc99524898e45ca440a73919" -"checksum strfmt 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c6ca97d0705fce080739a3ba7170279e4c87900817a0219ed8cbb7b6db7db220" -"checksum strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694" -"checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" -"checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" +"checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" +"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" +"checksum state 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7345c971d1ef21ffdbd103a75990a15eb03604fc8b8852ca8cb418ee1a099028" +"checksum strfmt 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b278b244ef7aa5852b277f52dd0c6cac3a109919e1f6d699adde63251227a30f" +"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" +"checksum syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1825685f977249735d510a242a6727b46efe914bb67e38d30c071b1b72b1d5c2" "checksum take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5" -"checksum tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6" +"checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" -"checksum textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0b59b6b4b44d867f1370ef1bd91bfb262bf07bf0ae65c202ea2fbc16153b693" -"checksum thread_local 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1697c4b57aeeb7a536b647165a2825faddffb1d3bad386d507709bd51a90bb14" -"checksum time 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)" = "d5d788d3aa77bc0ef3e9621256885555368b47bd495c13dd2e7413c89f845520" -"checksum tokio-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "c843a027f7c1df5f81e7734a0df3f67bf329411781ebf36393ce67beef6071e3" -"checksum tokio-io 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4ab83e7adb5677e42e405fa4ceff75659d93c4d7d7dd22f52fcec59ee9f02af" +"checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" +"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" +"checksum tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fcaabb3cec70485d0df6e9454fe514393ad1c4070dee8915f11041e95630b230" +"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" +"checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" +"checksum tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c756b04680eea21902a46fca4e9f410a2332c04995af590e07ff262e2193a9a3" +"checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" +"checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" +"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" "checksum tokio-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fbb47ae81353c63c487030659494b295f6cb6576242f907f203473b191b0389" +"checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" "checksum tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" -"checksum tokio-tls 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d88e411cac1c87e405e4090be004493c5d8072a370661033b1a64ea205ec2e13" -"checksum tokio-uds 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "09d1595e860d4a11634aca7c5576c2bc8055ff7653b089f4c4270528035dd37a" -"checksum tokio-uds-proto 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dca49ad7fe77611e593350d3996579dc94c115c3bd39643f0bc86239d74547b9" -"checksum toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e" +"checksum tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1bf2b9dac2a0509b5cfd1df5aa25eafacb616a42a491a13604d6bbeab4486363" +"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" +"checksum tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "742e511f6ce2298aeb86fc9ea0d8df81c2388c6ebae3dc8a7316e8c9df0df801" +"checksum tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2910970404ba6fa78c5539126a9ae2045d62e3713041e447f695f41405a120c6" +"checksum tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" +"checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" +"checksum tokio-uds 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "65ae5d255ce739e8537221ed2942e0445f4b3b813daebac1c0050ddaaa3587f9" +"checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" +"checksum tokio-uds-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "93842f83f760d2a48eb54225f819d05549e69c481f56be4a1b1f51decf99da5b" +"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" "checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" "checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" -"checksum unicase 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2e01da42520092d0cd2d6ac3ae69eb21a22ad43ff195676b86f8c37f487d6b80" +"checksum unicase 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "41d17211f887da8e4a70a45b9536f26fc5de166b81e2d5d80de4a17fd22553bd" "checksum unicase_serde 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6ef53697679d874d69f3160af80bc28de12730a985d57bdf2b47456ccb8b11f1" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -"checksum unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f" -"checksum unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bf3a113775714a22dcb774d8ea3655c53a32debae63a063acc00a91cc586245f" -"checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" -"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -"checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae" -"checksum url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eeb819346883532a271eb626deb43c4a1bb4c4dd47c519bd78137c3e72a4fe27" +"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" +"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" +"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" +"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "74e7d099f1ee52f823d4bdd60c93c3602043c728f5db3b97bdb548467f7bddea" -"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" "checksum uuid 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7cfec50b0842181ba6e713151b72f4ec84a6a7e2c9c8a8a3ffc37bb1cd16b231" -"checksum vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b" -"checksum vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "887b5b631c2ad01628bbbaa7dd4c869f80d3186688f8d0b6f58774fbe324988c" -"checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d" -"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +"checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" +"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" +"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -"checksum yansi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a503e4eea629f145a693c8ed1eddba88b3b9de5171c6ebd0e2820cf82d38f934" +"checksum yansi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d60c3b48c9cdec42fb06b3b84b5b087405e1fa1c644a1af3930e4dfafe93de48" +"checksum yansi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71" diff --git a/Cargo.toml b/Cargo.toml index e15fc5a..5cbb3e2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rowdy" -version = "0.0.8" +version = "0.0.9" license = "Apache-2.0" authors = ["Yong Wen Chua "] build = "build.rs" @@ -10,6 +10,7 @@ repository = "https://github.com/lawliet89/rowdy" documentation = "https://docs.rs/rowdy/" keywords = ["jwt", "rocket", "token", "authentication"] categories = ["authentication", "web-programming"] +edition = "2018" [badges] travis-ci = { repository = "lawliet89/rowdy" } @@ -30,13 +31,13 @@ simple_authenticator = ["argon2rs", "csv", "ring"] ldap_authenticator = ["ldap3", "strfmt"] [dependencies] -biscuit = "0.0.7" +biscuit = "0.1.0" chrono = { version = "0.4", features = ["serde"] } hyper = "0.10" -log = "0.3" -rocket = "0.3.2" -rocket_codegen = "0.3.2" -rocket_cors = "0.2.0" +lazy_static = "1.3.0" +log = "0.4" +rocket = "0.4.0" +rocket_cors = "0.4.0" serde = "1.0" serde_derive = "1.0" serde_json = "1.0" @@ -44,10 +45,10 @@ uuid = { version = "0.4", features = ["use_std", "serde"] } # Optional dependencies that are activated by the various features argon2rs = { version = "0.2.5", optional = true } -csv = { version = "1.0.0-beta.3", optional = true } -ldap3 = { version = "0.5", optional = true } -ring = { version = "0.11", optional = true } -strfmt = { version = "0.1.5", optional = true } +csv = { version = "1.0.5", optional = true } +ldap3 = { version = "0.6", optional = true } +ring = { version = "0.13.5", optional = true } +strfmt = { version = "0.1.6", optional = true } [dev-dependencies] serde_test = "1.0" diff --git a/build.rs b/build.rs index f9b9900..cb00c99 100644 --- a/build.rs +++ b/build.rs @@ -2,17 +2,14 @@ //! incompatible version of rust. //! This scipt was stolen from `rocket_codegen`. -extern crate ansi_term; -extern crate version_check; - use ansi_term::Color::{Blue, Red, White, Yellow}; use version_check::{is_min_date, is_min_version, is_nightly}; // Specifies the minimum nightly version that is targetted // Note that sometimes the `rustc` date might be older than the nightly version, // usually one day older -const MIN_DATE: &'static str = "2017-10-10"; -const MIN_VERSION: &'static str = "1.22.0-nightly"; +const MIN_DATE: &'static str = "2018-11-23"; +const MIN_VERSION: &'static str = "1.32.0-nightly"; // Convenience macro for writing to stderr. macro_rules! printerr { diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 5192750..9df7566 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rowdy-cli" -version = "0.0.8" +version = "0.0.9" authors = ["Yong Wen Chua "] [[bin]] @@ -11,8 +11,7 @@ doc = false [dependencies] clap = "2.26.2" -rocket = "0.3.2" -rocket_codegen = "0.3.2" +rocket = "0.4.0" rowdy = { path = "../", features = ["simple_authenticator", "ldap_authenticator"] } rowdy-diesel = { path = "../diesel/", features = ["mysql", "sqlite", "postgres"] } serde = "1.0" diff --git a/cli/src/main.rs b/cli/src/main.rs index d8c90fa..ebaf99a 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -1,5 +1,4 @@ -#![feature(plugin)] -#![plugin(rocket_codegen)] +#![feature(proc_macro_hygiene, decl_macro)] #[macro_use] extern crate clap; @@ -173,7 +172,6 @@ where .author(crate_authors!()) .setting(AppSettings::SubcommandRequired) .setting(AppSettings::VersionlessSubcommands) - .setting(AppSettings::PropagateGlobalValuesDown) .global_setting(AppSettings::DontCollapseArgsInUsage) .global_setting(AppSettings::NextLineHelp) .about( @@ -216,7 +214,8 @@ fn launch(args: &ArgMatches) -> Result<(), rowdy::Error> where B: auth::AuthenticatorConfiguration, { - let config = args.value_of("config") + let config = args + .value_of("config") .expect("Required options to be present"); let reader = input_reader(&config)?; @@ -238,7 +237,8 @@ where Connection: rowdy_diesel::Connection + 'static, ConnectionPool: std::ops::Deref, { - let config = args.value_of("config") + let config = args + .value_of("config") .expect("Required options to be present"); let reader = input_reader(&config)?; let config = read_config::(reader)?; diff --git a/diesel/Cargo.toml b/diesel/Cargo.toml index 4a10171..9887c6e 100644 --- a/diesel/Cargo.toml +++ b/diesel/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rowdy-diesel" -version = "0.0.8" +version = "0.0.9" authors = ["Yong Wen Chua "] [lib] @@ -14,22 +14,20 @@ doc = true default = [] # Support MySQL -mysql = ["diesel/mysql", "diesel_codegen/mysql"] +mysql = ["diesel/mysql"] # Support Sqlite -sqlite = ["diesel/sqlite", "diesel_codegen/sqlite"] +sqlite = ["diesel/sqlite"] # Support Postgres -postgres = ["diesel/postgres", "diesel_codegen/postgres"] +postgres = ["diesel/postgres"] [dependencies] -diesel = "0.16" -diesel_codegen = "0.16" -log = "0.3" -r2d2 = "0.7.4" -r2d2-diesel = "0.16.0" -ring = "0.11" -rocket = "0.3.2" +diesel = { version = "1.4.1", features = ["r2d2"] } +log = "0.4" +r2d2 = "0.8" +ring = "0.13.5" +rocket = "0.4.0" rowdy = { path = "../" } serde = "1.0" serde_derive = "1.0" diff --git a/diesel/src/lib.rs b/diesel/src/lib.rs index 3295872..1edb7be 100644 --- a/diesel/src/lib.rs +++ b/diesel/src/lib.rs @@ -18,28 +18,59 @@ //! rowdy_diesel = { version = "0.0.1", features = ["mysql"] } //! ``` -#![allow(legacy_directory_ownership, missing_copy_implementations, missing_debug_implementations, - unknown_lints, unsafe_code)] -#![deny(const_err, dead_code, deprecated, exceeding_bitshifts, fat_ptr_transmutes, improper_ctypes, - missing_docs, mutable_transmutes, no_mangle_const_items, non_camel_case_types, - non_shorthand_field_patterns, non_upper_case_globals, overflowing_literals, - path_statements, plugin_as_library, private_no_mangle_fns, private_no_mangle_statics, - stable_features, trivial_casts, trivial_numeric_casts, unconditional_recursion, - unknown_crate_types, unreachable_code, unused_allocation, unused_assignments, - unused_attributes, unused_comparisons, unused_extern_crates, unused_features, - unused_imports, unused_import_braces, unused_qualifications, unused_must_use, unused_mut, - unused_parens, unused_results, unused_unsafe, unused_variables, variant_size_differences, - warnings, while_true)] +#![allow( + legacy_directory_ownership, + missing_copy_implementations, + missing_debug_implementations, + unknown_lints, + intra_doc_link_resolution_failure +)] +#![deny( + const_err, + dead_code, + deprecated, + exceeding_bitshifts, + improper_ctypes, + missing_docs, + mutable_transmutes, + no_mangle_const_items, + non_camel_case_types, + non_shorthand_field_patterns, + non_upper_case_globals, + overflowing_literals, + path_statements, + plugin_as_library, + stable_features, + trivial_casts, + trivial_numeric_casts, + unconditional_recursion, + unknown_crate_types, + unreachable_code, + unused_allocation, + unused_assignments, + unused_attributes, + unused_comparisons, + unused_extern_crates, + unused_features, + unused_imports, + unused_import_braces, + unused_qualifications, + unused_must_use, + unused_mut, + unused_parens, + unused_results, + unused_unsafe, + unused_variables, + variant_size_differences, + warnings, + while_true +)] #![doc(test(attr(allow(unused_variables), deny(warnings))))] #[macro_use] extern crate diesel; #[macro_use] -extern crate diesel_codegen; -#[macro_use] extern crate log; -extern crate r2d2; -extern crate r2d2_diesel; extern crate ring; #[macro_use] extern crate rocket; @@ -49,14 +80,13 @@ extern crate rowdy; extern crate serde_derive; extern crate serde_json; +use diesel::r2d2::{ConnectionManager, Pool, PooledConnection}; use serde_json::value; -use r2d2::PooledConnection; -use r2d2_diesel::ConnectionManager; // FIXME: Remove dependency on `ring`. use ring::constant_time::verify_slices_are_equal; -use rowdy::{JsonMap, JsonValue}; -use rowdy::auth::{self, AuthenticationResult, Authorization, Basic}; use rowdy::auth::util::{hash_password_digest, hex_dump}; +use rowdy::auth::{self, AuthenticationResult, Authorization, Basic}; +use rowdy::{JsonMap, JsonValue}; pub mod schema; @@ -74,7 +104,7 @@ pub use diesel::connection::Connection; /// /// Type `T` should implement /// [`Connection`](http://docs.diesel.rs/diesel/connection/trait.Connection.html) -pub(crate) type ConnectionPool = r2d2::Pool>; +pub(crate) type ConnectionPool = Pool>; /// Errors from using `rowdy-diesel`. /// @@ -86,14 +116,12 @@ pub enum Error { ConnectionError(diesel::result::ConnectionError), /// A generic error occuring from Diesel DieselError(diesel::result::Error), - /// Error while attempting to initialize a connection pool - InitializationError, - /// Timeout while attempting to retrieve a connection from the connection pool - ConnectionTimeout, /// Authentication error AuthenticationFailure, /// Invalid Unicode characters in path InvalidUnicodeInPath, + /// Connection Pool Error + PoolError(r2d2::Error), } impl From for Error { @@ -108,15 +136,9 @@ impl From for Error { } } -impl From for Error { - fn from(_: r2d2::InitializationError) -> Error { - Error::InitializationError - } -} - -impl From for Error { - fn from(_: r2d2::GetTimeout) -> Error { - Error::ConnectionTimeout +impl From for Error { + fn from(error: r2d2::Error) -> Error { + Error::PoolError(error) } } @@ -124,23 +146,20 @@ impl From for rowdy::Error { fn from(error: Error) -> rowdy::Error { match error { Error::ConnectionError(e) => { - rowdy::Error::Auth(rowdy::auth::Error::GenericError((e.to_string()))) + rowdy::Error::Auth(rowdy::auth::Error::GenericError(e.to_string())) } Error::DieselError(e) => { rowdy::Error::Auth(rowdy::auth::Error::GenericError(e.to_string())) } - Error::ConnectionTimeout => rowdy::Error::Auth(rowdy::auth::Error::GenericError( - "Timed out connecting to the database".to_string(), - )), - Error::InitializationError => rowdy::Error::Auth(rowdy::auth::Error::GenericError( - "Error initializing a database connection pool".to_string(), - )), Error::InvalidUnicodeInPath => rowdy::Error::Auth(rowdy::auth::Error::GenericError( "Path contains invalid unicode characters".to_string(), )), Error::AuthenticationFailure => { rowdy::Error::Auth(rowdy::auth::Error::AuthenticationFailure) } + Error::PoolError(e) => { + rowdy::Error::Auth(rowdy::auth::Error::GenericError(e.to_string())) + } } } } @@ -169,10 +188,11 @@ where impl Authenticator where T: Connection + 'static, - String: diesel::types::FromSql::Backend>, - Vec: diesel::types::FromSql::Backend>, + String: diesel::types::FromSql::Backend>, + Vec: diesel::types::FromSql::Backend>, { /// Creates an authenticator backed by a table in a database using a connection pool. + #[allow(dead_code)] pub(crate) fn new(pool: ConnectionPool) -> Self { Self { pool } } @@ -187,9 +207,8 @@ where /// Search for the specified user entry fn search(&self, connection: &T, search_user: &str) -> Result, Error> { - use diesel::FilterDsl; + use diesel::prelude::*; use diesel::ExpressionMethods; - use diesel::LoadDsl; use schema::users::dsl::*; debug_!("Querying user {} from database", search_user); @@ -217,10 +236,11 @@ where fn deserialize_refresh_token_payload(refresh_payload: JsonValue) -> Result { match refresh_payload { JsonValue::Object(ref map) => { - let user = map.get("user").ok_or_else(|| Error::AuthenticationFailure)?; + let user = map + .get("user") + .ok_or_else(|| Error::AuthenticationFailure)?; // TODO verify the user object matches the database - Ok(value::from_value(user.clone()) - .map_err(|_| Error::AuthenticationFailure)?) + Ok(value::from_value(user.clone()).map_err(|_| Error::AuthenticationFailure)?) } _ => Err(Error::AuthenticationFailure), } @@ -286,8 +306,8 @@ where impl auth::Authenticator for Authenticator where T: Connection + 'static, - String: diesel::types::FromSql::Backend>, - Vec: diesel::types::FromSql::Backend>, + String: diesel::types::FromSql::Backend>, + Vec: diesel::types::FromSql::Backend>, { fn authenticate( &self, diff --git a/diesel/src/mysql.rs b/diesel/src/mysql.rs index 0b0ea3e..735abb5 100644 --- a/diesel/src/mysql.rs +++ b/diesel/src/mysql.rs @@ -1,16 +1,15 @@ //! MySQL authenticator module //! //! Requires `features = ["mysql"]` in your `Cargo.toml` -use diesel::prelude::*; use diesel::mysql::MysqlConnection; -use r2d2::Config; -use r2d2_diesel::ConnectionManager; +use diesel::prelude::*; +use diesel::r2d2::{Builder, ConnectionManager}; use rowdy; use rowdy::auth::{AuthenticatorConfiguration, Basic}; -use {ConnectionPool, Error, PooledConnection}; use schema; +use {Error, PooledConnection}; /// A rowdy authenticator that uses a MySQL backed database to provide the users pub type Authenticator = ::Authenticator; @@ -23,10 +22,9 @@ impl Authenticator { // Attempt a test connection with diesel let _ = Self::connect(uri)?; - let config = Config::default(); - let manager = ConnectionManager::new(uri); debug_!("Creating a connection pool"); - let pool = ConnectionPool::new(config, manager)?; + let manager = ConnectionManager::new(uri.as_ref()); + let pool = Builder::new().build(manager)?; Ok(Self::new(pool)) } @@ -119,8 +117,8 @@ mod tests { use diesel::connection::SimpleConnection; use rowdy::auth::Authenticator; - use schema::Migration; use super::*; + use schema::Migration; static SEED: Once = ONCE_INIT; @@ -137,7 +135,6 @@ mod tests { }); } - fn make_authenticator() -> super::Authenticator { let authenticator = super::Authenticator::with_configuration("127.0.0.1", 3306, "rowdy", "root", "") @@ -209,8 +206,8 @@ mod tests { #[test] fn mysql_authenticator_configuration_deserialization() { - use serde_json; use rowdy::auth::AuthenticatorConfiguration; + use serde_json; let json = r#"{ "host": "127.0.0.1", diff --git a/diesel/src/postgres.rs b/diesel/src/postgres.rs index 6b1a056..b08ce89 100644 --- a/diesel/src/postgres.rs +++ b/diesel/src/postgres.rs @@ -1,16 +1,15 @@ //! PostgresSQL authenticator module //! //! Requires `features = ["postgres"]` in your `Cargo.toml` -use diesel::prelude::*; use diesel::pg::PgConnection; -use r2d2::Config; -use r2d2_diesel::ConnectionManager; +use diesel::prelude::*; +use diesel::r2d2::{Builder, ConnectionManager}; use rowdy; use rowdy::auth::{AuthenticatorConfiguration, Basic}; -use {ConnectionPool, Error, PooledConnection}; use schema; +use {Error, PooledConnection}; /// A rowdy authenticator that uses a PostgresSQL backed database to provide the users pub type Authenticator = ::Authenticator; @@ -23,10 +22,9 @@ impl Authenticator { // Attempt a test connection with diesel let _ = Self::connect(uri)?; - let config = Config::default(); - let manager = ConnectionManager::new(uri); debug_!("Creating a connection pool"); - let pool = ConnectionPool::new(config, manager)?; + let manager = ConnectionManager::new(uri.as_ref()); + let pool = Builder::new().build(manager)?; Ok(Self::new(pool)) } @@ -41,11 +39,7 @@ impl Authenticator { ) -> Result { let database_uri = format!( "postgresql://{}:{}@{}:{}/{}", - user, - pass, - host, - port, - database + user, pass, host, port, database ); Self::with_uri(&database_uri) } @@ -126,8 +120,8 @@ mod tests { use diesel::connection::SimpleConnection; use rowdy::auth::Authenticator; - use schema::Migration; use super::*; + use schema::Migration; static SEED: Once = ONCE_INIT; @@ -144,7 +138,6 @@ mod tests { }); } - fn make_authenticator() -> super::Authenticator { let authenticator = super::Authenticator::with_configuration( "127.0.0.1", @@ -152,7 +145,8 @@ mod tests { "rowdy", "postgres", "postgres", - ).expect("To be constructed successfully"); + ) + .expect("To be constructed successfully"); reset_and_seed(&authenticator); authenticator } @@ -220,8 +214,8 @@ mod tests { #[test] fn mysql_authenticator_configuration_deserialization() { - use serde_json; use rowdy::auth::AuthenticatorConfiguration; + use serde_json; let json = r#"{ "host": "127.0.0.1", diff --git a/diesel/src/schema.rs b/diesel/src/schema.rs index 27f282c..2af4ed0 100644 --- a/diesel/src/schema.rs +++ b/diesel/src/schema.rs @@ -28,7 +28,7 @@ /// Diesel table definition inside a module to allow for some lints mod table_macro { - #![allow(unused_qualifications)] + #![allow(unused_qualifications, unused_import_braces)] table! { /// Table used to hold users and their hashed passwords /// @@ -50,7 +50,6 @@ use std::ops::Deref; use Connection; - /// Trait to provide idempotent minimal migration to create the table necessary for `rowdy-diesel` /// to work. If you have more sophisticated needs, you are able to add more columns to the basic /// columns needed for rowdy to work. @@ -67,7 +66,6 @@ where // TODO: Object safety? fn connection(&self) -> Result; - /// Format the migration query based on the connection type fn migration_query(&self) -> &str; diff --git a/diesel/src/sqlite.rs b/diesel/src/sqlite.rs index bb6846f..3a6515c 100644 --- a/diesel/src/sqlite.rs +++ b/diesel/src/sqlite.rs @@ -2,15 +2,14 @@ //! //! Requires `features = ["sqlite"]` in your `Cargo.toml` use diesel::prelude::*; +use diesel::r2d2::{Builder, ConnectionManager}; use diesel::sqlite::SqliteConnection; -use r2d2::Config; -use r2d2_diesel::ConnectionManager; use rowdy; use rowdy::auth::{AuthenticatorConfiguration, Basic}; -use {ConnectionPool, Error, PooledConnection}; use schema; +use {Error, PooledConnection}; /// A rowdy authenticator that uses a SQLite backed database to provide the users pub type Authenticator = ::Authenticator; @@ -31,10 +30,8 @@ impl Authenticator { // Attempt a test connection with diesel let _ = Self::connect(path.as_ref())?; - let config = Config::default(); let manager = ConnectionManager::new(path.as_ref()); - debug_!("Creating a connection pool"); - let pool = ConnectionPool::new(config, manager)?; + let pool = Builder::new().build(manager)?; Ok(Self::new(pool)) } @@ -94,7 +91,6 @@ impl AuthenticatorConfiguration for Configuration { } } - #[cfg(test)] mod tests { use std::sync::{Once, ONCE_INIT}; @@ -102,8 +98,8 @@ mod tests { use diesel::connection::SimpleConnection; use rowdy::auth::Authenticator; - use schema::Migration; use super::*; + use schema::Migration; static SEED: Once = ONCE_INIT; @@ -190,8 +186,8 @@ mod tests { #[test] fn sqlite_authenticator_configuration_deserialization() { - use serde_json; use rowdy::auth::AuthenticatorConfiguration; + use serde_json; let json = r#"{ "path": "../target/test.db" diff --git a/rust-toolchain b/rust-toolchain index a97d861..bf867e0 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2017-10-11 +nightly diff --git a/src/auth/ldap.rs b/src/auth/ldap.rs index a36d083..7ba63c5 100644 --- a/src/auth/ldap.rs +++ b/src/auth/ldap.rs @@ -1,13 +1,13 @@ //! LDAP Authentication module use std::collections::HashMap; -use ldap3::{LdapConn, Scope, SearchEntry}; use ldap3::ldap_escape; -use strfmt::{strfmt, FmtError}; +use ldap3::{LdapConn, Scope, SearchEntry}; use serde_json::value; +use strfmt::{strfmt, FmtError}; -use {Error, JsonMap, JsonValue}; use super::{AuthenticationResult, Basic}; +use crate::{Error, JsonMap, JsonValue}; /// Error mapping for `FmtError` impl From for Error { @@ -191,7 +191,8 @@ impl LdapAuthenticator { fn deserialize_refresh_token_payload(refresh_payload: JsonValue) -> Result { match refresh_payload { JsonValue::Object(ref map) => { - let user = map.get("user") + let user = map + .get("user") .ok_or_else(|| Error::Auth(super::Error::AuthenticationFailure))?; Ok(value::from_value(user.clone()) .map_err(|_| super::Error::AuthenticationFailure)?) @@ -227,7 +228,8 @@ impl LdapAuthenticator { Err(errors.join("; "))?; } - let map: JsonMap<_, _> = map.into_iter() + let map: JsonMap<_, _> = map + .into_iter() .map(|tuple| { // Safe to unwrap tuple.unwrap() @@ -237,10 +239,10 @@ impl LdapAuthenticator { let private_claims = match attributes_namespace { None => JsonValue::Object(map), Some(namespace) => { - let outer_map: JsonMap<_, _> = vec![ - (namespace.to_string(), JsonValue::Object(map)), - ].into_iter() - .collect(); + let outer_map: JsonMap<_, _> = + vec![(namespace.to_string(), JsonValue::Object(map))] + .into_iter() + .collect(); JsonValue::Object(outer_map) } }; @@ -348,7 +350,7 @@ impl super::Authenticator for LdapAuthenticator { fn authenticate_refresh_token( &self, refresh_payload: &JsonValue, - ) -> Result { + ) -> Result { let user = Self::deserialize_refresh_token_payload(refresh_payload.clone())?; Self::build_authentication_result( &user, @@ -363,7 +365,7 @@ impl super::Authenticator for LdapAuthenticator { impl super::AuthenticatorConfiguration for LdapAuthenticator { type Authenticator = LdapAuthenticator; - fn make_authenticator(&self) -> Result { + fn make_authenticator(&self) -> Result { { // Test connection to LDAP server let connection = self.connect()?; @@ -378,8 +380,8 @@ impl super::AuthenticatorConfiguration for LdapAuthenticator { #[cfg(test)] mod tests { //! These tests might intermittently fail due to Test server being inaccessible - use auth::Authenticator; use super::*; + use crate::auth::Authenticator; /// Test LDAP server: /// http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/ @@ -406,8 +408,9 @@ mod tests { "memberOf".to_string(), vec!["admins".to_string(), "user".to_string()], ), - ].into_iter() - .collect(), + ] + .into_iter() + .collect(), } } @@ -495,9 +498,10 @@ mod tests { "memberOf".to_string(), vec!["admins".to_string(), "user".to_string()], ), - ].into_iter() - .map(|(key, value)| (key, value::to_value(value).unwrap())) - .collect(); + ] + .into_iter() + .map(|(key, value)| (key, value::to_value(value).unwrap())) + .collect(); assert_eq!( JsonValue::Object(expected_attributes), @@ -520,17 +524,17 @@ mod tests { "memberOf".to_string(), vec!["admins".to_string(), "user".to_string()], ), - ].into_iter() - .map(|(key, value)| (key, value::to_value(value).unwrap())) - .collect(); + ] + .into_iter() + .map(|(key, value)| (key, value::to_value(value).unwrap())) + .collect(); - let namespaced_attributes: JsonMap<_, _> = vec![ - ( - "namespace".to_string(), - JsonValue::Object(expected_attributes), - ), - ].into_iter() - .collect(); + let namespaced_attributes: JsonMap<_, _> = vec![( + "namespace".to_string(), + JsonValue::Object(expected_attributes), + )] + .into_iter() + .collect(); assert_eq!( JsonValue::Object(namespaced_attributes), @@ -547,11 +551,11 @@ mod tests { None, false, )); - let expected_attributes: JsonMap<_, _> = vec![ - ("cn".to_string(), vec!["John Doe".to_string()]), - ].into_iter() - .map(|(key, value)| (key, value::to_value(value).unwrap())) - .collect(); + let expected_attributes: JsonMap<_, _> = + vec![("cn".to_string(), vec!["John Doe".to_string()])] + .into_iter() + .map(|(key, value)| (key, value::to_value(value).unwrap())) + .collect(); assert_eq!( JsonValue::Object(expected_attributes), diff --git a/src/auth/mod.rs b/src/auth/mod.rs index 154aebd..e734c90 100644 --- a/src/auth/mod.rs +++ b/src/auth/mod.rs @@ -11,8 +11,8 @@ use rocket::http::Status; use rocket::request::{self, FromRequest, Request}; use rocket::response; use rocket::Outcome; -use serde::Serialize; use serde::de::DeserializeOwned; +use serde::Serialize; pub mod util; @@ -32,21 +32,21 @@ mod ldap; #[cfg(feature = "ldap_authenticator")] pub use self::ldap::LdapAuthenticator; -use JsonValue; +use crate::JsonValue; /// Re-exported [`hyper::header::Scheme`] -pub type Scheme = hyper::header::Scheme; +pub type Scheme = dyn hyper::header::Scheme; /// Re-exported [`hyper::header::Basic`]. pub type Basic = hyper::header::Basic; /// Re-exported [`hyper::header::Bearer`]. pub type Bearer = hyper::header::Bearer; /// A typedef for an `Authenticator` trait object that requires HTTP Basic authentication -pub type BasicAuthenticator = Authenticator; +pub type BasicAuthenticator = dyn Authenticator; /// A typedef for an `Authenticator` trait object that requires Bearer authentication. -pub type BearerAuthenticator = Authenticator; +pub type BearerAuthenticator = dyn Authenticator; /// A typedef for an `Authenticator` trait object that uses an arbitrary string -pub type StringAuthenticator = Authenticator; +pub type StringAuthenticator = dyn Authenticator; /// Authentication errors #[derive(Debug)] @@ -82,7 +82,7 @@ impl error::Error for Error { } } - fn cause(&self) -> Option<&error::Error> { + fn cause(&self) -> Option<&dyn error::Error> { match *self { Error::HyperError(ref e) => Some(e), _ => Some(self), @@ -91,7 +91,7 @@ impl error::Error for Error { } impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match *self { Error::HyperError(ref e) => fmt::Display::fmt(e, f), _ => write!(f, "{}", error::Error::description(self)), @@ -100,7 +100,7 @@ impl fmt::Display for Error { } impl<'r> response::Responder<'r> for Error { - fn respond_to(self, _: &Request) -> Result, Status> { + fn respond_to(self, _: &Request<'_>) -> Result, Status> { error_!("Authentication Error: {:?}", self); match self { Error::MissingAuthorization { ref realm } => { @@ -108,12 +108,10 @@ impl<'r> response::Responder<'r> for Error { let www_header = rocket::http::Header::new("WWW-Authenticate", format!("Basic realm={}", realm)); - Ok( - response::Response::build() - .status(Status::Unauthorized) - .header(www_header) - .finalize(), - ) + Ok(response::Response::build() + .status(Status::Unauthorized) + .header(www_header) + .finalize()) } Error::AuthenticationFailure => Err(Status::Unauthorized), Error::HyperError(_) => Err(Status::BadRequest), @@ -247,7 +245,7 @@ pub trait Authenticator: Send + Sync { &self, authorization: &Authorization, include_refresh_payload: bool, - ) -> Result; + ) -> Result; /// Verify the credentials provided with the refresh token payload, if supported by the /// authenticator. @@ -258,8 +256,8 @@ pub trait Authenticator: Send + Sync { fn authenticate_refresh_token( &self, _payload: &JsonValue, - ) -> Result { - Err(::Error::UnsupportedOperation) + ) -> Result { + Err(crate::Error::UnsupportedOperation) } /// Prepare a response to an authentication request @@ -271,7 +269,7 @@ pub trait Authenticator: Send + Sync { &self, authorization: &Authorization, request_refresh_token: bool, - ) -> Result { + ) -> Result { let result = self.authenticate(authorization, request_refresh_token)?; if !request_refresh_token && result.refresh_payload.is_some() { Err(Error::GenericError( @@ -292,7 +290,7 @@ pub trait Authenticator: Send + Sync { fn prepare_refresh_response( &self, refresh_payload: &JsonValue, - ) -> Result { + ) -> Result { let result = self.authenticate_refresh_token(refresh_payload)?; if result.refresh_payload.is_some() { Err(Error::GenericError( @@ -306,24 +304,25 @@ pub trait Authenticator: Send + Sync { } /// Convenience function to respond with a missing authorization error -pub fn missing_authorization(realm: &str) -> Result { +pub fn missing_authorization(realm: &str) -> Result { Err(Error::MissingAuthorization { realm: realm.to_string(), })? } -/// Configuration for the associated type `Authenticator`. [`rowdy::Configuration`] expects its +/// Configuration for the associated type `Authenticator`. [`crate::Configuration`] expects its /// `authenticator` field to implement this trait. /// /// Before launching, `rowdy` will attempt to make an `Authenticator` based off the /// configuration by calling the `make_authenticator` method. -pub trait AuthenticatorConfiguration - : Send + Sync + Serialize + DeserializeOwned + 'static { +pub trait AuthenticatorConfiguration: + Send + Sync + Serialize + DeserializeOwned + 'static +{ /// The `Authenticator` type this configuration is associated with type Authenticator: Authenticator; /// Using the configuration struct, create a new `Authenticator`. - fn make_authenticator(&self) -> Result; + fn make_authenticator(&self) -> Result; } /// Result from a successful authentication operation @@ -341,12 +340,12 @@ pub struct AuthenticationResult { pub mod tests { #[allow(deprecated)] use hyper::header::{self, Header, HeaderFormatter}; - use rocket::{self, Rocket, State}; use rocket::http; use rocket::local::Client; + use rocket::{self, Rocket, State}; - use {Error, JsonMap}; use super::*; + use crate::{Error, JsonMap}; /// Mock authenticator that authenticates only the following: /// @@ -426,7 +425,7 @@ pub mod tests { fn authenticate_refresh_token( &self, refresh_payload: &JsonValue, - ) -> Result { + ) -> Result { let header: header::Authorization = Self::deserialize_refresh_token_payload(refresh_payload); self.authenticate(&Authorization(header), false) @@ -460,7 +459,7 @@ pub mod tests { fn authenticate_refresh_token( &self, refresh_payload: &JsonValue, - ) -> Result { + ) -> Result { let header: header::Authorization = Self::deserialize_refresh_token_payload(refresh_payload); self.authenticate(&Authorization(header), false) @@ -494,7 +493,7 @@ pub mod tests { fn authenticate_refresh_token( &self, refresh_payload: &JsonValue, - ) -> Result { + ) -> Result { let header: header::Authorization = Self::deserialize_refresh_token_payload(refresh_payload); self.authenticate(&Authorization(header), false) @@ -512,13 +511,13 @@ pub mod tests { { type Authenticator = MockAuthenticator; - fn make_authenticator(&self) -> Result { + fn make_authenticator(&self) -> Result { Ok(Self::Authenticator {}) } } /// Ignite a Rocket with a Basic authenticator - pub fn ignite_basic(authenticator: Box>) -> Rocket { + pub fn ignite_basic(authenticator: Box>) -> Rocket { // Ignite rocket rocket::ignite() .mount("/", routes![auth_basic]) @@ -530,18 +529,17 @@ pub mod tests { #[allow(needless_pass_by_value)] fn auth_basic( authorization: Option>, - authenticator: State>>, - ) -> Result<(), ::Error> { - let authorization = authorization.ok_or_else(|| { - missing_authorization::<()>("https://www.acme.com").unwrap_err() - })?; + authenticator: State<'_, Box>>, + ) -> Result<(), Error> { + let authorization = authorization + .ok_or_else(|| missing_authorization::<()>("https://www.acme.com").unwrap_err())?; authenticator .prepare_authentication_response(&authorization, true) .and_then(|_| Ok(())) } /// Ignite a Rocket with a Bearer authenticator - pub fn ignite_bearer(authenticator: Box>) -> Rocket { + pub fn ignite_bearer(authenticator: Box>) -> Rocket { // Ignite rocket rocket::ignite() .mount("/", routes![auth_bearer]) @@ -553,18 +551,17 @@ pub mod tests { #[allow(needless_pass_by_value)] fn auth_bearer( authorization: Option>, - authenticator: State>>, - ) -> Result<(), ::Error> { - let authorization = authorization.ok_or_else(|| { - missing_authorization::<()>("https://www.acme.com").unwrap_err() - })?; + authenticator: State<'_, Box>>, + ) -> Result<(), Error> { + let authorization = authorization + .ok_or_else(|| missing_authorization::<()>("https://www.acme.com").unwrap_err())?; authenticator .prepare_authentication_response(&authorization, true) .and_then(|_| Ok(())) } /// Ignite a Rocket with a String authenticator - pub fn ignite_string(authenticator: Box>) -> Rocket { + pub fn ignite_string(authenticator: Box>) -> Rocket { // Ignite rocket rocket::ignite() .mount("/", routes![auth_string]) @@ -576,11 +573,10 @@ pub mod tests { #[allow(needless_pass_by_value)] fn auth_string( authorization: Option>, - authenticator: State>>, - ) -> Result<(), ::Error> { - let authorization = authorization.ok_or_else(|| { - missing_authorization::<()>("https://www.acme.com").unwrap_err() - })?; + authenticator: State<'_, Box>>, + ) -> Result<(), Error> { + let authorization = authorization + .ok_or_else(|| missing_authorization::<()>("https://www.acme.com").unwrap_err())?; authenticator .prepare_authentication_response(&authorization, true) .and_then(|_| Ok(())) @@ -595,9 +591,8 @@ pub mod tests { }); let header = HeaderFormatter(&auth).to_string(); - let parsed_header = not_err!(::auth::Authorization::new(&header)); - let ::auth::Authorization(header::Authorization(Basic { username, password })) = - parsed_header; + let parsed_header = not_err!(Authorization::new(&header)); + let Authorization(header::Authorization(Basic { username, password })) = parsed_header; assert_eq!(username, "Aladdin"); assert_eq!(password, Some("open sesame".to_string())); } @@ -609,8 +604,8 @@ pub mod tests { token: "token".to_string(), }); let header = HeaderFormatter(&auth).to_string(); - let parsed_header = not_err!(::auth::Authorization::new(&header)); - let ::auth::Authorization(header::Authorization(Bearer { token })) = parsed_header; + let parsed_header = not_err!(Authorization::new(&header)); + let Authorization(header::Authorization(Bearer { token })) = parsed_header; assert_eq!(token, "token"); } @@ -619,9 +614,8 @@ pub mod tests { fn parses_string_auth_correctly() { let auth = header::Authorization("hello".to_string()); let header = HeaderFormatter(&auth).to_string(); - let parsed_header: ::auth::Authorization = - not_err!(::auth::Authorization::new(&header)); - let ::auth::Authorization(header::Authorization(ref s)) = parsed_header; + let parsed_header: Authorization = not_err!(Authorization::new(&header)); + let Authorization(header::Authorization(ref s)) = parsed_header; assert_eq!(s, "hello"); } diff --git a/src/auth/noop.rs b/src/auth/noop.rs index dfa3140..8f445af 100644 --- a/src/auth/noop.rs +++ b/src/auth/noop.rs @@ -1,9 +1,10 @@ //! A "no-op" authenticator that lets everything through use hyper::header::{self, Header}; -use {Error, JsonMap, JsonValue}; -use super::{AuthenticationResult, Authenticator, AuthenticatorConfiguration, Authorization, Basic, - Bearer}; +use super::{ + AuthenticationResult, Authenticator, AuthenticatorConfiguration, Authorization, Basic, Bearer, +}; +use crate::{Error, JsonMap, JsonValue}; /// A "no-op" authenticator that lets everything through. _DO NOT USE THIS IN PRODUCTION_. #[derive(Debug)] @@ -31,7 +32,8 @@ impl NoOp { ) -> Result, Error> { match *refresh_payload { JsonValue::Object(ref map) => { - let header = map.get("header") + let header = map + .get("header") .ok_or_else(|| Error::Auth(super::Error::AuthenticationFailure))? .as_str() .ok_or_else(|| Error::Auth(super::Error::AuthenticationFailure))?; @@ -68,7 +70,7 @@ impl Authenticator for NoOp { fn authenticate_refresh_token( &self, refresh_payload: &JsonValue, - ) -> Result { + ) -> Result { warn_!("Do not use the NoOp authenticator in production"); let header: header::Authorization = Self::deserialize_refresh_token_payload(refresh_payload)?; @@ -98,7 +100,7 @@ impl Authenticator for NoOp { fn authenticate_refresh_token( &self, refresh_payload: &JsonValue, - ) -> Result { + ) -> Result { warn_!("Do not use the NoOp authenticator in production"); let header: header::Authorization = Self::deserialize_refresh_token_payload(refresh_payload)?; @@ -128,7 +130,7 @@ impl Authenticator for NoOp { fn authenticate_refresh_token( &self, refresh_payload: &JsonValue, - ) -> Result { + ) -> Result { warn_!("Do not use the NoOp authenticator in production"); let header: header::Authorization = Self::deserialize_refresh_token_payload(refresh_payload)?; @@ -146,7 +148,7 @@ where { type Authenticator = NoOp; - fn make_authenticator(&self) -> Result { + fn make_authenticator(&self) -> Result { Ok(Self::Authenticator {}) } } @@ -157,9 +159,9 @@ pub mod tests { use rocket::http::{self, Status}; use rocket::local::Client; - use auth::Authenticator; - use super::*; use super::super::tests::{ignite_basic, ignite_bearer, ignite_string}; + use super::*; + use crate::auth::Authenticator; #[test] fn authentication() { diff --git a/src/auth/simple.rs b/src/auth/simple.rs index cc38c08..d5c5048 100644 --- a/src/auth/simple.rs +++ b/src/auth/simple.rs @@ -1,15 +1,15 @@ //! Simple authenticator module -use std::io::{Read, Write}; use std::collections::HashMap; +use std::io::{Read, Write}; use csv; // FIXME: Remove dependency on `ring`. -use ring::test; use ring::constant_time::verify_slices_are_equal; +use ring::test; -use {Error, JsonMap, JsonValue}; -use super::{AuthenticationResult, Basic}; use super::util::{generate_salt, hash_password_digest, hex_dump}; +use super::{AuthenticationResult, Basic}; +use crate::{Error, JsonMap, JsonValue}; // Code for conversion to hex stolen from rustc-serialize: // https://doc.rust-lang.org/rustc-serialize/src/rustc_serialize/hex.rs.html @@ -154,15 +154,17 @@ impl super::Authenticator for SimpleAuthenticator { fn authenticate_refresh_token( &self, refresh_payload: &JsonValue, - ) -> Result { + ) -> Result { warn_!("Do not use the Simple authenticator in production"); match *refresh_payload { JsonValue::Object(ref map) => { - let user = map.get("user") + let user = map + .get("user") .ok_or_else(|| super::Error::AuthenticationFailure)? .as_str() .ok_or_else(|| super::Error::AuthenticationFailure)?; - let password = map.get("password") + let password = map + .get("password") .ok_or_else(|| super::Error::AuthenticationFailure)? .as_str() .ok_or_else(|| super::Error::AuthenticationFailure)?; @@ -206,7 +208,7 @@ fn default_delimiter() -> char { impl super::AuthenticatorConfiguration for SimpleAuthenticatorConfiguration { type Authenticator = SimpleAuthenticator; - fn make_authenticator(&self) -> Result { + fn make_authenticator(&self) -> Result { Ok(SimpleAuthenticator::with_csv_file( &self.csv_path, self.has_headers, @@ -239,8 +241,8 @@ pub fn write_csv(users: &Users, mut writer: W) -> Result<(), Error> { #[cfg(test)] mod tests { - use auth::Authenticator; use super::*; + use crate::auth::Authenticator; fn make_authenticator() -> SimpleAuthenticator { not_err!(SimpleAuthenticator::with_csv_file( @@ -347,8 +349,8 @@ mod tests { #[test] fn simple_authenticator_configuration_deserialization() { + use crate::auth::AuthenticatorConfiguration; use serde_json; - use auth::AuthenticatorConfiguration; let json = r#"{ "csv_path": "test/fixtures/users.csv", diff --git a/src/auth/util.rs b/src/auth/util.rs index d163a71..e5d841b 100644 --- a/src/auth/util.rs +++ b/src/auth/util.rs @@ -4,8 +4,8 @@ //! salt to produce a hash with [Argon2i](https://en.wikipedia.org/wiki/Argon2). //! //! The hash produced will be 32 bytes long. +use crate::jwt::jwa::SecureRandom; use argon2rs; -use jwt::jwa::{self, SecureRandom}; static CHARS: &'static [u8] = b"0123456789abcdef"; @@ -28,7 +28,7 @@ pub fn hash_password_digest(password: &str, salt: &[u8]) -> Vec { /// See [`Unspecified`](https://briansmith.org/rustdoc/ring/error/struct.Unspecified.html) pub fn generate_salt(salt_length: usize) -> Result, ()> { let mut salt: Vec = vec![0; salt_length]; - jwa::rng().fill(&mut salt).map_err(|_| ())?; + crate::rng().fill(&mut salt).map_err(|_| ())?; Ok(salt) } diff --git a/src/lib.rs b/src/lib.rs index 265af4f..179f77e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -173,48 +173,73 @@ //! //! Not in use at the moment. Just use `all`. //! -#![feature(plugin, custom_derive)] -#![plugin(rocket_codegen)] +#![feature(proc_macro_hygiene, decl_macro)] // See https://github.com/rust-unofficial/patterns/blob/master/anti_patterns/deny-warnings.md -#![allow(legacy_directory_ownership, missing_copy_implementations, missing_debug_implementations, - unknown_lints, unsafe_code)] -#![deny(const_err, dead_code, deprecated, exceeding_bitshifts, fat_ptr_transmutes, improper_ctypes, - missing_docs, mutable_transmutes, no_mangle_const_items, non_camel_case_types, - non_shorthand_field_patterns, non_upper_case_globals, overflowing_literals, - path_statements, plugin_as_library, private_no_mangle_fns, private_no_mangle_statics, - stable_features, trivial_casts, trivial_numeric_casts, unconditional_recursion, - unknown_crate_types, unreachable_code, unused_allocation, unused_assignments, - unused_attributes, unused_comparisons, unused_extern_crates, unused_features, - unused_imports, unused_import_braces, unused_qualifications, unused_must_use, unused_mut, - unused_parens, unused_results, unused_unsafe, unused_variables, variant_size_differences, - warnings, while_true)] +#![allow( + legacy_directory_ownership, + missing_copy_implementations, + missing_debug_implementations, + unknown_lints, + unsafe_code, + intra_doc_link_resolution_failure +)] +#![deny( + const_err, + dead_code, + deprecated, + exceeding_bitshifts, + improper_ctypes, + missing_docs, + mutable_transmutes, + no_mangle_const_items, + non_camel_case_types, + non_shorthand_field_patterns, + non_upper_case_globals, + overflowing_literals, + path_statements, + plugin_as_library, + stable_features, + trivial_casts, + trivial_numeric_casts, + unconditional_recursion, + unknown_crate_types, + unreachable_code, + unused_allocation, + unused_assignments, + unused_attributes, + unused_comparisons, + unused_extern_crates, + unused_features, + unused_imports, + unused_import_braces, + unused_qualifications, + unused_must_use, + unused_mut, + unused_parens, + unused_results, + unused_unsafe, + unused_variables, + variant_size_differences, + warnings, + while_true +)] #![doc(test(attr(allow(unused_variables), deny(warnings))))] -extern crate biscuit as jwt; -extern crate chrono; -extern crate hyper; +use biscuit as jwt; + +use hyper; +#[macro_use] +extern crate lazy_static; #[macro_use] extern crate log; #[macro_use] extern crate rocket; // we are using the "log_!" macros which are redefined from `log`'s -extern crate rocket_cors as cors; -extern crate serde; +use rocket_cors as cors; + #[macro_use] extern crate serde_derive; -extern crate serde_json; -extern crate uuid; - -#[cfg(feature = "simple_authenticator")] -extern crate argon2rs; -#[cfg(feature = "simple_authenticator")] -extern crate csv; -#[cfg(feature = "ldap_authenticator")] -extern crate ldap3; -#[cfg(feature = "simple_authenticator")] -extern crate ring; -#[cfg(feature = "ldap_authenticator")] -extern crate strfmt; +use serde_json; #[cfg(test)] extern crate serde_test; @@ -237,14 +262,15 @@ use std::io; use std::ops::Deref; use std::str::FromStr; -use rocket::Request; +use ring::rand::SystemRandom; use rocket::http::Status; use rocket::response::{Responder, Response}; -use serde::{Deserialize, Deserializer, Serialize, Serializer}; +use rocket::Request; use serde::de; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; -pub use serde_json::Value as JsonValue; pub use serde_json::Map as JsonMap; +pub use serde_json::Value as JsonValue; /// Top level error enum #[derive(Debug)] @@ -288,7 +314,7 @@ impl error::Error for Error { } } - fn cause(&self) -> Option<&error::Error> { + fn cause(&self) -> Option<&dyn error::Error> { match *self { Error::Auth(ref e) => Some(e), Error::CORS(ref e) => Some(e), @@ -303,7 +329,7 @@ impl error::Error for Error { } impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match *self { Error::UnsupportedOperation => write!(f, "{}", error::Error::description(self)), Error::Auth(ref e) => fmt::Display::fmt(e, f), @@ -318,7 +344,7 @@ impl fmt::Display for Error { } impl<'r> Responder<'r> for Error { - fn respond_to(self, request: &Request) -> Result, Status> { + fn respond_to(self, request: &Request<'_>) -> Result, Status> { match self { Error::Auth(e) => e.respond_to(request), Error::CORS(e) => e.respond_to(request), @@ -349,7 +375,7 @@ impl FromStr for Url { } impl fmt::Display for Url { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "{}", self.0.as_str()) } } @@ -372,7 +398,7 @@ impl<'de> Deserialize<'de> for Url { impl<'de> de::Visitor<'de> for UrlVisitor { type Value = Url; - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { formatter.write_str("a valid URL string") } @@ -380,16 +406,18 @@ impl<'de> Deserialize<'de> for Url { where E: de::Error, { - Ok(Url(hyper::Url::from_str(&value) - .map_err(|e| E::custom(e.to_string()))?)) + Ok(Url( + hyper::Url::from_str(&value).map_err(|e| E::custom(e.to_string()))? + )) } fn visit_str(self, value: &str) -> Result where E: de::Error, { - Ok(Url(hyper::Url::from_str(value) - .map_err(|e| E::custom(e.to_string()))?)) + Ok(Url( + hyper::Url::from_str(value).map_err(|e| E::custom(e.to_string()))? + )) } } @@ -474,13 +502,11 @@ impl> Configuration { // Prepare the keys let keys = self.token.keys()?; - Ok( - rocket::ignite() - .manage(self.token.clone()) - .manage(basic_authenticator) - .manage(keys) - .attach(token_getter_cors_options), - ) + Ok(rocket::ignite() + .manage(self.token.clone()) + .manage(basic_authenticator) + .manage(keys) + .attach(token_getter_cors_options)) } } @@ -525,6 +551,17 @@ pub fn launch>( rocket.mount("/", routes()).launch() } +/// Return a psuedo random number generator +pub(crate) fn rng() -> &'static SystemRandom { + use std::ops::Deref; + + lazy_static! { + static ref RANDOM: SystemRandom = SystemRandom::new(); + } + + RANDOM.deref() +} + #[cfg(test)] mod tests { use std::str::FromStr; diff --git a/src/macros.rs b/src/macros.rs index 0766f13..5653abb 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -2,9 +2,11 @@ macro_rules! impl_from_error { ($f: ty, $e: expr) => { impl From<$f> for Error { - fn from(f: $f) -> Error { $e(f) } + fn from(f: $f) -> Error { + $e(f) + } } - } + }; } /// Implement a simple Deref from `From` to `To` where `From` is a newtype struct containing `To` @@ -17,17 +19,21 @@ macro_rules! impl_deref { &self.0 } } - } + }; } /// Extract some value from an expression via pattern matching. T /// his is the cousin to `assert_matches!`. macro_rules! match_extract { - ($e: expr, $p: pat, $f: expr) => (match $e { - $p => Ok($f), - _ => { - Err(format!("{}: Expected pattern {} \ndid not match", - stringify!($e), stringify!($p)).to_string()) + ($e: expr, $p: pat, $f: expr) => { + match $e { + $p => Ok($f), + _ => Err(format!( + "{}: Expected pattern {} \ndid not match", + stringify!($e), + stringify!($p) + ) + .to_string()), } - }) + }; } diff --git a/src/routes.rs b/src/routes.rs index 34b1a3d..9b8da01 100644 --- a/src/routes.rs +++ b/src/routes.rs @@ -4,10 +4,11 @@ #![allow(unmounted_route)] use hyper; +use rocket::request::Form; use rocket::{Route, State}; -use auth; -use token::{Configuration, Keys, PrivateClaim, RefreshToken, Token}; +use crate::auth; +use crate::token::{Configuration, Keys, PrivateClaim, RefreshToken, Token}; #[derive(FromForm, Default, Clone, Debug)] struct AuthParam { @@ -22,9 +23,9 @@ impl AuthParam { fn verify( &self, authorization: &auth::Authorization, - ) -> Result<(), ::Error> { + ) -> Result<(), crate::Error> { if authorization.is_bearer() && self.offline_token.is_some() { - Err(::Error::BadRequest( + Err(crate::Error::BadRequest( "Offline token cannot be requested for when authenticating with a refresh token" .to_string(), ))? @@ -34,14 +35,14 @@ impl AuthParam { } /// Access token retrieval via initial authentication route -#[get("/?", rank = 1)] +#[get("/?", rank = 1)] fn token_getter( authorization: auth::Authorization, - auth_param: AuthParam, - configuration: State, - keys: State, - authenticator: State>, -) -> Result, ::Error> { + auth_param: Form, + configuration: State<'_, Configuration>, + keys: State<'_, Keys>, + authenticator: State<'_, Box>, +) -> Result, crate::Error> { auth_param.verify(&authorization)?; authenticator .prepare_authentication_response(&authorization, auth_param.offline_token.unwrap_or(false)) @@ -57,7 +58,8 @@ fn token_getter( let token = token.encode(signing_key)?; let token = if configuration.refresh_token_enabled() && token.has_refresh_token() { - let refresh_token_key = keys.encryption + let refresh_token_key = keys + .encryption .as_ref() .expect("Refresh token was enabled but encryption key is missing"); token.encrypt_refresh_token(signing_key, refresh_token_key)? @@ -70,16 +72,16 @@ fn token_getter( } /// Access token retrieval via refresh token route -#[get("/?", rank = 2)] +#[get("/?", rank = 2)] fn refresh_token( authorization: auth::Authorization, - auth_param: AuthParam, - configuration: State, - keys: State, - authenticator: State>, -) -> Result, ::Error> { + auth_param: Form, + configuration: State<'_, Configuration>, + keys: State<'_, Keys>, + authenticator: State<'_, Box>, +) -> Result, crate::Error> { if !configuration.refresh_token_enabled() { - return Err(::Error::BadRequest( + return Err(crate::Error::BadRequest( "Refresh token is not enabled".to_string(), )); } @@ -115,8 +117,11 @@ fn refresh_token( } /// Route to catch missing Authorization -#[get("/?", rank = 3)] -fn bad_request(auth_param: AuthParam, configuration: State) -> Result<(), ::Error> { +#[get("/?", rank = 3)] +fn bad_request( + auth_param: Form, + configuration: State<'_, Configuration>, +) -> Result<(), crate::Error> { let _ = auth_param; auth::missing_authorization(&configuration.issuer.to_string()) } @@ -134,30 +139,30 @@ pub fn routes() -> Vec { #[cfg(test)] mod tests { - use std::time::Duration; use std::str::FromStr; + use std::time::Duration; + use crate::jwt; use hyper; - use jwt; - use rocket::Rocket; use rocket::http::{Header, Status}; use rocket::local::Client; + use rocket::Rocket; use serde_json; - use ByteSequence; use super::*; - use token::{RefreshTokenConfiguration, Secret}; + use crate::token::{RefreshTokenConfiguration, Secret}; + use crate::ByteSequence; fn ignite() -> Rocket { // Ignite rocket let allowed_origins = ["https://www.example.com"]; - let (allowed_origins, _) = ::cors::AllowedOrigins::some(&allowed_origins); + let (allowed_origins, _) = crate::cors::AllowedOrigins::some(&allowed_origins); let token_configuration = Configuration { issuer: FromStr::from_str("https://www.acme.com").unwrap(), allowed_origins: allowed_origins, - audience: jwt::SingleOrMultiple::Single( - not_err!(FromStr::from_str("https://www.example.com")), - ), + audience: jwt::SingleOrMultiple::Single(not_err!(FromStr::from_str( + "https://www.example.com" + ))), signature_algorithm: Some(jwt::jwa::SignatureAlgorithm::HS512), secret: Secret::ByteSequence(ByteSequence::String("secret".to_string())), expiry_duration: Duration::from_secs(120), @@ -168,9 +173,9 @@ mod tests { expiry_duration: Duration::from_secs(86400), }), }; - let configuration = ::Configuration { + let configuration = crate::Configuration { token: token_configuration, - basic_authenticator: ::auth::tests::MockAuthenticatorConfiguration {}, + basic_authenticator: crate::auth::tests::MockAuthenticatorConfiguration {}, }; let rocket = not_err!(configuration.ignite()); @@ -195,15 +200,16 @@ mod tests { let client = not_err!(Client::new(rocket)); // Make headers - let origin_header = Header::from(not_err!( - hyper::header::Origin::from_str("https://www.example.com") - )); + let origin_header = Header::from(not_err!(hyper::header::Origin::from_str( + "https://www.example.com" + ))); let method_header = Header::from(hyper::header::AccessControlRequestMethod( hyper::method::Method::Get, )); - let request_headers = hyper::header::AccessControlRequestHeaders( - vec![FromStr::from_str("Authorization").unwrap()], - ); + let request_headers = + hyper::header::AccessControlRequestHeaders(vec![ + FromStr::from_str("Authorization").unwrap() + ]); let request_headers = Header::from(request_headers); // Make and dispatch request @@ -230,9 +236,9 @@ mod tests { let client = not_err!(Client::new(rocket)); // Make headers - let origin_header = Header::from(not_err!( - hyper::header::Origin::from_str("https://www.example.com") - )); + let origin_header = Header::from(not_err!(hyper::header::Origin::from_str( + "https://www.example.com" + ))); let auth_header = hyper::header::Authorization(auth::Basic { username: "mei".to_owned(), password: Some("冻住,不许走!".to_string()), @@ -294,9 +300,9 @@ mod tests { let client = not_err!(Client::new(rocket)); // Make headers - let origin_header = Header::from(not_err!( - hyper::header::Origin::from_str("https://www.example.com") - )); + let origin_header = Header::from(not_err!(hyper::header::Origin::from_str( + "https://www.example.com" + ))); let auth_header = hyper::header::Authorization(auth::Basic { username: "Aladin".to_owned(), password: Some("let me in".to_string()), @@ -329,9 +335,9 @@ mod tests { let client = not_err!(Client::new(rocket)); // Make headers - let origin_header = Header::from(not_err!( - hyper::header::Origin::from_str("https://www.example.com") - )); + let origin_header = Header::from(not_err!(hyper::header::Origin::from_str( + "https://www.example.com" + ))); // Make and dispatch request let req = client @@ -359,9 +365,9 @@ mod tests { let client = not_err!(Client::new(rocket)); // Make headers - let origin_header = Header::from(not_err!( - hyper::header::Origin::from_str("https://www.example.com") - )); + let origin_header = Header::from(not_err!(hyper::header::Origin::from_str( + "https://www.example.com" + ))); let auth_header = hyper::header::Authorization(auth::Basic { username: "mei".to_owned(), password: Some("冻住,不许走!".to_string()), @@ -396,9 +402,9 @@ mod tests { // Initial authentication request // Make headers - let origin_header = Header::from(not_err!( - hyper::header::Origin::from_str("https://www.example.com") - )); + let origin_header = Header::from(not_err!(hyper::header::Origin::from_str( + "https://www.example.com" + ))); let auth_header = hyper::header::Authorization(auth::Basic { username: "mei".to_owned(), password: Some("冻住,不许走!".to_string()), @@ -432,9 +438,9 @@ mod tests { let refresh_token = actual_token.refresh_token.unwrap(); // Use refresh token to authenticate - let origin_header = Header::from(not_err!( - hyper::header::Origin::from_str("https://www.example.com") - )); + let origin_header = Header::from(not_err!(hyper::header::Origin::from_str( + "https://www.example.com" + ))); let auth_header = hyper::header::Authorization(auth::Bearer { token: refresh_token.to_string().unwrap(), }); @@ -494,9 +500,9 @@ mod tests { let rocket = ignite(); let client = not_err!(Client::new(rocket)); - let origin_header = Header::from(not_err!( - hyper::header::Origin::from_str("https://www.example.com") - )); + let origin_header = Header::from(not_err!(hyper::header::Origin::from_str( + "https://www.example.com" + ))); let auth_header = hyper::header::Authorization(auth::Bearer { token: "foobar".to_string(), }); diff --git a/src/serde_custom/duration.rs b/src/serde_custom/duration.rs index 61444b0..1c7aef1 100644 --- a/src/serde_custom/duration.rs +++ b/src/serde_custom/duration.rs @@ -1,7 +1,7 @@ //! Custom serializer and deserializer for `std::time::Duration`. Serializes to seconds, //! and deserializes from seconds. -use std::time::Duration; use serde::{Deserialize, Deserializer, Serializer}; +use std::time::Duration; /// Serialize a `Duration` into a `u64` representing the seconds pub fn serialize(duration: &Duration, serializer: S) -> Result @@ -22,12 +22,13 @@ where #[cfg(test)] mod tests { - use std::time::Duration; use serde_json; + use std::time::Duration; #[derive(Serialize, Deserialize, Eq, PartialEq, Debug)] struct TestStruct { - #[serde(with = "super")] duration: Duration, + #[serde(with = "super")] + duration: Duration, } #[test] diff --git a/src/test.rs b/src/test.rs index e2f7422..9057949 100644 --- a/src/test.rs +++ b/src/test.rs @@ -1,22 +1,34 @@ macro_rules! not_err { - ($e:expr) => (match $e { - Ok(e) => e, - Err(e) => panic!("{} failed with {:?}", stringify!($e), e), - }) + ($e:expr) => { + match $e { + Ok(e) => e, + Err(e) => panic!("{} failed with {:?}", stringify!($e), e), + } + }; } macro_rules! not_none { - ($e:expr) => (match $e { - Some(e) => e, - None => panic!("{} failed with None", stringify!($e)), - }) + ($e:expr) => { + match $e { + Some(e) => e, + None => panic!("{} failed with None", stringify!($e)), + } + }; } macro_rules! assert_matches_non_debug { - ($e: expr, $p: pat) => (assert_matches_non_debug!($e, $p, ())); - ($e: expr, $p: pat, $f: expr) => (match $e { - $p => $f, - _ => panic!("{}: Expected pattern {} \ndoes not match {}", - stringify!($e), stringify!($p), stringify!($e)) - }) + ($e: expr, $p: pat) => { + assert_matches_non_debug!($e, $p, ()) + }; + ($e: expr, $p: pat, $f: expr) => { + match $e { + $p => $f, + _ => panic!( + "{}: Expected pattern {} \ndoes not match {}", + stringify!($e), + stringify!($p), + stringify!($e) + ), + } + }; } diff --git a/src/token.rs b/src/token.rs index ad1facb..ad93b81 100644 --- a/src/token.rs +++ b/src/token.rs @@ -4,8 +4,8 @@ //! Clients will pass the encapsulated JWT to services that require it. //! The JWT should be considered opaque to clients. //! The `Token` struct contains enough information for the client to act on, including expiry times. -use std::collections::HashSet; use std::borrow::Borrow; +use std::collections::HashSet; use std::error; use std::fmt; use std::fs::File; @@ -14,18 +14,18 @@ use std::ops::Deref; use std::str::FromStr; use std::time::Duration; -use cors; +use crate::cors; +use crate::jwt::{self, jwa, jwk, jws}; use chrono::{self, DateTime, Utc}; -use jwt::{self, jwa, jwk, jws}; -use rocket::Request; use rocket::http::{ContentType, Method, Status}; use rocket::response::{Responder, Response}; -use serde::Serialize; +use rocket::Request; use serde::de::DeserializeOwned; +use serde::Serialize; use serde_json; use uuid::Uuid; -use {ByteSequence, JsonValue}; +use crate::{ByteSequence, JsonValue}; /// Token errors #[derive(Debug)] @@ -61,16 +61,21 @@ pub enum Error { /// IO Error when reading keys from files IOError(io::Error), /// Errors during token encoding/decoding - JWTError(jwt::errors::Error), + JWTError(Box), /// Errors during token serialization TokenSerializationError(serde_json::Error), } -impl_from_error!(jwt::errors::Error, Error::JWTError); impl_from_error!(io::Error, Error::IOError); impl_from_error!(serde_json::Error, Error::TokenSerializationError); impl_from_error!(String, Error::GenericError); +impl From for Error { + fn from(jwt: jwt::errors::Error) -> Self { + Error::JWTError(Box::new(jwt)) + } +} + impl<'a> From<&'a str> for Error { fn from(s: &'a str) -> Error { Error::GenericError(s.to_string()) @@ -105,7 +110,7 @@ impl error::Error for Error { } } - fn cause(&self) -> Option<&error::Error> { + fn cause(&self) -> Option<&dyn error::Error> { match *self { Error::JWTError(ref e) => Some(e), Error::IOError(ref e) => Some(e), @@ -116,7 +121,7 @@ impl error::Error for Error { } impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match *self { Error::JWTError(ref e) => fmt::Display::fmt(e, f), Error::IOError(ref e) => fmt::Display::fmt(e, f), @@ -128,21 +133,21 @@ impl fmt::Display for Error { } impl<'r> Responder<'r> for Error { - fn respond_to(self, _: &Request) -> Result, Status> { + fn respond_to(self, _: &Request<'_>) -> Result, Status> { error_!("Token Error: {:?}", self); match self { Error::InvalidService | Error::InvalidIssuer | Error::InvalidAudience => { Err(Status::Forbidden) } Error::JWTError(ref e) => { - use jwt::errors::Error::*; - - let status = match *e { - ValidationError(_) | - JsonError(_) | - DecodeBase64(_) | - Utf8(_) | - UnspecifiedCryptographicError => Status::Unauthorized, + use crate::jwt::errors::Error::*; + + let status = match **e { + ValidationError(_) + | JsonError(_) + | DecodeBase64(_) + | Utf8(_) + | UnspecifiedCryptographicError => Status::Unauthorized, _ => Status::InternalServerError, }; Err(status) @@ -153,15 +158,14 @@ impl<'r> Responder<'r> for Error { } fn make_uuid() -> Result { + use crate::jwt::jwa::SecureRandom; use std::error::Error; - use jwt::jwa::SecureRandom; let mut bytes = vec![0; 16]; - jwa::rng() + crate::rng() .fill(&mut bytes) .map_err(|_| "Unable to generate UUID")?; - Ok(Uuid::from_bytes(&bytes) - .map_err(|e| e.description().to_string())?) + Ok(Uuid::from_bytes(&bytes).map_err(|e| e.description().to_string())?) } fn make_header(signature_algorithm: Option) -> jws::Header { @@ -178,12 +182,12 @@ fn make_registered_claims( expiry_duration: Duration, issuer: &jwt::StringOrUri, audience: &jwt::SingleOrMultiple, -) -> Result { +) -> Result { let expiry_duration = chrono::Duration::from_std(expiry_duration).map_err(|e| e.to_string())?; Ok(jwt::RegisteredClaims { issuer: Some(issuer.clone()), - subject: Some(FromStr::from_str(subject).map_err(Error::JWTError)?), + subject: Some(FromStr::from_str(subject).map_err(|e| Error::JWTError(Box::new(e)))?), audience: Some(audience.clone()), issued_at: Some(now.into()), not_before: Some(now.into()), @@ -202,7 +206,7 @@ fn make_token( private_claims: P, signature_algorithm: Option, now: DateTime, -) -> Result, ::Error> { +) -> Result, crate::Error> { let header = make_header(signature_algorithm); let registered_claims = make_registered_claims(subject, now, expiry_duration, issuer, audience)?; @@ -262,7 +266,7 @@ const TOKEN_GETTER_HEADERS: &[&str] = &[ "Origin", ]; -/// Token configuration. Usually deserialized as part of [`rowdy::Configuration`] from JSON for use. +/// Token configuration. Usually deserialized as part of [`crate::Configuration`] from JSON for use. /// /// /// # Examples @@ -328,13 +332,16 @@ pub struct Configuration { /// /// Defaults to `None`. /// - /// See [`token::Secret`] for serialization examples + /// See [`Secret`] for serialization examples #[serde(default)] pub secret: Secret, /// Expiry duration of tokens, in seconds. /// /// Defaults to 24 hours when deserialized and left unfilled - #[serde(with = "::serde_custom::duration", default = "Configuration::default_expiry_duration")] + #[serde( + with = "crate::serde_custom::duration", + default = "Configuration::default_expiry_duration" + )] pub expiry_duration: Duration, /// Customise refresh token options. Set to `None` to disable refresh tokens #[serde(skip_serializing_if = "Option::is_none", default)] @@ -427,7 +434,10 @@ pub struct RefreshTokenConfiguration { /// Expiry duration of refresh tokens, in seconds. /// /// Defaults to 24 hours when deserialized and left unfilled - #[serde(with = "::serde_custom::duration", default = "Configuration::default_expiry_duration")] + #[serde( + with = "crate::serde_custom::duration", + default = "Configuration::default_expiry_duration" + )] pub expiry_duration: Duration, } @@ -476,7 +486,7 @@ impl RefreshToken { cek_algorithm: jwa::KeyManagementAlgorithm, enc_algorithm: jwa::ContentEncryptionAlgorithm, now: DateTime, - ) -> Result { + ) -> Result { // First, make a token let token = make_token( subject, @@ -525,18 +535,44 @@ impl RefreshToken { !self.encrypted() } + // TODO: Random Nonce! Should we keep a counter? + fn encryption_option(&self) -> Result { + let headers = &self.0.header()?.registered; + + let need_nonce = if let jwa::KeyManagementAlgorithm::A128GCMKW + | jwa::KeyManagementAlgorithm::A192GCMKW + | jwa::KeyManagementAlgorithm::A256GCMKW = headers.cek_algorithm + { + true + } else if let jwa::ContentEncryptionAlgorithm::A128GCM + | jwa::ContentEncryptionAlgorithm::A192GCM + | jwa::ContentEncryptionAlgorithm::A256GCM = headers.enc_algorithm + { + true + } else { + false + }; + if need_nonce { + let nonce = crate::auth::util::generate_salt(96 / 8) + .map_err(|_| Error::GenericError("An unknown error".to_string()))?; + Ok(jwa::EncryptionOptions::AES_GCM { nonce: nonce }) + } else { + Ok(jwa::EncryptionOptions::None) + } + } + /// Consumes self, and sign and encrypt the refresh token. /// If the Refresh Token is already encrypted, this will return an error pub fn encrypt(self, secret: &jws::Secret, key: &jwk::JWK) -> Result { if self.encrypted() { Err(Error::RefreshTokenAlreadyEncrypted)? } - + let options = self.encryption_option()?; let (header, jws) = self.unwrap().unwrap_decrypted(); let jws = jws.into_encoded(secret)?; let jwe = jwt::JWE::new_decrypted(header, jws); - let jwe = jwe.into_encrypted(key)?; + let jwe = jwe.into_encrypted(key, &options)?; Ok(From::from(jwe)) } @@ -585,17 +621,18 @@ impl RefreshToken { &self, service: &str, config: &Configuration, - options: Option, + options: Option, ) -> Result<(), Error> { use std::str::FromStr; - let options = options.or_else(|| { - Some(jwt::TemporalValidationOptions { - issued_at_required: true, - not_before_required: true, - expiry_required: true, + let options = options.unwrap_or_else(|| jwt::ValidationOptions { + claim_presence_options: jwt::ClaimPresenceOptions { + issued_at: jwt::Presence::Required, + not_before: jwt::Presence::Required, + expiry: jwt::Presence::Required, ..Default::default() - }) + }, + ..Default::default() }); let claims_set = self.claims_set()?; @@ -611,29 +648,30 @@ impl RefreshToken { .ok_or_else(|| Error::InvalidAudience)?; verify_service(config, service) - .and_then(|_| if audience.contains(&FromStr::from_str(service)?) { - Ok(()) - } else { - Err(Error::InvalidAudience) + .and_then(|_| { + if audience.contains(&FromStr::from_str(service)?) { + Ok(()) + } else { + Err(Error::InvalidAudience) + } }) .and_then(|_| verify_audience(config, audience)) .and_then(|_| verify_issuer(config, issuer)) .and_then(|_| { claims_set .registered - .validate_times(options) - .map_err(|e| Error::JWTError(jwt::errors::Error::ValidationError(e))) + .validate(options) + .map_err(|e| Error::JWTError(Box::new(jwt::errors::Error::ValidationError(e)))) }) } /// Convenience function to convert a decrypted payload to string pub fn to_string(&self) -> Result { - Ok( - self.0 - .encrypted() - .map_err(|_| Error::RefreshTokenNotEncrypted)? - .to_string(), - ) + Ok(self + .0 + .encrypted() + .map_err(|_| Error::RefreshTokenNotEncrypted)? + .to_string()) } } @@ -658,7 +696,7 @@ pub struct Token { /// Tne encapsulated JWT. pub token: jwt::JWT, /// The duration from `issued_at` where the token will expire - #[serde(with = "::serde_custom::duration")] + #[serde(with = "crate::serde_custom::duration")] pub expires_in: Duration, /// Time the token was issued at pub issued_at: DateTime, @@ -690,7 +728,7 @@ impl Token { private_claims: T, refresh_token_payload: Option<&JsonValue>, now: DateTime, - ) -> Result { + ) -> Result { verify_service(config, service)?; let access_token = make_token( @@ -744,7 +782,7 @@ impl Token { service: &str, private_claims: T, refresh_token_payload: Option<&JsonValue>, - ) -> Result { + ) -> Result { Self::with_configuration_and_time( config, subject, @@ -813,7 +851,7 @@ impl Token { } /// Convenience function to extract the registered claims from a decoded token - pub fn registered_claims(&self) -> Result<&jwt::RegisteredClaims, ::Error> { + pub fn registered_claims(&self) -> Result<&jwt::RegisteredClaims, crate::Error> { match self.token { jwt::jws::Compact::Encoded(_) => Err(Error::TokenNotDecoded)?, ref jwt @ jwt::jws::Compact::Decoded { .. } => Ok(match_extract!(*jwt, @@ -826,7 +864,7 @@ impl Token { } /// Conveneince function to extract the private claims from a decoded token - pub fn private_claims(&self) -> Result<&T, ::Error> { + pub fn private_claims(&self) -> Result<&T, crate::Error> { match self.token { jwt::jws::Compact::Encoded(_) => Err(Error::TokenNotDecoded)?, ref jwt @ jwt::jws::Compact::Decoded { .. } => Ok(match_extract!(*jwt, @@ -839,7 +877,7 @@ impl Token { } /// Convenience function to extract the headers from a decoded token - pub fn header(&self) -> Result<&jwt::jws::Header, ::Error> { + pub fn header(&self) -> Result<&jwt::jws::Header, crate::Error> { match self.token { jwt::jws::Compact::Encoded(_) => Err(Error::TokenNotDecoded)?, ref jwt @ jwt::jws::Compact::Decoded { .. } => Ok(match_extract!(*jwt, @@ -852,8 +890,12 @@ impl Token { } /// Convenience method to extract the encoded token - pub fn encoded_token(&self) -> Result { - Ok(self.token.encoded().map_err(Error::JWTError)?.to_string()) + pub fn encoded_token(&self) -> Result { + Ok(self + .token + .encoded() + .map_err(|e| Error::JWTError(Box::new(e)))? + .to_string()) } /// Convenience method to obtain a reference to the refresh token @@ -896,7 +938,7 @@ impl Token { } impl<'r, T: Serialize + DeserializeOwned + 'static> Responder<'r> for Token { - fn respond_to(self, request: &Request) -> Result, Status> { + fn respond_to(self, request: &Request<'_>) -> Result, Status> { match self.respond() { Ok(r) => Ok(r), Err(e) => Err::(e).respond_to(request), @@ -1093,9 +1135,9 @@ mod tests { use chrono::{DateTime, NaiveDateTime, Utc}; use serde_json; - use {JsonMap, JsonValue}; - use jwt; use super::*; + use crate::jwt; + use crate::{JsonMap, JsonValue}; #[derive(Clone, Serialize, Deserialize, Debug, Eq, PartialEq)] struct TestClaims { @@ -1125,7 +1167,7 @@ mod tests { }; let allowed_origins = ["https://www.example.com"]; - let (allowed_origins, _) = ::cors::AllowedOrigins::some(&allowed_origins); + let (allowed_origins, _) = crate::cors::AllowedOrigins::some(&allowed_origins); Configuration { issuer: FromStr::from_str("https://www.acme.com").unwrap(), @@ -1157,7 +1199,8 @@ mod tests { jwt::jwa::KeyManagementAlgorithm::A256GCMKW, jwt::jwa::ContentEncryptionAlgorithm::A256GCM, Utc::now(), - ).unwrap() + ) + .unwrap() } fn make_token(refresh_token: bool) -> Token { @@ -1294,11 +1337,9 @@ mod tests { #[test] fn token_serialization_smoke_test() { let expected_token = make_token(false); - let token = not_err!( - expected_token - .clone() - .encode(&jwt::jws::Secret::bytes_from_str("secret")) - ); + let token = not_err!(expected_token + .clone() + .encode(&jwt::jws::Secret::bytes_from_str("secret"))); let serialized = not_err!(token.serialize()); let deserialized: Token = not_err!(serde_json::from_str(&serialized)); @@ -1312,11 +1353,9 @@ mod tests { #[test] fn token_response_smoke_test() { let expected_token = make_token(false); - let token = not_err!( - expected_token - .clone() - .encode(&jwt::jws::Secret::bytes_from_str("secret")) - ); + let token = not_err!(expected_token + .clone() + .encode(&jwt::jws::Secret::bytes_from_str("secret"))); let mut response = not_err!(token.respond()); assert_eq!(response.status(), Status::Ok); @@ -1541,18 +1580,15 @@ mod tests { Default::default(), None, now, - ).unwrap(); + ) + .unwrap(); } #[test] fn refresh_token_validates_correctly() { let configuration = make_config(true); let refresh_token = make_refresh_token(); - not_err!(refresh_token.validate( - "https://www.example.com/", - &configuration, - None - )); + not_err!(refresh_token.validate("https://www.example.com/", &configuration, None)); } /// Token does not have an issuer field @@ -1666,7 +1702,7 @@ mod tests { /// Issued at time is required #[test] - #[should_panic(expected = "MissingRequired(\"iat\")")] + #[should_panic(expected = "MissingRequiredClaims([\"iat\"])")] fn refresh_token_validates_missing_issued_at() { let configuration = make_config(true); @@ -1686,7 +1722,7 @@ mod tests { /// Not before time is required #[test] - #[should_panic(expected = "MissingRequired(\"nbf\")")] + #[should_panic(expected = "MissingRequiredClaims([\"nbf\"])")] fn refresh_token_validates_missing_not_before() { let configuration = make_config(true); @@ -1706,7 +1742,7 @@ mod tests { /// Expiry time is required #[test] - #[should_panic(expected = "MissingRequired(\"exp\")")] + #[should_panic(expected = "MissingRequiredClaims([\"exp\"])")] fn refresh_token_validates_missing_expiry() { let configuration = make_config(true);