From 9e759f6e3029bb61a85ea9f55a64de7ded9b323d Mon Sep 17 00:00:00 2001 From: Brenden Matthews Date: Thu, 7 Mar 2019 18:28:30 -0500 Subject: [PATCH] Add retry command. --- Cargo.lock | 712 +++++++++++++++ Cargo.toml | 3 + Dockerfile | 1 + LabHub.toml | 21 +- README.md | 42 +- Rocket.toml | 2 +- docs/github-personal-access-token.png | Bin 0 -> 269166 bytes docs/gitlab-personal-access-token.png | Bin 0 -> 95809 bytes helm/labhub/values.yaml | 19 +- src/api/github_client.rs | 72 ++ src/api/gitlab_client.rs | 106 +++ src/api/mod.rs | 2 + .../{gen_github_model.py => gen_models.py} | 78 +- src/api/models/github.rs | 825 +++++++++++++++++- src/api/models/gitlab.rs | 11 + .../json/{github_events.json => github.json} | 751 +++++++++++++++- src/api/models/json/gitlab.json | 9 + src/api/models/mod.rs | 1 + src/commands.rs | 146 ++++ src/config.rs | 28 +- src/errors.rs | 25 + src/github.rs | 226 ++++- src/main.rs | 7 +- src/service.rs | 4 +- .../github_created_issue_comment.json | 207 +++++ src/testdata/github_get_pr.json | 511 +++++++++++ 26 files changed, 3703 insertions(+), 106 deletions(-) create mode 100644 docs/github-personal-access-token.png create mode 100644 docs/gitlab-personal-access-token.png create mode 100644 src/api/github_client.rs create mode 100644 src/api/gitlab_client.rs rename src/api/models/{gen_github_model.py => gen_models.py} (55%) create mode 100644 src/api/models/gitlab.rs rename src/api/models/json/{github_events.json => github.json} (52%) create mode 100644 src/api/models/json/gitlab.json create mode 100644 src/commands.rs create mode 100644 src/testdata/github_created_issue_comment.json create mode 100644 src/testdata/github_get_pr.json diff --git a/Cargo.lock b/Cargo.lock index 0233d5c..e867f98 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,34 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +[[package]] +name = "MacTypes-sys" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "adler32" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "aho-corasick" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 2.2.0 (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 = "autocfg" version = "0.1.2" @@ -37,6 +66,15 @@ name = "byteorder" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "bytes" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "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.29" @@ -66,6 +104,70 @@ dependencies = [ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "core-foundation" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "core-foundation-sys" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crc32fast" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-deque" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "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.6 (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.6 (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 = "curl-sys" version = "0.4.16" @@ -109,6 +211,19 @@ dependencies = [ "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "dtoa" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "encoding_rs" +version = "0.8.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "env_logger" version = "0.6.1" @@ -127,6 +242,24 @@ dependencies = [ "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "fnv" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +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 = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "fsevent" version = "0.2.17" @@ -169,6 +302,15 @@ name = "futures" version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures-cpupool" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "git2" version = "0.8.0" @@ -183,11 +325,38 @@ dependencies = [ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "h2" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "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)", + "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "string 0.1.3 (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 = "hex" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "http" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "httparse" version = "1.3.3" @@ -211,6 +380,45 @@ dependencies = [ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "hyper" +version = "0.12.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (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-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)", + "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hyper-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.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 = "idna" version = "0.1.5" @@ -295,6 +503,8 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mockers 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "mockers_derive 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.11 (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_contrib 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -303,6 +513,7 @@ dependencies = [ "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "yansi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -331,6 +542,16 @@ name = "libc" version = "0.2.49" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "libflate" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "libgit2-sys" version = "0.7.11" @@ -369,6 +590,15 @@ dependencies = [ "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +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" @@ -395,6 +625,11 @@ name = "memchr" version = "2.2.0" source = "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" @@ -403,6 +638,25 @@ dependencies = [ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "mime" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicase 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mime_guess" +version = "2.0.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", + "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "mio" version = "0.6.16" @@ -460,6 +714,23 @@ dependencies = [ "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "native-tls" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (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.18 (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.41 (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.33" @@ -470,6 +741,11 @@ dependencies = [ "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 = "notify" version = "4.0.9" @@ -496,6 +772,19 @@ dependencies = [ "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "openssl" +version = "0.10.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (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.49 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.41 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "openssl-probe" version = "0.1.2" @@ -512,6 +801,35 @@ dependencies = [ "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 = [ + "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 = "parking_lot_core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.49 (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.1.2" @@ -537,6 +855,41 @@ name = "percent-encoding" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "phf" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "phf_codegen" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "phf_generator" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "phf_shared" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "pkg-config" version = "0.3.14" @@ -667,6 +1020,26 @@ name = "redox_syscall" version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "regex" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex-syntax" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "remove_dir_all" version = "0.5.1" @@ -675,6 +1048,35 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "reqwest" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libflate 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", + "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "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)", + "serde_urlencoded 0.5.4 (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-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)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ring" version = "0.13.5" @@ -747,6 +1149,14 @@ dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ryu" version = "0.2.7" @@ -765,6 +1175,54 @@ dependencies = [ "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "schannel" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "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 = "scopeguard" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "security-framework" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "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.49 (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-sys" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "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.49 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "serde" version = "1.0.89" @@ -790,6 +1248,22 @@ dependencies = [ "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "serde_urlencoded" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (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 = "siphasher" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "slab" version = "0.4.2" @@ -800,11 +1274,21 @@ name = "smallvec" 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.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "string" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "syn" version = "0.15.26" @@ -828,6 +1312,14 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "thread_local" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "time" version = "0.1.42" @@ -838,6 +1330,118 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.11 (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-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-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-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)", +] + +[[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-io" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.11 (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]] +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-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.11 (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 = "toml" version = "0.4.10" @@ -851,11 +1455,21 @@ name = "traitobject" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "try-lock" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "typeable" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "ucd-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicase" version = "1.4.2" @@ -864,6 +1478,14 @@ dependencies = [ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "unicase" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "unicode-bidi" version = "0.3.4" @@ -900,6 +1522,19 @@ dependencies = [ "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "utf8-ranges" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "uuid" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "vcpkg" version = "0.2.6" @@ -920,6 +1555,16 @@ dependencies = [ "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "want" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "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)", + "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "winapi" version = "0.2.8" @@ -977,32 +1622,54 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] +"checksum MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eaf9f0d0b1cc33a4d2aee14fb4b2eac03462ef4db29c8ac4057327d8a71ad86f" +"checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" +"checksum aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "81ce3d38065e618af2d7b77e10c5ad9a069859b4be3c2250f674af3840d9c8a5" +"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" "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 bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" +"checksum bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "40ade3d27603c2cb345eb0912aec461a6dec7e06a4ae48589904e808335c7afa" "checksum cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = "4390a3b5f4f6bce9c1d0c00128379df433e53777fdd30e92f16a529332baec4e" "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "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 crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" +"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 curl-sys 0.4.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ca79238a79fb294be6173b4057c95b22a718c94c4e38475d5faa82b8383f3502" "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 dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd" +"checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" "checksum env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b61fa891024a945da30a9581546e8cfaf5602c7b3f4c137a2805cf388f92075a" "checksum filetime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a2df5c1a8c4be27e7707789dc42ae65976e60b394afd293d1419ab915833e646" +"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 fsevent 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" = "c4bbbf71584aeed076100b5665ac14e3d85eeb31fdbb45fbd41ef9a682b5ec05" "checksum fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1a772d36c338d07a032d5375a36f15f9a7043bf0cb8ce7cee658e037c6032874" "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 futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" "checksum git2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7339329bfa14a00223244311560d11f8f489b453fb90092af97f267a6090ab0" +"checksum h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ddb2b25a33e231484694267af28fec74ac63b5ccf51ee2065a5e313b834d836e" "checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" +"checksum http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fe67e3678f2827030e89cc4b9e7ecd16d52f132c0b940ab5005f88e821500f6a" "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 hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)" = "7d5b6658b016965ae301fa995306db965c93677880ea70765a84235a96eae896" +"checksum hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "32cd73f14ad370d3b4d4b7dce08f69b81536c82e39fcc89731930fe5788cd661" "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 inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718" @@ -1017,27 +1684,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "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 libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)" = "413f3dfc802c5dc91dc570b05125b6cda9855edfaa9825c9849807876376e70e" +"checksum libflate 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "54d1ddf9c52870243c5689d7638d888331c1116aa5b398f3ba1acfa7d8758ca1" "checksum libgit2-sys 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)" = "48441cb35dc255da8ae72825689a95368bf510659ae1ad55dc4aa88cb1789bf1" "checksum libssh2-sys 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "126a1f4078368b163bfdee65fbab072af08a1b374a5551b21e87ade27b1fbf9d" "checksum libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" +"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 mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" +"checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed" "checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" "checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum mockers 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "108dd6eaa9fa672e2db43e22a16afed3078fa2b8ebfbcac8f97049c1546f845e" "checksum mockers_derive 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b0f2b3df73118fd4207a7cee794c9ca1c2d5afd8c8231178947e304474181c5d" +"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 notify 4.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9cc7ed2bd4b7edad3ee93b659c38e53dabb619f7274e127a0fab054ad2bb998d" "checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" +"checksum openssl 0.10.18 (registry+https://github.com/rust-lang/crates.io-index)" = "b90119d71b0a3596588da04bf7c2c42f2978cfa1217a94119d8ec9e963c7729c" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" "checksum openssl-sys 0.9.41 (registry+https://github.com/rust-lang/crates.io-index)" = "e4c77cdd67d31759b22aa72cfda3c65c12348f9e6c5420946b403c022fd0311a" +"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 phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" +"checksum phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" +"checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" +"checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "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" @@ -1053,36 +1735,66 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "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 regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53ee8cfdddb2e0291adfb9f13d31d3bbe0a03c9a402c01b1e24188d86c35b24f" +"checksum regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8c2f35eedad5295fdf00a63d7d4b238135723f92b434ec06774dad15c7ab0861" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" +"checksum reqwest 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e542d9f077c126af32536b6aacc75bb7325400eab8cd0743543be5d91660780d" "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_contrib 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f73e161dad5730435f51c815a5c6831d2e57b6b4299b1bf609d31b09aa9a2fa7" "checksum rocket_http 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba9d4f2ce5bba6e1b6d3100493bbad63879e99bbf6b4365d61e6f781daab324d" +"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 same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8f20c4be53a8a1ff4c1f1b2bd14570d2f634628709752f0702ecdd2b3f9a5267" +"checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339" +"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" +"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 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_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" +"checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "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 string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b639411d0b9c738748b5397d5ceba08e648f4f1992231aa859af1a017f31f60b" "checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" "checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a" +"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "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-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-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" +"checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" +"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 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 try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" "checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" +"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" +"checksum unicase 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "41d17211f887da8e4a70a45b9536f26fc5de166b81e2d5d80de4a17fd22553bd" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" "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 utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" +"checksum uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0238db0c5b605dd1cf51de0f21766f97fba2645897024461d6a00c036819a768" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1" +"checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" "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" diff --git a/Cargo.toml b/Cargo.toml index a313a30..f59a5e3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,8 @@ git2 = "0.8" hex = "0.3" lazy_static = "1.3" log = "0.4" +regex = "1" +reqwest = "0.9" ring = "0.13" rocket = "0.4" serde = "1.0" @@ -26,6 +28,7 @@ serde_derive = "1.0" serde_json = "1.0" tempfile = "3.0" toml = "0.4" +url = "1.7" yansi = "0.5" [dependencies.rocket_contrib] diff --git a/Dockerfile b/Dockerfile index dff6c80..3f8460f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,5 +11,6 @@ RUN cd src \ && rm -rf $HOME/.cargo/git ENV ROCKET_ENV=production +ENV RUST_LOG=labhub=info ENTRYPOINT [ "labhub" ] diff --git a/LabHub.toml b/LabHub.toml index 6d89667..8e8918f 100755 --- a/LabHub.toml +++ b/LabHub.toml @@ -1,20 +1,31 @@ -# List of enabled features. At the moment there's only one, so this parameter -# does nothing. :) +# List of enabled features features = [ - "external-pr", + "external_pr", + "commands" +] + +# Command settings +[commands] +# List of commands to enable +enabled_commands = [ + "retry", ] # Settings for GitHub [github] webhook_secret = "secret" username = "ci-user" -ssh_key = "/path/to/labhub-key.ecdsa" +ssh_key = "/etc/ssh-keys/labhub-key.ecdsa" +api_token = "token" +hostname = "github.com" # Settings for GitLab [gitlab] webhook_secret = "secret" username = "ci-user" -ssh_key = "/path/to/labhub-key.ecdsa" +ssh_key = "/etc/ssh-keys/labhub-key.ecdsa" +api_token = "token" +hostname = "gitlab.com" # List of mappings to/from GitHub & GitLab [[mappings]] diff --git a/README.md b/README.md index 3056632..50d8bd1 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,20 @@ A GitHub bot written in Rust for using GitLab CI in OSS projects. -## βœ”οΈ Features +## Features - Listens for webhooks from GitHub -- Pushes new branches to GitLab for external (forked) PRs +- Pushes branches to GitLab from external (forked) PRs +- Accepts commands by way of PR comments - Possibly more coming soon πŸ‘» -Not implemented: +### Commands -- No periodic reconciling of GitLab branches with open PRs: if a webhook is missed for any reason, the GitLab pipeline may not correctly reflect the PR state +Commands can be executed by commenting on a PR with your CI user's login. + +- **`@labhub retry`**: retry a pipeline that has failed -## ⁉️ The Problem +## The Problem GitLab has a great CI system, however it's not suitable for open source projects 😧 (at the time of writing) because it won't build external PRs by default. There are security concerns about the risk of exposing secrets in external builds, and GitLab errs on the side of caution by not building external PRs by default. @@ -32,7 +35,7 @@ LabHub is currently being used by the following projects: - [Conky](https://github.com/brndnmtthws/conky) -## πŸ–₯ Compiling +## Compiling LabHub requires Rust nightly. To compile using [`rustup`](https://rustup.rs/): @@ -50,7 +53,7 @@ LabHub is configured using [`LabHub.toml`](LabHub.toml). For details, see [src/c ## πŸš€ Deployment -### ↩ Setup Webhooks +### Setup Webhooks You'll need to set up webhooks for any repo you wish to enable LabHub for. Currently, only GitHub webhooks are required. To get started, go to `github.com///settings/hooks` and add a new webhook. @@ -61,7 +64,7 @@ Configure the webhook to send PR and push events. - Make sure the payload type is `application/json`. - [Here's how your webhook should look](docs/github-webhook-config.png) -### πŸ”‘ Create SSH keys +### Create SSH keys You'll need a CI user with SSH keys for both GitHub and GitLab. Create an account on both sites (if you don't already have a CI user), and create an SSH key for LabHub: @@ -71,7 +74,24 @@ $ ssh-keygen -f labhub-key.ecdsa -t ecdsa -b 521 Keep `labhub-key.ecdsa` safe, and upload `labhub-key.ecdsa.pub` to both GitHub and GitLab for the CI user. -### ☸️ Deploy to Kubernetes with Helm +### Create Personal Access Tokens + +Create personal access tokens for your CI user on both GitHub, and GitLab. Supply these tokens by setting the `api_token` parameter in `LabHub.toml` for both GitHub and GitLab. + +#### Personal Access Token for GitHub + +- Go to https://github.com/settings/tokens +- Click "Generate new token" +- Give the token a name, and [enable the `repo` scope, like this](docs/github-personal-access-token.png). +- Save that token to your `LabHub.toml` + +#### Personal Access Token for GitLab + +- Go to https://gitlab.com/profile/personal_access_tokens +- Give the token a name, and [enable the `api` scope, like this](docs/gitlab-personal-access-token.png). +- Save that token to your `LabHub.toml` + +### Deploy to Kubernetes with Helm There's a Helm chart included in this repo, which is the preferred method of deployment. To use you, you must first create the SSH key secrets with kubectl. Assuming your SSH private key is `labhub-key.ecdsa`: @@ -89,3 +109,7 @@ $ cp values.yaml myvalues.yaml ### Edit myvalues.yaml to your liking ### $ helm upgrade --install labhub . -f myvalues.yaml ``` + +### Not implemented: + +- No periodic reconciling of GitLab branches with open PRs: if a webhook is missed for any reason, the GitLab pipeline may not correctly reflect the PR state diff --git a/Rocket.toml b/Rocket.toml index 05a35fb..99a99f7 100644 --- a/Rocket.toml +++ b/Rocket.toml @@ -19,5 +19,5 @@ limits = { forms = 32768 } address = "0.0.0.0" port = 8000 keep_alive = 5 -log = "normal" +log = "critical" limits = { forms = 32768 } diff --git a/docs/github-personal-access-token.png b/docs/github-personal-access-token.png new file mode 100644 index 0000000000000000000000000000000000000000..4c758652f66511617c0547a1b3cb1ca42da4137f GIT binary patch literal 269166 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�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 literal 0 HcmV?d00001 diff --git a/helm/labhub/values.yaml b/helm/labhub/values.yaml index f34822b..f19e9d3 100644 --- a/helm/labhub/values.yaml +++ b/helm/labhub/values.yaml @@ -54,22 +54,35 @@ labhub_toml: | # List of enabled features. At the moment there's only one, so this parameter # does nothing. :) features = [ - "external-pr", + "external_pr", + "commands" + ] + + [commands] + enabled_commands = [ + "retry", ] # Settings for GitHub [github] webhook_secret = "secret" username = "ci-user" - ssh_key = "/etc/ssh-keys/github" + ssh_key = "/etc/ssh-keys/labhub-key.ecdsa" + api_token = "token" + hostname = "github.com" # Settings for GitLab [gitlab] webhook_secret = "secret" username = "ci-user" - ssh_key = "/etc/ssh-keys/gitlab" + ssh_key = "/etc/ssh-keys/labhub-key.ecdsa" + api_token = "token" + hostname = "gitlab.com" # List of mappings to/from GitHub & GitLab [[mappings]] github_repo = "brndnmtthws/labhub" gitlab_repo = "brndnmtthws-oss/labhub" + [[mappings]] + github_repo = "brndnmtthws/conky" + gitlab_repo = "brndnmtthws-oss/conky" diff --git a/src/api/github_client.rs b/src/api/github_client.rs new file mode 100644 index 0000000..e5dcb50 --- /dev/null +++ b/src/api/github_client.rs @@ -0,0 +1,72 @@ +use crate::api::models::github; +use crate::config; +use crate::errors::GitError; + +use log::error; +use reqwest; + +fn headers(token: &str) -> reqwest::header::HeaderMap { + let mut headers = reqwest::header::HeaderMap::new(); + headers.insert( + reqwest::header::AUTHORIZATION, + reqwest::header::HeaderValue::from_str(&format!("token {}", token)).unwrap(), + ); + headers.insert( + reqwest::header::ACCEPT, + reqwest::header::HeaderValue::from_static("application/vnd.github.v3+json"), + ); + headers.insert( + reqwest::header::ACCEPT_ENCODING, + reqwest::header::HeaderValue::from_static("Accept-Encoding: deflate, gzip"), + ); + headers +} + +fn make_repo_url(org: &str, repo: &str) -> String { + let hostname = match config::CONFIG.github.hostname.as_ref() { + Some(hostname) => hostname.clone(), + _ => "github.com".to_string(), + }; + format!("https://api.{}/repos/{}/{}", hostname, org, repo) +} + +pub fn get_pull( + client: &reqwest::Client, + org: &str, + repo: &str, + number: i64, +) -> Result { + let res: github::RepoPr = client + .get(&format!("{}/pulls/{}", make_repo_url(org, repo), number)) + .headers(headers(&config::CONFIG.github.api_token)) + .send()? + .json()?; + Ok(res) +} + +pub fn create_issue_comment( + client: &reqwest::Client, + org: &str, + repo: &str, + number: i64, + body: &str, +) -> Result<(), GitError> { + let mut res = client + .post(&format!( + "{}/issues/{}/comments", + make_repo_url(org, repo), + number + )) + .headers(headers(&config::CONFIG.github.api_token)) + .body(serde_json::json!({"body":body.to_string()}).to_string()) + .send()?; + let body = res.text()?; + match res.status() { + reqwest::StatusCode::CREATED => Ok(()), + _ => { + let msg = format!("Error creating issue comment: res={:#?} body={}", res, body); + error!("{}", msg); + Err(GitError { message: msg }) + } + } +} diff --git a/src/api/gitlab_client.rs b/src/api/gitlab_client.rs new file mode 100644 index 0000000..7ccc515 --- /dev/null +++ b/src/api/gitlab_client.rs @@ -0,0 +1,106 @@ +use crate::api::models::gitlab; +use crate::config; +use crate::errors::GitError; + +use log::error; +use reqwest; +use url::percent_encoding::{utf8_percent_encode, PATH_SEGMENT_ENCODE_SET}; + +fn headers(token: &str) -> reqwest::header::HeaderMap { + let token_header = reqwest::header::HeaderName::from_static("private-token"); + let mut headers = reqwest::header::HeaderMap::new(); + headers.insert( + token_header, + reqwest::header::HeaderValue::from_str(token).unwrap(), + ); + headers.insert( + reqwest::header::ACCEPT, + reqwest::header::HeaderValue::from_static("application/json"), + ); + headers.insert( + reqwest::header::ACCEPT_ENCODING, + reqwest::header::HeaderValue::from_static("Accept-Encoding: deflate, gzip"), + ); + headers +} + +fn make_api_url(project: &str) -> String { + let hostname = match config::CONFIG.gitlab.hostname.as_ref() { + Some(hostname) => hostname.clone(), + _ => "gitlab.com".to_string(), + }; + let project = utf8_percent_encode(project, PATH_SEGMENT_ENCODE_SET).to_string(); + format!("https://{}/api/v4/projects/{}", hostname, project) +} + +pub fn make_ext_url(project: &str) -> String { + let hostname = match config::CONFIG.gitlab.hostname.as_ref() { + Some(hostname) => hostname.clone(), + _ => "gitlab.com".to_string(), + }; + format!("https://{}/{}", hostname, project) +} + +pub fn get_pipelines( + client: &reqwest::Client, + project: &str, + page: i64, + per_page: i64, +) -> Result, GitError> { + let res: Vec = client + .get(&format!( + "{}/pipelines?page={}&per_page={}", + make_api_url(project), + page, + per_page + )) + .headers(headers(&config::CONFIG.gitlab.api_token)) + .send()? + .json()?; + Ok(res) +} + +pub fn retry_pipeline( + client: &reqwest::Client, + project: &str, + pipeline_id: i64, +) -> Result<(), GitError> { + let res = client + .post(&format!( + "{}/pipelines/{}/retry", + make_api_url(project), + pipeline_id + )) + .headers(headers(&config::CONFIG.gitlab.api_token)) + .send()?; + + match res.status() { + reqwest::StatusCode::CREATED => Ok(()), + _ => { + let msg = format!("Error retrying pipeline: {:#?}", res); + error!("{}", msg); + Err(GitError { message: msg }) + } + } +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_make_ext_url() { + assert_eq!( + make_ext_url("brndnmtthws-oss/conky"), + "https://gitlab.com/brndnmtthws-oss/conky" + ); + } + + #[test] + fn test_make_api_url() { + assert_eq!( + make_api_url("brndnmtthws-oss/conky"), + "https://gitlab.com/api/v4/projects/brndnmtthws-oss%2Fconky" + ); + } +} diff --git a/src/api/mod.rs b/src/api/mod.rs index ee28410..4d659e2 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -1,3 +1,5 @@ +pub mod github_client; pub mod github_proto; pub mod github_signature; +pub mod gitlab_client; pub mod models; diff --git a/src/api/models/gen_github_model.py b/src/api/models/gen_models.py similarity index 55% rename from src/api/models/gen_github_model.py rename to src/api/models/gen_models.py index 3e0e3ea..49b70df 100755 --- a/src/api/models/gen_github_model.py +++ b/src/api/models/gen_models.py @@ -39,55 +39,45 @@ def check_for_keywords(key): return key -def generate_structs_inner(structs, struct_name, key, value): +def generate_structs(structs, struct_name, key, value, skip=False): key_name = check_for_keywords(key) - if type(value) is dict: - substruct_name = to_camel_case(key_name) - structs = generate_structs( - structs, struct_name + substruct_name, value) + + if struct_name not in structs: + structs[struct_name] = [] + + if type(value) is not list and type(value) is not dict: + obj = generate_type(key_name, value) + if key_name != key: + structs[struct_name].append('#[serde(rename = "{}")]'.format(key)) + structs[struct_name].append(obj) + elif type(value) is list and len(value) > 0 and type(value[0]) is dict: + substruct_name = struct_name + to_camel_case(key) + "Item" + if struct_name.endswith("s"): + substruct_name = struct_name[:-1] + to_camel_case(key) + "Item" + for subkey, subvalue in value[0].items(): + structs = generate_structs( + structs, substruct_name, subkey, subvalue) if key_name != key: structs[struct_name].append('#[serde(rename = "{}")]'.format(key)) structs[struct_name].append( - "pub {}: Option<{}>,".format(key_name, struct_name + substruct_name)) - elif type(value) is list: - if len(value) == 0: - # skip empty lists, don't know the type - return - substruct_name = to_camel_case(key_name) - if substruct_name[-1] == 's': - substruct_name = substruct_name[:-1] - if type(value[0]) == dict: - structs[struct_name + substruct_name] = [] - structs = generate_structs_inner(structs, struct_name + substruct_name, - substruct_name, value[0]) - structs[struct_name + - substruct_name] = structs[struct_name + substruct_name][:-1] - if key_name != key: - structs[struct_name].append( - '#[serde(rename = "{}")]'.format(key)) - structs[struct_name].append( - "pub {}: Option>,".format(key_name, struct_name + substruct_name)) - else: - subtype = get_type_for(struct_name, value[0]) + "pub {}: Option>,".format(key_name, substruct_name)) + elif type(value) is list and len(value) > 0: + if key_name != key: + structs[struct_name].append('#[serde(rename = "{}")]'.format(key)) + structs[struct_name].append("pub {}: Option>,".format( + key_name, get_type_for(key_name, value[0]))) + elif type(value) is dict: + substruct_name = struct_name + to_camel_case(key_name) + for subkey, subvalue in value.items(): + structs = generate_structs( + structs, substruct_name, subkey, subvalue) + if not skip: if key_name != key: structs[struct_name].append( '#[serde(rename = "{}")]'.format(key)) structs[struct_name].append( - "pub {}: Option>,".format(key_name, subtype)) - else: - obj = generate_type(key_name, value) - if key_name != key: - structs[struct_name].append('#[serde(rename = "{}")]'.format(key)) - structs[struct_name].append(obj) - return structs - + "pub {}: Option<{}>,".format(key_name, substruct_name)) -def generate_structs(structs, struct_name, model): - if struct_name in structs.keys(): - print("'{}' already in struct (duplicate type?)".format(struct_name)) - structs[struct_name] = [] - for key, value in model.items(): - generate_structs_inner(structs, struct_name, key, value) return structs @@ -100,7 +90,13 @@ def inout(input_json, output_rs, mod_name): data = json.load(input_json) structs = {} for event_type, model in data.items(): - structs = generate_structs(structs, to_camel_case(event_type), model) + if type(model) is dict: + for key, value in model.items(): + structs = generate_structs( + structs, to_camel_case(event_type), key, value) + elif type(model) is list: + structs = generate_structs( + structs, to_camel_case(event_type), event_type, model[0], skip=True) template = env.get_template('model.rs.j2') output_rs.write(bytearray(template.render( mod_name=mod_name, structs=structs), 'utf8')) diff --git a/src/api/models/github.rs b/src/api/models/github.rs index d9a28bf..f5072a3 100644 --- a/src/api/models/github.rs +++ b/src/api/models/github.rs @@ -183,7 +183,7 @@ pub struct Push { pub forced: Option, pub base_ref: Option, pub compare: Option, - pub commits: Option>, + pub commits: Option>, pub head_commit: Option, pub repository: Option, pub pusher: Option, @@ -191,30 +191,27 @@ pub struct Push { } #[derive(Serialize, Deserialize, Debug)] -pub struct PushCommit {} - -#[derive(Serialize, Deserialize, Debug)] -pub struct PushCommitCommit { +pub struct PushCommitsItem { pub id: Option, pub tree_id: Option, pub distinct: Option, pub message: Option, pub timestamp: Option, pub url: Option, - pub author: Option, - pub committer: Option, + pub author: Option, + pub committer: Option, pub modified: Option>, } #[derive(Serialize, Deserialize, Debug)] -pub struct PushCommitCommitAuthor { +pub struct PushCommitsItemAuthor { pub name: Option, pub email: Option, pub username: Option, } #[derive(Serialize, Deserialize, Debug)] -pub struct PushCommitCommitCommitter { +pub struct PushCommitsItemCommitter { pub name: Option, pub email: Option, pub username: Option, @@ -430,8 +427,8 @@ pub struct PullRequestPullRequest { pub author_association: Option, pub draft: Option, pub merged: Option, - pub mergeable: Option, - pub rebaseable: Option, + pub mergeable: Option, + pub rebaseable: Option, pub mergeable_state: Option, pub merged_by: Option, pub comments: Option, @@ -954,3 +951,809 @@ pub struct PullRequestSender { pub type_key: Option, pub site_admin: Option, } + +#[derive(Serialize, Deserialize, Debug)] +pub struct IssueComment { + pub action: Option, + pub issue: Option, + pub comment: Option, + pub repository: Option, + pub sender: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct IssueCommentIssue { + pub url: Option, + pub repository_url: Option, + pub labels_url: Option, + pub comments_url: Option, + pub events_url: Option, + pub html_url: Option, + pub id: Option, + pub node_id: Option, + pub number: Option, + pub title: Option, + pub user: Option, + pub state: Option, + pub locked: Option, + pub assignee: Option, + pub milestone: Option, + pub comments: Option, + pub created_at: Option, + pub updated_at: Option, + pub closed_at: Option, + pub author_association: Option, + pub pull_request: Option, + pub body: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct IssueCommentIssueUser { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct IssueCommentIssuePullRequest { + pub url: Option, + pub html_url: Option, + pub diff_url: Option, + pub patch_url: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct IssueCommentComment { + pub url: Option, + pub html_url: Option, + pub issue_url: Option, + pub id: Option, + pub node_id: Option, + pub user: Option, + pub created_at: Option, + pub updated_at: Option, + pub author_association: Option, + pub body: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct IssueCommentCommentUser { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct IssueCommentRepository { + pub id: Option, + pub node_id: Option, + pub name: Option, + pub full_name: Option, + pub private: Option, + pub owner: Option, + pub html_url: Option, + pub description: Option, + pub fork: Option, + pub url: Option, + pub forks_url: Option, + pub keys_url: Option, + pub collaborators_url: Option, + pub teams_url: Option, + pub hooks_url: Option, + pub issue_events_url: Option, + pub events_url: Option, + pub assignees_url: Option, + pub branches_url: Option, + pub tags_url: Option, + pub blobs_url: Option, + pub git_tags_url: Option, + pub git_refs_url: Option, + pub trees_url: Option, + pub statuses_url: Option, + pub languages_url: Option, + pub stargazers_url: Option, + pub contributors_url: Option, + pub subscribers_url: Option, + pub subscription_url: Option, + pub commits_url: Option, + pub git_commits_url: Option, + pub comments_url: Option, + pub issue_comment_url: Option, + pub contents_url: Option, + pub compare_url: Option, + pub merges_url: Option, + pub archive_url: Option, + pub downloads_url: Option, + pub issues_url: Option, + pub pulls_url: Option, + pub milestones_url: Option, + pub notifications_url: Option, + pub labels_url: Option, + pub releases_url: Option, + pub deployments_url: Option, + pub created_at: Option, + pub updated_at: Option, + pub pushed_at: Option, + pub git_url: Option, + pub ssh_url: Option, + pub clone_url: Option, + pub svn_url: Option, + pub homepage: Option, + pub size: Option, + pub stargazers_count: Option, + pub watchers_count: Option, + pub language: Option, + pub has_issues: Option, + pub has_projects: Option, + pub has_downloads: Option, + pub has_wiki: Option, + pub has_pages: Option, + pub forks_count: Option, + pub mirror_url: Option, + pub archived: Option, + pub open_issues_count: Option, + pub license: Option, + pub forks: Option, + pub open_issues: Option, + pub watchers: Option, + pub default_branch: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct IssueCommentRepositoryOwner { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct IssueCommentRepositoryLicense { + pub key: Option, + pub name: Option, + pub spdx_id: Option, + pub url: Option, + pub node_id: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct IssueCommentSender { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPr { + pub url: Option, + pub id: Option, + pub node_id: Option, + pub html_url: Option, + pub diff_url: Option, + pub patch_url: Option, + pub issue_url: Option, + pub commits_url: Option, + pub review_comments_url: Option, + pub review_comment_url: Option, + pub comments_url: Option, + pub statuses_url: Option, + pub number: Option, + pub state: Option, + pub locked: Option, + pub title: Option, + pub user: Option, + pub body: Option, + pub labels: Option>, + pub milestone: Option, + pub active_lock_reason: Option, + pub created_at: Option, + pub updated_at: Option, + pub closed_at: Option, + pub merged_at: Option, + pub merge_commit_sha: Option, + pub assignee: Option, + pub assignees: Option>, + pub requested_reviewers: Option>, + pub requested_teams: Option>, + pub head: Option, + pub base: Option, + pub _links: Option, + pub author_association: Option, + pub draft: Option, + pub merged: Option, + pub mergeable: Option, + pub rebaseable: Option, + pub mergeable_state: Option, + pub merged_by: Option, + pub comments: Option, + pub review_comments: Option, + pub maintainer_can_modify: Option, + pub commits: Option, + pub additions: Option, + pub deletions: Option, + pub changed_files: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrUser { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrLabelsItem { + pub id: Option, + pub node_id: Option, + pub url: Option, + pub name: Option, + pub description: Option, + pub color: Option, + pub default: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrMilestone { + pub url: Option, + pub html_url: Option, + pub labels_url: Option, + pub id: Option, + pub node_id: Option, + pub number: Option, + pub state: Option, + pub title: Option, + pub description: Option, + pub creator: Option, + pub open_issues: Option, + pub closed_issues: Option, + pub created_at: Option, + pub updated_at: Option, + pub closed_at: Option, + pub due_on: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrMilestoneCreator { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrAssignee { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrAssigneesItem { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrRequestedReviewersItem { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrRequestedTeamsItem { + pub id: Option, + pub node_id: Option, + pub url: Option, + pub name: Option, + pub slug: Option, + pub description: Option, + pub privacy: Option, + pub permission: Option, + pub members_url: Option, + pub repositories_url: Option, + pub parent: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrHead { + pub label: Option, + #[serde(rename = "ref")] + pub ref_key: Option, + pub sha: Option, + pub user: Option, + pub repo: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrHeadUser { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrHeadRepo { + pub id: Option, + pub node_id: Option, + pub name: Option, + pub full_name: Option, + pub owner: Option, + pub private: Option, + pub html_url: Option, + pub description: Option, + pub fork: Option, + pub url: Option, + pub archive_url: Option, + pub assignees_url: Option, + pub blobs_url: Option, + pub branches_url: Option, + pub collaborators_url: Option, + pub comments_url: Option, + pub commits_url: Option, + pub compare_url: Option, + pub contents_url: Option, + pub contributors_url: Option, + pub deployments_url: Option, + pub downloads_url: Option, + pub events_url: Option, + pub forks_url: Option, + pub git_commits_url: Option, + pub git_refs_url: Option, + pub git_tags_url: Option, + pub git_url: Option, + pub issue_comment_url: Option, + pub issue_events_url: Option, + pub issues_url: Option, + pub keys_url: Option, + pub labels_url: Option, + pub languages_url: Option, + pub merges_url: Option, + pub milestones_url: Option, + pub notifications_url: Option, + pub pulls_url: Option, + pub releases_url: Option, + pub ssh_url: Option, + pub stargazers_url: Option, + pub statuses_url: Option, + pub subscribers_url: Option, + pub subscription_url: Option, + pub tags_url: Option, + pub teams_url: Option, + pub trees_url: Option, + pub clone_url: Option, + pub mirror_url: Option, + pub hooks_url: Option, + pub svn_url: Option, + pub homepage: Option, + pub language: Option, + pub forks_count: Option, + pub stargazers_count: Option, + pub watchers_count: Option, + pub size: Option, + pub default_branch: Option, + pub open_issues_count: Option, + pub topics: Option>, + pub has_issues: Option, + pub has_projects: Option, + pub has_wiki: Option, + pub has_pages: Option, + pub has_downloads: Option, + pub archived: Option, + pub pushed_at: Option, + pub created_at: Option, + pub updated_at: Option, + pub permissions: Option, + pub allow_rebase_merge: Option, + pub allow_squash_merge: Option, + pub allow_merge_commit: Option, + pub subscribers_count: Option, + pub network_count: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrHeadRepoOwner { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrHeadRepoPermissions { + pub admin: Option, + pub push: Option, + pub pull: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrBase { + pub label: Option, + #[serde(rename = "ref")] + pub ref_key: Option, + pub sha: Option, + pub user: Option, + pub repo: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrBaseUser { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrBaseRepo { + pub id: Option, + pub node_id: Option, + pub name: Option, + pub full_name: Option, + pub owner: Option, + pub private: Option, + pub html_url: Option, + pub description: Option, + pub fork: Option, + pub url: Option, + pub archive_url: Option, + pub assignees_url: Option, + pub blobs_url: Option, + pub branches_url: Option, + pub collaborators_url: Option, + pub comments_url: Option, + pub commits_url: Option, + pub compare_url: Option, + pub contents_url: Option, + pub contributors_url: Option, + pub deployments_url: Option, + pub downloads_url: Option, + pub events_url: Option, + pub forks_url: Option, + pub git_commits_url: Option, + pub git_refs_url: Option, + pub git_tags_url: Option, + pub git_url: Option, + pub issue_comment_url: Option, + pub issue_events_url: Option, + pub issues_url: Option, + pub keys_url: Option, + pub labels_url: Option, + pub languages_url: Option, + pub merges_url: Option, + pub milestones_url: Option, + pub notifications_url: Option, + pub pulls_url: Option, + pub releases_url: Option, + pub ssh_url: Option, + pub stargazers_url: Option, + pub statuses_url: Option, + pub subscribers_url: Option, + pub subscription_url: Option, + pub tags_url: Option, + pub teams_url: Option, + pub trees_url: Option, + pub clone_url: Option, + pub mirror_url: Option, + pub hooks_url: Option, + pub svn_url: Option, + pub homepage: Option, + pub language: Option, + pub forks_count: Option, + pub stargazers_count: Option, + pub watchers_count: Option, + pub size: Option, + pub default_branch: Option, + pub open_issues_count: Option, + pub topics: Option>, + pub has_issues: Option, + pub has_projects: Option, + pub has_wiki: Option, + pub has_pages: Option, + pub has_downloads: Option, + pub archived: Option, + pub pushed_at: Option, + pub created_at: Option, + pub updated_at: Option, + pub permissions: Option, + pub allow_rebase_merge: Option, + pub allow_squash_merge: Option, + pub allow_merge_commit: Option, + pub subscribers_count: Option, + pub network_count: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrBaseRepoOwner { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrBaseRepoPermissions { + pub admin: Option, + pub push: Option, + pub pull: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrLinks { + #[serde(rename = "self")] + pub self_key: Option, + pub html: Option, + pub issue: Option, + pub comments: Option, + pub review_comments: Option, + pub review_comment: Option, + pub commits: Option, + pub statuses: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrLinksSelfKey { + pub href: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrLinksHtml { + pub href: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrLinksIssue { + pub href: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrLinksComments { + pub href: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrLinksReviewComments { + pub href: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrLinksReviewComment { + pub href: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrLinksCommits { + pub href: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrLinksStatuses { + pub href: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct RepoPrMergedBy { + pub login: Option, + pub id: Option, + pub node_id: Option, + pub avatar_url: Option, + pub gravatar_id: Option, + pub url: Option, + pub html_url: Option, + pub followers_url: Option, + pub following_url: Option, + pub gists_url: Option, + pub starred_url: Option, + pub subscriptions_url: Option, + pub organizations_url: Option, + pub repos_url: Option, + pub events_url: Option, + pub received_events_url: Option, + #[serde(rename = "type")] + pub type_key: Option, + pub site_admin: Option, +} diff --git a/src/api/models/gitlab.rs b/src/api/models/gitlab.rs new file mode 100644 index 0000000..55ddb79 --- /dev/null +++ b/src/api/models/gitlab.rs @@ -0,0 +1,11 @@ +// This file is auto-generated, do not edit. + +#[derive(Serialize, Deserialize, Debug)] +pub struct Pipeline { + pub id: Option, + pub status: Option, + #[serde(rename = "ref")] + pub ref_key: Option, + pub sha: Option, + pub web_url: Option, +} diff --git a/src/api/models/json/github_events.json b/src/api/models/json/github.json similarity index 52% rename from src/api/models/json/github_events.json rename to src/api/models/json/github.json index e172d00..ee36457 100644 --- a/src/api/models/json/github_events.json +++ b/src/api/models/json/github.json @@ -680,25 +680,25 @@ "rebaseable": null, "mergeable_state": "unknown", "merged_by": { - "login": "brndnmtthws", - "id": 3129093, - "node_id": "MDQ6VXNlcjMxMjkwOTM=", - "avatar_url": "https://avatars1.githubusercontent.com/u/3129093?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/brndnmtthws", - "html_url": "https://github.com/brndnmtthws", - "followers_url": "https://api.github.com/users/brndnmtthws/followers", - "following_url": "https://api.github.com/users/brndnmtthws/following{/other_user}", - "gists_url": "https://api.github.com/users/brndnmtthws/gists{/gist_id}", - "starred_url": "https://api.github.com/users/brndnmtthws/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/brndnmtthws/subscriptions", - "organizations_url": "https://api.github.com/users/brndnmtthws/orgs", - "repos_url": "https://api.github.com/users/brndnmtthws/repos", - "events_url": "https://api.github.com/users/brndnmtthws/events{/privacy}", - "received_events_url": "https://api.github.com/users/brndnmtthws/received_events", - "type": "User", - "site_admin": false - }, + "login": "brndnmtthws", + "id": 3129093, + "node_id": "MDQ6VXNlcjMxMjkwOTM=", + "avatar_url": "https://avatars1.githubusercontent.com/u/3129093?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/brndnmtthws", + "html_url": "https://github.com/brndnmtthws", + "followers_url": "https://api.github.com/users/brndnmtthws/followers", + "following_url": "https://api.github.com/users/brndnmtthws/following{/other_user}", + "gists_url": "https://api.github.com/users/brndnmtthws/gists{/gist_id}", + "starred_url": "https://api.github.com/users/brndnmtthws/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/brndnmtthws/subscriptions", + "organizations_url": "https://api.github.com/users/brndnmtthws/orgs", + "repos_url": "https://api.github.com/users/brndnmtthws/repos", + "events_url": "https://api.github.com/users/brndnmtthws/events{/privacy}", + "received_events_url": "https://api.github.com/users/brndnmtthws/received_events", + "type": "User", + "site_admin": false + }, "comments": 0, "review_comments": 0, "maintainer_can_modify": false, @@ -826,5 +826,718 @@ "type": "User", "site_admin": false } + }, + "issue_comment": + + { + "action": "created", + "issue": { + "url": "https://api.github.com/repos/brndnmtthws/labhub/issues/8", + "repository_url": "https://api.github.com/repos/brndnmtthws/labhub", + "labels_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/8/labels{/name}", + "comments_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/8/comments", + "events_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/8/events", + "html_url": "https://github.com/brndnmtthws/labhub/pull/8", + "id": 418492922, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjU5MjU0MzIz", + "number": 8, + "title": "Update .gitlab-ci.yml", + "user": { + "login": "brndnmtthws", + "id": 3129093, + "node_id": "MDQ6VXNlcjMxMjkwOTM=", + "avatar_url": "https://avatars1.githubusercontent.com/u/3129093?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/brndnmtthws", + "html_url": "https://github.com/brndnmtthws", + "followers_url": "https://api.github.com/users/brndnmtthws/followers", + "following_url": "https://api.github.com/users/brndnmtthws/following{/other_user}", + "gists_url": "https://api.github.com/users/brndnmtthws/gists{/gist_id}", + "starred_url": "https://api.github.com/users/brndnmtthws/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/brndnmtthws/subscriptions", + "organizations_url": "https://api.github.com/users/brndnmtthws/orgs", + "repos_url": "https://api.github.com/users/brndnmtthws/repos", + "events_url": "https://api.github.com/users/brndnmtthws/events{/privacy}", + "received_events_url": "https://api.github.com/users/brndnmtthws/received_events", + "type": "User", + "site_admin": false + }, + "labels": [ + + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [ + + ], + "milestone": null, + "comments": 0, + "created_at": "2019-03-07T20:13:37Z", + "updated_at": "2019-03-07T20:15:14Z", + "closed_at": null, + "author_association": "OWNER", + "pull_request": { + "url": "https://api.github.com/repos/brndnmtthws/labhub/pulls/8", + "html_url": "https://github.com/brndnmtthws/labhub/pull/8", + "diff_url": "https://github.com/brndnmtthws/labhub/pull/8.diff", + "patch_url": "https://github.com/brndnmtthws/labhub/pull/8.patch" + }, + "body": "" + }, + "comment": { + "url": "https://api.github.com/repos/brndnmtthws/labhub/issues/comments/470677118", + "html_url": "https://github.com/brndnmtthws/labhub/pull/8#issuecomment-470677118", + "issue_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/8", + "id": 470677118, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3MDY3NzExOA==", + "user": { + "login": "brndnmtthws", + "id": 3129093, + "node_id": "MDQ6VXNlcjMxMjkwOTM=", + "avatar_url": "https://avatars1.githubusercontent.com/u/3129093?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/brndnmtthws", + "html_url": "https://github.com/brndnmtthws", + "followers_url": "https://api.github.com/users/brndnmtthws/followers", + "following_url": "https://api.github.com/users/brndnmtthws/following{/other_user}", + "gists_url": "https://api.github.com/users/brndnmtthws/gists{/gist_id}", + "starred_url": "https://api.github.com/users/brndnmtthws/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/brndnmtthws/subscriptions", + "organizations_url": "https://api.github.com/users/brndnmtthws/orgs", + "repos_url": "https://api.github.com/users/brndnmtthws/repos", + "events_url": "https://api.github.com/users/brndnmtthws/events{/privacy}", + "received_events_url": "https://api.github.com/users/brndnmtthws/received_events", + "type": "User", + "site_admin": false + }, + "created_at": "2019-03-07T20:15:14Z", + "updated_at": "2019-03-07T20:15:14Z", + "author_association": "OWNER", + "body": "hello test" + }, + "repository": { + "id": 172714879, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzI3MTQ4Nzk=", + "name": "labhub", + "full_name": "brndnmtthws/labhub", + "private": false, + "owner": { + "login": "brndnmtthws", + "id": 3129093, + "node_id": "MDQ6VXNlcjMxMjkwOTM=", + "avatar_url": "https://avatars1.githubusercontent.com/u/3129093?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/brndnmtthws", + "html_url": "https://github.com/brndnmtthws", + "followers_url": "https://api.github.com/users/brndnmtthws/followers", + "following_url": "https://api.github.com/users/brndnmtthws/following{/other_user}", + "gists_url": "https://api.github.com/users/brndnmtthws/gists{/gist_id}", + "starred_url": "https://api.github.com/users/brndnmtthws/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/brndnmtthws/subscriptions", + "organizations_url": "https://api.github.com/users/brndnmtthws/orgs", + "repos_url": "https://api.github.com/users/brndnmtthws/repos", + "events_url": "https://api.github.com/users/brndnmtthws/events{/privacy}", + "received_events_url": "https://api.github.com/users/brndnmtthws/received_events", + "type": "User", + "site_admin": false + }, + "html_url": "https://github.com/brndnmtthws/labhub", + "description": "GitHub bot for using GitLab CI in OSS projects", + "fork": false, + "url": "https://api.github.com/repos/brndnmtthws/labhub", + "forks_url": "https://api.github.com/repos/brndnmtthws/labhub/forks", + "keys_url": "https://api.github.com/repos/brndnmtthws/labhub/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/brndnmtthws/labhub/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/brndnmtthws/labhub/teams", + "hooks_url": "https://api.github.com/repos/brndnmtthws/labhub/hooks", + "issue_events_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/events{/number}", + "events_url": "https://api.github.com/repos/brndnmtthws/labhub/events", + "assignees_url": "https://api.github.com/repos/brndnmtthws/labhub/assignees{/user}", + "branches_url": "https://api.github.com/repos/brndnmtthws/labhub/branches{/branch}", + "tags_url": "https://api.github.com/repos/brndnmtthws/labhub/tags", + "blobs_url": "https://api.github.com/repos/brndnmtthws/labhub/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/brndnmtthws/labhub/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/brndnmtthws/labhub/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/brndnmtthws/labhub/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/brndnmtthws/labhub/statuses/{sha}", + "languages_url": "https://api.github.com/repos/brndnmtthws/labhub/languages", + "stargazers_url": "https://api.github.com/repos/brndnmtthws/labhub/stargazers", + "contributors_url": "https://api.github.com/repos/brndnmtthws/labhub/contributors", + "subscribers_url": "https://api.github.com/repos/brndnmtthws/labhub/subscribers", + "subscription_url": "https://api.github.com/repos/brndnmtthws/labhub/subscription", + "commits_url": "https://api.github.com/repos/brndnmtthws/labhub/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/brndnmtthws/labhub/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/brndnmtthws/labhub/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/brndnmtthws/labhub/contents/{+path}", + "compare_url": "https://api.github.com/repos/brndnmtthws/labhub/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/brndnmtthws/labhub/merges", + "archive_url": "https://api.github.com/repos/brndnmtthws/labhub/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/brndnmtthws/labhub/downloads", + "issues_url": "https://api.github.com/repos/brndnmtthws/labhub/issues{/number}", + "pulls_url": "https://api.github.com/repos/brndnmtthws/labhub/pulls{/number}", + "milestones_url": "https://api.github.com/repos/brndnmtthws/labhub/milestones{/number}", + "notifications_url": "https://api.github.com/repos/brndnmtthws/labhub/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/brndnmtthws/labhub/labels{/name}", + "releases_url": "https://api.github.com/repos/brndnmtthws/labhub/releases{/id}", + "deployments_url": "https://api.github.com/repos/brndnmtthws/labhub/deployments", + "created_at": "2019-02-26T13:16:44Z", + "updated_at": "2019-03-07T13:08:58Z", + "pushed_at": "2019-03-07T20:13:38Z", + "git_url": "git://github.com/brndnmtthws/labhub.git", + "ssh_url": "git@github.com:brndnmtthws/labhub.git", + "clone_url": "https://github.com/brndnmtthws/labhub.git", + "svn_url": "https://github.com/brndnmtthws/labhub", + "homepage": "", + "size": 464, + "stargazers_count": 1, + "watchers_count": 1, + "language": "Rust", + "has_issues": true, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "open_issues_count": 1, + "license": { + "key": "unlicense", + "name": "The Unlicense", + "spdx_id": "Unlicense", + "url": "https://api.github.com/licenses/unlicense", + "node_id": "MDc6TGljZW5zZTE1" + }, + "forks": 0, + "open_issues": 1, + "watchers": 1, + "default_branch": "master" + }, + "sender": { + "login": "brndnmtthws", + "id": 3129093, + "node_id": "MDQ6VXNlcjMxMjkwOTM=", + "avatar_url": "https://avatars1.githubusercontent.com/u/3129093?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/brndnmtthws", + "html_url": "https://github.com/brndnmtthws", + "followers_url": "https://api.github.com/users/brndnmtthws/followers", + "following_url": "https://api.github.com/users/brndnmtthws/following{/other_user}", + "gists_url": "https://api.github.com/users/brndnmtthws/gists{/gist_id}", + "starred_url": "https://api.github.com/users/brndnmtthws/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/brndnmtthws/subscriptions", + "organizations_url": "https://api.github.com/users/brndnmtthws/orgs", + "repos_url": "https://api.github.com/users/brndnmtthws/repos", + "events_url": "https://api.github.com/users/brndnmtthws/events{/privacy}", + "received_events_url": "https://api.github.com/users/brndnmtthws/received_events", + "type": "User", + "site_admin": false + } + }, + "repo_pr": { + "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", + "id": 1, + "node_id": "MDExOlB1bGxSZXF1ZXN0MQ==", + "html_url": "https://github.com/octocat/Hello-World/pull/1347", + "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", + "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch", + "issue_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", + "commits_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits", + "review_comments_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments", + "review_comment_url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", + "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "number": 1347, + "state": "open", + "locked": true, + "title": "new-feature", + "user": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "body": "Please pull these awesome changes", + "labels": [{ + "id": 208045946, + "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", + "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", + "name": "bug", + "description": "Something isn't working", + "color": "f29513", + "default": true + }], + "milestone": { + "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", + "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", + "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", + "id": 1002604, + "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", + "number": 1, + "state": "open", + "title": "v1.0", + "description": "Tracking milestone for version 1.0", + "creator": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "open_issues": 4, + "closed_issues": 8, + "created_at": "2011-04-10T20:09:31Z", + "updated_at": "2014-03-03T18:58:10Z", + "closed_at": "2013-02-12T13:22:01Z", + "due_on": "2012-10-09T23:39:01Z" + }, + "active_lock_reason": "too heated", + "created_at": "2011-01-26T19:01:12Z", + "updated_at": "2011-01-26T19:01:12Z", + "closed_at": "2011-01-26T19:01:12Z", + "merged_at": "2011-01-26T19:01:12Z", + "merge_commit_sha": "e5bd3914e2e596debea16f433f57875b5b90bcd6", + "assignee": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "assignees": [{ + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + { + "login": "hubot", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/hubot_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/hubot", + "html_url": "https://github.com/hubot", + "followers_url": "https://api.github.com/users/hubot/followers", + "following_url": "https://api.github.com/users/hubot/following{/other_user}", + "gists_url": "https://api.github.com/users/hubot/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hubot/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hubot/subscriptions", + "organizations_url": "https://api.github.com/users/hubot/orgs", + "repos_url": "https://api.github.com/users/hubot/repos", + "events_url": "https://api.github.com/users/hubot/events{/privacy}", + "received_events_url": "https://api.github.com/users/hubot/received_events", + "type": "User", + "site_admin": true + } + ], + "requested_reviewers": [{ + "login": "other_user", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/other_user_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/other_user", + "html_url": "https://github.com/other_user", + "followers_url": "https://api.github.com/users/other_user/followers", + "following_url": "https://api.github.com/users/other_user/following{/other_user}", + "gists_url": "https://api.github.com/users/other_user/gists{/gist_id}", + "starred_url": "https://api.github.com/users/other_user/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/other_user/subscriptions", + "organizations_url": "https://api.github.com/users/other_user/orgs", + "repos_url": "https://api.github.com/users/other_user/repos", + "events_url": "https://api.github.com/users/other_user/events{/privacy}", + "received_events_url": "https://api.github.com/users/other_user/received_events", + "type": "User", + "site_admin": false + }], + "requested_teams": [{ + "id": 1, + "node_id": "MDQ6VGVhbTE=", + "url": "https://api.github.com/teams/1", + "name": "Justice League", + "slug": "justice-league", + "description": "A great team.", + "privacy": "closed", + "permission": "admin", + "members_url": "https://api.github.com/teams/1/members{/member}", + "repositories_url": "https://api.github.com/teams/1/repos", + "parent": null + }], + "head": { + "label": "octocat:new-topic", + "ref": "new-topic", + "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "user": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "repo": { + "id": 1296269, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "name": "Hello-World", + "full_name": "octocat/Hello-World", + "owner": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "private": false, + "html_url": "https://github.com/octocat/Hello-World", + "description": "This your first repo!", + "fork": true, + "url": "https://api.github.com/repos/octocat/Hello-World", + "archive_url": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "assignees_url": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "blobs_url": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "branches_url": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "collaborators_url": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "comments_url": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "commits_url": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "compare_url": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "contents_url": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "contributors_url": "http://api.github.com/repos/octocat/Hello-World/contributors", + "deployments_url": "http://api.github.com/repos/octocat/Hello-World/deployments", + "downloads_url": "http://api.github.com/repos/octocat/Hello-World/downloads", + "events_url": "http://api.github.com/repos/octocat/Hello-World/events", + "forks_url": "http://api.github.com/repos/octocat/Hello-World/forks", + "git_commits_url": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "git_refs_url": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "git_tags_url": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "git_url": "git:github.com/octocat/Hello-World.git", + "issue_comment_url": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "issue_events_url": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "issues_url": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "keys_url": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "labels_url": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "languages_url": "http://api.github.com/repos/octocat/Hello-World/languages", + "merges_url": "http://api.github.com/repos/octocat/Hello-World/merges", + "milestones_url": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "notifications_url": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "pulls_url": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "releases_url": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "ssh_url": "git@github.com:octocat/Hello-World.git", + "stargazers_url": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "statuses_url": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "subscribers_url": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "subscription_url": "http://api.github.com/repos/octocat/Hello-World/subscription", + "tags_url": "http://api.github.com/repos/octocat/Hello-World/tags", + "teams_url": "http://api.github.com/repos/octocat/Hello-World/teams", + "trees_url": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "clone_url": "https://github.com/octocat/Hello-World.git", + "mirror_url": "git:git.example.com/octocat/Hello-World", + "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks", + "svn_url": "https://svn.github.com/octocat/Hello-World", + "homepage": "https://github.com", + "language": null, + "forks_count": 9, + "stargazers_count": 80, + "watchers_count": 80, + "size": 108, + "default_branch": "master", + "open_issues_count": 0, + "topics": [ + "octocat", + "atom", + "electron", + "API" + ], + "has_issues": true, + "has_projects": true, + "has_wiki": true, + "has_pages": false, + "has_downloads": true, + "archived": false, + "pushed_at": "2011-01-26T19:06:43Z", + "created_at": "2011-01-26T19:01:12Z", + "updated_at": "2011-01-26T19:14:43Z", + "permissions": { + "admin": false, + "push": false, + "pull": true + }, + "allow_rebase_merge": true, + "allow_squash_merge": true, + "allow_merge_commit": true, + "subscribers_count": 42, + "network_count": 0 + } + }, + "base": { + "label": "octocat:master", + "ref": "master", + "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "user": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "repo": { + "id": 1296269, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "name": "Hello-World", + "full_name": "octocat/Hello-World", + "owner": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "private": false, + "html_url": "https://github.com/octocat/Hello-World", + "description": "This your first repo!", + "fork": true, + "url": "https://api.github.com/repos/octocat/Hello-World", + "archive_url": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "assignees_url": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "blobs_url": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "branches_url": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "collaborators_url": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "comments_url": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "commits_url": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "compare_url": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "contents_url": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "contributors_url": "http://api.github.com/repos/octocat/Hello-World/contributors", + "deployments_url": "http://api.github.com/repos/octocat/Hello-World/deployments", + "downloads_url": "http://api.github.com/repos/octocat/Hello-World/downloads", + "events_url": "http://api.github.com/repos/octocat/Hello-World/events", + "forks_url": "http://api.github.com/repos/octocat/Hello-World/forks", + "git_commits_url": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "git_refs_url": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "git_tags_url": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "git_url": "git:github.com/octocat/Hello-World.git", + "issue_comment_url": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "issue_events_url": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "issues_url": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "keys_url": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "labels_url": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "languages_url": "http://api.github.com/repos/octocat/Hello-World/languages", + "merges_url": "http://api.github.com/repos/octocat/Hello-World/merges", + "milestones_url": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "notifications_url": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "pulls_url": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "releases_url": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "ssh_url": "git@github.com:octocat/Hello-World.git", + "stargazers_url": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "statuses_url": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "subscribers_url": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "subscription_url": "http://api.github.com/repos/octocat/Hello-World/subscription", + "tags_url": "http://api.github.com/repos/octocat/Hello-World/tags", + "teams_url": "http://api.github.com/repos/octocat/Hello-World/teams", + "trees_url": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "clone_url": "https://github.com/octocat/Hello-World.git", + "mirror_url": "git:git.example.com/octocat/Hello-World", + "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks", + "svn_url": "https://svn.github.com/octocat/Hello-World", + "homepage": "https://github.com", + "language": null, + "forks_count": 9, + "stargazers_count": 80, + "watchers_count": 80, + "size": 108, + "default_branch": "master", + "open_issues_count": 0, + "topics": [ + "octocat", + "atom", + "electron", + "API" + ], + "has_issues": true, + "has_projects": true, + "has_wiki": true, + "has_pages": false, + "has_downloads": true, + "archived": false, + "pushed_at": "2011-01-26T19:06:43Z", + "created_at": "2011-01-26T19:01:12Z", + "updated_at": "2011-01-26T19:14:43Z", + "permissions": { + "admin": false, + "push": false, + "pull": true + }, + "allow_rebase_merge": true, + "allow_squash_merge": true, + "allow_merge_commit": true, + "subscribers_count": 42, + "network_count": 0 + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347" + }, + "html": { + "href": "https://github.com/octocat/Hello-World/pull/1347" + }, + "issue": { + "href": "https://api.github.com/repos/octocat/Hello-World/issues/1347" + }, + "comments": { + "href": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e" + } + }, + "author_association": "OWNER", + "draft": false, + "merged": false, + "mergeable": true, + "rebaseable": true, + "mergeable_state": "clean", + "merged_by": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "comments": 10, + "review_comments": 0, + "maintainer_can_modify": true, + "commits": 3, + "additions": 100, + "deletions": 3, + "changed_files": 5 } } diff --git a/src/api/models/json/gitlab.json b/src/api/models/json/gitlab.json new file mode 100644 index 0000000..c53ee7d --- /dev/null +++ b/src/api/models/json/gitlab.json @@ -0,0 +1,9 @@ +{ + "pipeline": { + "id": 47, + "status": "pending", + "ref": "new-pipeline", + "sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a", + "web_url": "https://example.com/foo/bar/pipelines/47" + } +} diff --git a/src/api/models/mod.rs b/src/api/models/mod.rs index 72246d3..58c7437 100644 --- a/src/api/models/mod.rs +++ b/src/api/models/mod.rs @@ -1 +1,2 @@ pub mod github; +pub mod gitlab; diff --git a/src/commands.rs b/src/commands.rs new file mode 100644 index 0000000..41b41ac --- /dev/null +++ b/src/commands.rs @@ -0,0 +1,146 @@ +use regex::Regex; +use std::convert::TryFrom; + +fn tokenize_comment(body: &str) -> Vec<&str> { + body.split_whitespace().collect() +} +#[derive(Debug, PartialEq, Deserialize)] +#[serde(rename_all = "camelCase")] +pub enum CommandAction { + Retry, +} + +#[derive(Debug)] +pub struct Command { + pub username: String, + pub command: CommandAction, + pub args: Vec, +} + +#[derive(Debug, PartialEq)] +pub enum CommandError { + BadUsername, + UnknownCommand, + InvalidLength, + InvalidFormat, +} + +impl Command { + fn is_valid(&self, username: &str) -> Result<(), CommandError> { + if self.username == username { + Ok(()) + } else { + Err(CommandError::BadUsername) + } + } +} + +pub fn parse_body(body: &str, for_username: &str) -> Result { + let command = Command::try_from(body)?; + command.is_valid(for_username)?; + Ok(command) +} + +impl TryFrom<&str> for CommandAction { + type Error = CommandError; + fn try_from(body: &str) -> Result { + match body.to_lowercase().as_ref() { + "retry" => Ok(CommandAction::Retry), + _ => Err(CommandError::UnknownCommand), + } + } +} + +impl TryFrom<&str> for Command { + type Error = CommandError; + + fn try_from(body: &str) -> Result { + let tokens = tokenize_comment(body); + if tokens.len() < 2 { + return Err(CommandError::InvalidLength); + } + lazy_static! { + static ref RE: Regex = Regex::new("^@(.*)$").unwrap(); + } + Ok(Command { + username: match RE.captures(tokens[0]) { + Some(cap) => cap[1].to_string(), + _ => return Err(CommandError::InvalidFormat), + }, + command: CommandAction::try_from(tokens[1])?, + args: tokens + .iter() + .skip(2) + .map(std::string::ToString::to_string) + .collect(), + }) + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::testing::run_test; + + #[test] + fn test_tokenize_comment() { + run_test(|| { + assert_eq!(tokenize_comment("hello fren"), vec!["hello", "fren"]); + assert_eq!(tokenize_comment(" hello fren"), vec!["hello", "fren"]); + assert_eq!(tokenize_comment("hello fren "), vec!["hello", "fren"]); + assert_eq!( + tokenize_comment(" hello fren "), + vec!["hello", "fren"] + ); + }); + } + + #[test] + fn test_from_string() { + run_test(|| { + assert_eq!( + Command::try_from("lol").unwrap_err(), + CommandError::InvalidLength + ); + assert_eq!( + Command::try_from("herp derp nerp").unwrap_err(), + CommandError::InvalidFormat + ); + assert_eq!( + Command::try_from("@bot derp nerp").unwrap_err(), + CommandError::UnknownCommand + ); + assert_eq!( + Command::try_from("@bot retry nerp").unwrap().command, + CommandAction::Retry + ); + assert_eq!( + Command::try_from("@bot retry nerp").unwrap().args, + vec!["nerp"] + ); + }); + } + + #[test] + fn test_is_valid() { + run_test(|| { + let command = Command::try_from("@bot retry nerp").unwrap(); + assert_eq!(command.is_valid("bot").is_ok(), true); + assert_eq!(command.is_valid("not").is_err(), true); + }); + } + + #[test] + fn test_parse_body() { + run_test(|| { + assert_eq!( + parse_body("@bot retry nerp", "bot").unwrap().command, + CommandAction::Retry + ); + assert_eq!( + parse_body("@not retry nerp", "bot").unwrap_err(), + CommandError::BadUsername + ); + }); + } +} diff --git a/src/config.rs b/src/config.rs index be8beec..9de80b7 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,4 +1,5 @@ -// Global configuration values, loaded from the environment +use crate::commands; + use log::info; use std::collections::HashMap; use std::env; @@ -8,12 +9,33 @@ use std::sync::Mutex; use toml; use yansi::Paint; +#[derive(Debug, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] +pub enum Feature { + ExternalPr, + Commands, +} + #[derive(Debug, Deserialize)] pub struct Config { pub github: Site, pub gitlab: Site, pub mappings: Vec, - pub features: Vec, + pub features: Vec, + pub commands: Commands, +} + +pub fn feature_enabled(feature: &Feature) -> bool { + CONFIG.features.contains(&feature) +} + +pub fn command_enabled(command: &commands::CommandAction) -> bool { + feature_enabled(&Feature::Commands) && CONFIG.commands.enabled_commands.contains(&command) +} + +#[derive(Debug, Deserialize)] +pub struct Commands { + pub enabled_commands: Vec, } #[derive(Debug, Deserialize)] @@ -21,6 +43,8 @@ pub struct Site { pub webhook_secret: String, pub username: String, pub ssh_key: String, + pub api_token: String, + pub hostname: Option, } #[derive(Debug, Deserialize)] diff --git a/src/errors.rs b/src/errors.rs index 18dae9f..4f6d8fd 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -1,4 +1,5 @@ use crate::api::github_signature; +use crate::commands; use rocket::request::Request; use rocket::response::content; @@ -93,6 +94,30 @@ impl From for GitError { } } +impl From for GitError { + fn from(error: serde_json::error::Error) -> Self { + GitError { + message: format!("Github serde error: {:?}", error), + } + } +} + +impl From for GitError { + fn from(error: reqwest::Error) -> Self { + GitError { + message: format!("Git request error: {:?}", error), + } + } +} + +impl From for GitError { + fn from(error: commands::CommandError) -> Self { + GitError { + message: format!("Git command error: {:?}", error), + } + } +} + #[catch(404)] pub fn not_found(req: &Request) -> content::Json { content::Json( diff --git a/src/github.rs b/src/github.rs index aa86f61..290a8b3 100644 --- a/src/github.rs +++ b/src/github.rs @@ -1,10 +1,12 @@ use crate::api::models::github; +use crate::api::{github_client, gitlab_client}; +use crate::commands; use crate::config; use crate::errors::{GitError, RequestErrorResult}; use git2::build::RepoBuilder; use git2::{FetchOptions, PushOptions, RemoteCallbacks, Repository}; -use log::{debug, error, info}; +use log::{debug, error, info, warn}; use std::collections::HashMap; use std::path::Path; use std::sync::Mutex; @@ -262,6 +264,7 @@ fn clone_repo(url: &str) -> Result { } } } + fn handle_pr_closed_with_repo( repo: &mut RepositoryExt, pr: &github::PullRequest, @@ -319,16 +322,21 @@ fn handle_pr_updated_with_repo( Ok(String::from(":)")) } +impl github::PullRequest { + fn is_fork(&self) -> Result { + Ok(self + .pull_request + .as_ref()? + .head + .as_ref()? + .repo + .as_ref()? + .fork?) + } +} + fn handle_pr(pr: github::PullRequest) -> Result<(), RequestErrorResult> { - if pr - .pull_request - .as_ref()? - .head - .as_ref()? - .repo - .as_ref()? - .fork? - { + if pr.is_fork()? { info!("PR is a fork"); let result = match pr.action.as_ref()?.as_ref() { "closed" => handle_pr_closed(&pr), @@ -344,6 +352,157 @@ fn handle_pr(pr: github::PullRequest) -> Result<(), RequestErrorResult> { Ok(()) } +fn write_issue_comment( + client: &reqwest::Client, + ic: &github::IssueComment, + body: &str, +) -> Result<(), GitError> { + let repo_full_name = ic.repository.as_ref()?.full_name.as_ref()?; + let repo_full_name_parts: Vec = repo_full_name + .split('/') + .map(std::string::ToString::to_string) + .collect(); + if repo_full_name_parts.len() != 2 { + return Err(GitError { + message: format!("Invalid repo name {}", repo_full_name), + }); + } + github_client::create_issue_comment( + client, + &repo_full_name_parts[0], + &repo_full_name_parts[1], + ic.issue.as_ref()?.number?, + body, + ) +} + +fn get_sha(client: &reqwest::Client, ic: &github::IssueComment) -> Result { + let repo_full_name = ic.repository.as_ref()?.full_name.as_ref()?; + let repo_full_name_parts: Vec = repo_full_name + .split('/') + .map(std::string::ToString::to_string) + .collect(); + if repo_full_name_parts.len() != 2 { + return Err(GitError { + message: format!("Invalid repo name {}", repo_full_name), + }); + } + let pr = github_client::get_pull( + client, + &repo_full_name_parts[0], + &repo_full_name_parts[1], + ic.issue.as_ref()?.number?, + )?; + Ok(pr.head.as_ref()?.sha.as_ref()?.clone()) +} + +impl github::IssueComment { + fn is_from_pr(&self) -> Result { + Ok(self.issue.as_ref()?.pull_request.is_some()) + } +} + +fn find_pipeline_id(client: &reqwest::Client, project: &str, sha: &str) -> Result { + let mut result_len = 100; + let mut page = 1; + while result_len == 100 { + let pipelines = gitlab_client::get_pipelines(client, project, page, 100)?; + let pipeline = pipelines + .iter() + .filter(|p| p.sha.is_some() && p.id.is_some()) + .find(|p| p.sha.as_ref().unwrap() == sha); + if pipeline.is_some() { + return Ok(pipeline.unwrap().id.unwrap()); + } + result_len = pipelines.len(); + page += 1; + } + Err(GitError { + message: format!( + "Unable to find pipeline for project={} sha={}", + project, sha + ), + }) +} + +fn handle_retry_command( + client: &reqwest::Client, + ic: &github::IssueComment, +) -> Result<(), GitError> { + let repo_full_name = ic.repository.as_ref()?.full_name.as_ref()?; + let sha = get_sha(&client, ic)?; + let project = get_gitlab_repo_name(&repo_full_name); + info!("Got retry command for project={} sha={}", project, sha); + let pipeline_id = find_pipeline_id(&client, &get_gitlab_repo_name(&project), &sha)?; + gitlab_client::retry_pipeline(&client, &project, pipeline_id)?; + + let comment_body = format!( + "Sent **retry** command for pipeline [**{}**]({}/pipelines/{}) on [**GitLab**]({}) + +Have a great day! πŸ˜„", + pipeline_id, + gitlab_client::make_ext_url(&project), + pipeline_id, + gitlab_client::make_ext_url(&project), + ); + + write_issue_comment(&client, ic, &comment_body) +} + +fn handle_pr_ic(ic: github::IssueComment) -> Result<(), GitError> { + let client = reqwest::Client::new(); + info!( + "Issue comment received for issue number={} action={}", + ic.issue.as_ref()?.number?, + ic.action.as_ref()?, + ); + + if ic.sender.as_ref()?.login.as_ref()? == &config::CONFIG.github.username { + info!("Hey this is my comment :D Skipping"); + return Ok(()); + } + + let command_res = commands::parse_body( + ic.comment.as_ref()?.body.as_ref()?, + &*config::CONFIG.github.username, + ); + + if command_res.is_err() { + // Provide feedback on PR if necessary + let err = command_res.unwrap_err(); + if err == commands::CommandError::UnknownCommand { + // Write a comment on the PR + let comment_body = "Sorry, but I don't know what that command means. + +Thanks for asking πŸ₯°" + .to_string(); + + write_issue_comment(&client, &ic, &comment_body)?; + } + return Ok(()); + } + + let command = command_res.unwrap(); + + if !config::command_enabled(&command.command) { + warn!("Command {:#?} is not enabled.", command.command); + return Ok(()); + } + + match command.command { + commands::CommandAction::Retry => handle_retry_command(&client, &ic), + } +} + +fn handle_ic(ic: github::IssueComment) { + if ic.is_from_pr().unwrap() { + match handle_pr_ic(ic) { + Ok(()) => info!("Finished handling issue comment"), + Err(_err) => info!("Ignoring issue comment because it's invalid"), + } + } +} + pub fn handle_event_body(event_type: &str, body: &str) -> Result { match event_type { "push" => { @@ -352,11 +511,29 @@ pub fn handle_event_body(event_type: &str, body: &str) -> Result { - let pr: github::PullRequest = serde_json::from_str(body)?; - info!("PullRequest action={}", pr.action.as_ref()?); - thread::spawn(move || handle_pr(pr)); + if config::feature_enabled(&config::Feature::ExternalPr) { + let pr: github::PullRequest = serde_json::from_str(body)?; + info!("PullRequest action={}", pr.action.as_ref()?); + thread::spawn(move || handle_pr(pr)); + } else { + info!("ExternalPr feature not enabled. Skipping event."); + } Ok(String::from("Thanks buddy bro 😍")) } + "issue_comment" => { + if config::feature_enabled(&config::Feature::Commands) { + let ic: github::IssueComment = serde_json::from_str(body)?; + info!( + "Issue comment action={} user={}", + ic.action.as_ref()?, + ic.issue.as_ref()?.user.as_ref()?.login.as_ref()? + ); + thread::spawn(move || handle_ic(ic)); + } else { + info!("Commands feature not enabled. Skipping event."); + } + Ok(String::from("Issue comment received πŸ₯³")) + } _ => Ok(format!( "Unhandled event_type={}, doing nothing πŸ˜€", event_type, @@ -376,6 +553,7 @@ mod test { let pr: github::PullRequest = serde_json::from_str(&read_testdata_to_string("github_open_pull_request.json")) .unwrap(); + assert_eq!(pr.is_fork().unwrap(), false); let _pr_handle = PrHandle::new(&pr).unwrap(); }); } @@ -387,6 +565,7 @@ mod test { let pr: github::PullRequest = serde_json::from_str(&read_testdata_to_string("github_reopen_pull_request.json")) .unwrap(); + assert_eq!(pr.is_fork().unwrap(), false); let _pr_handle = PrHandle::new(&pr).unwrap(); }); } @@ -398,6 +577,7 @@ mod test { let pr: github::PullRequest = serde_json::from_str(&read_testdata_to_string("github_open_pr_forked.json")) .unwrap(); + assert_eq!(pr.is_fork().unwrap(), true); let _pr_handle = PrHandle::new(&pr).unwrap(); }); } @@ -412,4 +592,24 @@ mod test { let _pr_handle = PrHandle::new(&pr).unwrap(); }); } + + #[test] + fn get_pr() { + run_test(|| { + info!("get_pr test"); + let _pr: github::RepoPr = + serde_json::from_str(&read_testdata_to_string("github_get_pr.json")).unwrap(); + }); + } + + #[test] + fn created_issue_comment() { + run_test(|| { + info!("created_issue_comment test"); + let _ic: github::IssueComment = serde_json::from_str(&read_testdata_to_string( + "github_created_issue_comment.json", + )) + .unwrap(); + }); + } } diff --git a/src/main.rs b/src/main.rs index 7484f67..3838e88 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,13 +9,18 @@ extern crate serde_derive; #[macro_use] extern crate lazy_static; extern crate futures; +extern crate regex; +extern crate reqwest; extern crate toml; +extern crate url; mod api; +mod commands; mod config; mod errors; -pub mod github; +mod github; mod service; + #[cfg(test)] mod testing; diff --git a/src/service.rs b/src/service.rs index 37a90bb..0d26355 100644 --- a/src/service.rs +++ b/src/service.rs @@ -3,7 +3,7 @@ use crate::config; use crate::errors; use crate::github; -use log::info; +use log::{debug, info}; use rocket::data::Data; use rocket::response::content; use rocket_contrib::json::Json; @@ -38,6 +38,8 @@ pub fn github_event( &body, )?; + debug!("body={}", body); + // Handle the event Ok(content::Json(github::handle_event_body( &event_type.0.as_ref(), diff --git a/src/testdata/github_created_issue_comment.json b/src/testdata/github_created_issue_comment.json new file mode 100644 index 0000000..1f6dc67 --- /dev/null +++ b/src/testdata/github_created_issue_comment.json @@ -0,0 +1,207 @@ +{ + "action": "created", + "issue": { + "url": "https://api.github.com/repos/brndnmtthws/labhub/issues/8", + "repository_url": "https://api.github.com/repos/brndnmtthws/labhub", + "labels_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/8/labels{/name}", + "comments_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/8/comments", + "events_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/8/events", + "html_url": "https://github.com/brndnmtthws/labhub/pull/8", + "id": 418492922, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjU5MjU0MzIz", + "number": 8, + "title": "Update .gitlab-ci.yml", + "user": { + "login": "brndnmtthws", + "id": 3129093, + "node_id": "MDQ6VXNlcjMxMjkwOTM=", + "avatar_url": "https://avatars1.githubusercontent.com/u/3129093?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/brndnmtthws", + "html_url": "https://github.com/brndnmtthws", + "followers_url": "https://api.github.com/users/brndnmtthws/followers", + "following_url": "https://api.github.com/users/brndnmtthws/following{/other_user}", + "gists_url": "https://api.github.com/users/brndnmtthws/gists{/gist_id}", + "starred_url": "https://api.github.com/users/brndnmtthws/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/brndnmtthws/subscriptions", + "organizations_url": "https://api.github.com/users/brndnmtthws/orgs", + "repos_url": "https://api.github.com/users/brndnmtthws/repos", + "events_url": "https://api.github.com/users/brndnmtthws/events{/privacy}", + "received_events_url": "https://api.github.com/users/brndnmtthws/received_events", + "type": "User", + "site_admin": false + }, + "labels": [ + + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [ + + ], + "milestone": null, + "comments": 0, + "created_at": "2019-03-07T20:13:37Z", + "updated_at": "2019-03-07T20:15:14Z", + "closed_at": null, + "author_association": "OWNER", + "pull_request": { + "url": "https://api.github.com/repos/brndnmtthws/labhub/pulls/8", + "html_url": "https://github.com/brndnmtthws/labhub/pull/8", + "diff_url": "https://github.com/brndnmtthws/labhub/pull/8.diff", + "patch_url": "https://github.com/brndnmtthws/labhub/pull/8.patch" + }, + "body": "" + }, + "comment": { + "url": "https://api.github.com/repos/brndnmtthws/labhub/issues/comments/470677118", + "html_url": "https://github.com/brndnmtthws/labhub/pull/8#issuecomment-470677118", + "issue_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/8", + "id": 470677118, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3MDY3NzExOA==", + "user": { + "login": "brndnmtthws", + "id": 3129093, + "node_id": "MDQ6VXNlcjMxMjkwOTM=", + "avatar_url": "https://avatars1.githubusercontent.com/u/3129093?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/brndnmtthws", + "html_url": "https://github.com/brndnmtthws", + "followers_url": "https://api.github.com/users/brndnmtthws/followers", + "following_url": "https://api.github.com/users/brndnmtthws/following{/other_user}", + "gists_url": "https://api.github.com/users/brndnmtthws/gists{/gist_id}", + "starred_url": "https://api.github.com/users/brndnmtthws/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/brndnmtthws/subscriptions", + "organizations_url": "https://api.github.com/users/brndnmtthws/orgs", + "repos_url": "https://api.github.com/users/brndnmtthws/repos", + "events_url": "https://api.github.com/users/brndnmtthws/events{/privacy}", + "received_events_url": "https://api.github.com/users/brndnmtthws/received_events", + "type": "User", + "site_admin": false + }, + "created_at": "2019-03-07T20:15:14Z", + "updated_at": "2019-03-07T20:15:14Z", + "author_association": "OWNER", + "body": "hello test" + }, + "repository": { + "id": 172714879, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzI3MTQ4Nzk=", + "name": "labhub", + "full_name": "brndnmtthws/labhub", + "private": false, + "owner": { + "login": "brndnmtthws", + "id": 3129093, + "node_id": "MDQ6VXNlcjMxMjkwOTM=", + "avatar_url": "https://avatars1.githubusercontent.com/u/3129093?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/brndnmtthws", + "html_url": "https://github.com/brndnmtthws", + "followers_url": "https://api.github.com/users/brndnmtthws/followers", + "following_url": "https://api.github.com/users/brndnmtthws/following{/other_user}", + "gists_url": "https://api.github.com/users/brndnmtthws/gists{/gist_id}", + "starred_url": "https://api.github.com/users/brndnmtthws/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/brndnmtthws/subscriptions", + "organizations_url": "https://api.github.com/users/brndnmtthws/orgs", + "repos_url": "https://api.github.com/users/brndnmtthws/repos", + "events_url": "https://api.github.com/users/brndnmtthws/events{/privacy}", + "received_events_url": "https://api.github.com/users/brndnmtthws/received_events", + "type": "User", + "site_admin": false + }, + "html_url": "https://github.com/brndnmtthws/labhub", + "description": "GitHub bot for using GitLab CI in OSS projects", + "fork": false, + "url": "https://api.github.com/repos/brndnmtthws/labhub", + "forks_url": "https://api.github.com/repos/brndnmtthws/labhub/forks", + "keys_url": "https://api.github.com/repos/brndnmtthws/labhub/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/brndnmtthws/labhub/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/brndnmtthws/labhub/teams", + "hooks_url": "https://api.github.com/repos/brndnmtthws/labhub/hooks", + "issue_events_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/events{/number}", + "events_url": "https://api.github.com/repos/brndnmtthws/labhub/events", + "assignees_url": "https://api.github.com/repos/brndnmtthws/labhub/assignees{/user}", + "branches_url": "https://api.github.com/repos/brndnmtthws/labhub/branches{/branch}", + "tags_url": "https://api.github.com/repos/brndnmtthws/labhub/tags", + "blobs_url": "https://api.github.com/repos/brndnmtthws/labhub/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/brndnmtthws/labhub/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/brndnmtthws/labhub/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/brndnmtthws/labhub/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/brndnmtthws/labhub/statuses/{sha}", + "languages_url": "https://api.github.com/repos/brndnmtthws/labhub/languages", + "stargazers_url": "https://api.github.com/repos/brndnmtthws/labhub/stargazers", + "contributors_url": "https://api.github.com/repos/brndnmtthws/labhub/contributors", + "subscribers_url": "https://api.github.com/repos/brndnmtthws/labhub/subscribers", + "subscription_url": "https://api.github.com/repos/brndnmtthws/labhub/subscription", + "commits_url": "https://api.github.com/repos/brndnmtthws/labhub/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/brndnmtthws/labhub/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/brndnmtthws/labhub/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/brndnmtthws/labhub/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/brndnmtthws/labhub/contents/{+path}", + "compare_url": "https://api.github.com/repos/brndnmtthws/labhub/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/brndnmtthws/labhub/merges", + "archive_url": "https://api.github.com/repos/brndnmtthws/labhub/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/brndnmtthws/labhub/downloads", + "issues_url": "https://api.github.com/repos/brndnmtthws/labhub/issues{/number}", + "pulls_url": "https://api.github.com/repos/brndnmtthws/labhub/pulls{/number}", + "milestones_url": "https://api.github.com/repos/brndnmtthws/labhub/milestones{/number}", + "notifications_url": "https://api.github.com/repos/brndnmtthws/labhub/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/brndnmtthws/labhub/labels{/name}", + "releases_url": "https://api.github.com/repos/brndnmtthws/labhub/releases{/id}", + "deployments_url": "https://api.github.com/repos/brndnmtthws/labhub/deployments", + "created_at": "2019-02-26T13:16:44Z", + "updated_at": "2019-03-07T13:08:58Z", + "pushed_at": "2019-03-07T20:13:38Z", + "git_url": "git://github.com/brndnmtthws/labhub.git", + "ssh_url": "git@github.com:brndnmtthws/labhub.git", + "clone_url": "https://github.com/brndnmtthws/labhub.git", + "svn_url": "https://github.com/brndnmtthws/labhub", + "homepage": "", + "size": 464, + "stargazers_count": 1, + "watchers_count": 1, + "language": "Rust", + "has_issues": true, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "open_issues_count": 1, + "license": { + "key": "unlicense", + "name": "The Unlicense", + "spdx_id": "Unlicense", + "url": "https://api.github.com/licenses/unlicense", + "node_id": "MDc6TGljZW5zZTE1" + }, + "forks": 0, + "open_issues": 1, + "watchers": 1, + "default_branch": "master" + }, + "sender": { + "login": "brndnmtthws", + "id": 3129093, + "node_id": "MDQ6VXNlcjMxMjkwOTM=", + "avatar_url": "https://avatars1.githubusercontent.com/u/3129093?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/brndnmtthws", + "html_url": "https://github.com/brndnmtthws", + "followers_url": "https://api.github.com/users/brndnmtthws/followers", + "following_url": "https://api.github.com/users/brndnmtthws/following{/other_user}", + "gists_url": "https://api.github.com/users/brndnmtthws/gists{/gist_id}", + "starred_url": "https://api.github.com/users/brndnmtthws/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/brndnmtthws/subscriptions", + "organizations_url": "https://api.github.com/users/brndnmtthws/orgs", + "repos_url": "https://api.github.com/users/brndnmtthws/repos", + "events_url": "https://api.github.com/users/brndnmtthws/events{/privacy}", + "received_events_url": "https://api.github.com/users/brndnmtthws/received_events", + "type": "User", + "site_admin": false + } +} diff --git a/src/testdata/github_get_pr.json b/src/testdata/github_get_pr.json new file mode 100644 index 0000000..133ad87 --- /dev/null +++ b/src/testdata/github_get_pr.json @@ -0,0 +1,511 @@ +{ + "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347", + "id": 1, + "node_id": "MDExOlB1bGxSZXF1ZXN0MQ==", + "html_url": "https://github.com/octocat/Hello-World/pull/1347", + "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", + "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch", + "issue_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347", + "commits_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits", + "review_comments_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments", + "review_comment_url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments", + "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "number": 1347, + "state": "open", + "locked": true, + "title": "new-feature", + "user": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "body": "Please pull these awesome changes", + "labels": [ + { + "id": 208045946, + "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", + "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug", + "name": "bug", + "description": "Something isn't working", + "color": "f29513", + "default": true + } + ], + "milestone": { + "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", + "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", + "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", + "id": 1002604, + "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", + "number": 1, + "state": "open", + "title": "v1.0", + "description": "Tracking milestone for version 1.0", + "creator": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "open_issues": 4, + "closed_issues": 8, + "created_at": "2011-04-10T20:09:31Z", + "updated_at": "2014-03-03T18:58:10Z", + "closed_at": "2013-02-12T13:22:01Z", + "due_on": "2012-10-09T23:39:01Z" + }, + "active_lock_reason": "too heated", + "created_at": "2011-01-26T19:01:12Z", + "updated_at": "2011-01-26T19:01:12Z", + "closed_at": "2011-01-26T19:01:12Z", + "merged_at": "2011-01-26T19:01:12Z", + "merge_commit_sha": "e5bd3914e2e596debea16f433f57875b5b90bcd6", + "assignee": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "assignees": [ + { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + { + "login": "hubot", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/hubot_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/hubot", + "html_url": "https://github.com/hubot", + "followers_url": "https://api.github.com/users/hubot/followers", + "following_url": "https://api.github.com/users/hubot/following{/other_user}", + "gists_url": "https://api.github.com/users/hubot/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hubot/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hubot/subscriptions", + "organizations_url": "https://api.github.com/users/hubot/orgs", + "repos_url": "https://api.github.com/users/hubot/repos", + "events_url": "https://api.github.com/users/hubot/events{/privacy}", + "received_events_url": "https://api.github.com/users/hubot/received_events", + "type": "User", + "site_admin": true + } + ], + "requested_reviewers": [ + { + "login": "other_user", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/other_user_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/other_user", + "html_url": "https://github.com/other_user", + "followers_url": "https://api.github.com/users/other_user/followers", + "following_url": "https://api.github.com/users/other_user/following{/other_user}", + "gists_url": "https://api.github.com/users/other_user/gists{/gist_id}", + "starred_url": "https://api.github.com/users/other_user/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/other_user/subscriptions", + "organizations_url": "https://api.github.com/users/other_user/orgs", + "repos_url": "https://api.github.com/users/other_user/repos", + "events_url": "https://api.github.com/users/other_user/events{/privacy}", + "received_events_url": "https://api.github.com/users/other_user/received_events", + "type": "User", + "site_admin": false + } + ], + "requested_teams": [ + { + "id": 1, + "node_id": "MDQ6VGVhbTE=", + "url": "https://api.github.com/teams/1", + "name": "Justice League", + "slug": "justice-league", + "description": "A great team.", + "privacy": "closed", + "permission": "admin", + "members_url": "https://api.github.com/teams/1/members{/member}", + "repositories_url": "https://api.github.com/teams/1/repos", + "parent": null + } + ], + "head": { + "label": "octocat:new-topic", + "ref": "new-topic", + "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "user": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "repo": { + "id": 1296269, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "name": "Hello-World", + "full_name": "octocat/Hello-World", + "owner": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "private": false, + "html_url": "https://github.com/octocat/Hello-World", + "description": "This your first repo!", + "fork": true, + "url": "https://api.github.com/repos/octocat/Hello-World", + "archive_url": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "assignees_url": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "blobs_url": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "branches_url": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "collaborators_url": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "comments_url": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "commits_url": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "compare_url": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "contents_url": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "contributors_url": "http://api.github.com/repos/octocat/Hello-World/contributors", + "deployments_url": "http://api.github.com/repos/octocat/Hello-World/deployments", + "downloads_url": "http://api.github.com/repos/octocat/Hello-World/downloads", + "events_url": "http://api.github.com/repos/octocat/Hello-World/events", + "forks_url": "http://api.github.com/repos/octocat/Hello-World/forks", + "git_commits_url": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "git_refs_url": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "git_tags_url": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "git_url": "git:github.com/octocat/Hello-World.git", + "issue_comment_url": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "issue_events_url": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "issues_url": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "keys_url": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "labels_url": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "languages_url": "http://api.github.com/repos/octocat/Hello-World/languages", + "merges_url": "http://api.github.com/repos/octocat/Hello-World/merges", + "milestones_url": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "notifications_url": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "pulls_url": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "releases_url": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "ssh_url": "git@github.com:octocat/Hello-World.git", + "stargazers_url": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "statuses_url": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "subscribers_url": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "subscription_url": "http://api.github.com/repos/octocat/Hello-World/subscription", + "tags_url": "http://api.github.com/repos/octocat/Hello-World/tags", + "teams_url": "http://api.github.com/repos/octocat/Hello-World/teams", + "trees_url": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "clone_url": "https://github.com/octocat/Hello-World.git", + "mirror_url": "git:git.example.com/octocat/Hello-World", + "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks", + "svn_url": "https://svn.github.com/octocat/Hello-World", + "homepage": "https://github.com", + "language": null, + "forks_count": 9, + "stargazers_count": 80, + "watchers_count": 80, + "size": 108, + "default_branch": "master", + "open_issues_count": 0, + "topics": [ + "octocat", + "atom", + "electron", + "API" + ], + "has_issues": true, + "has_projects": true, + "has_wiki": true, + "has_pages": false, + "has_downloads": true, + "archived": false, + "pushed_at": "2011-01-26T19:06:43Z", + "created_at": "2011-01-26T19:01:12Z", + "updated_at": "2011-01-26T19:14:43Z", + "permissions": { + "admin": false, + "push": false, + "pull": true + }, + "allow_rebase_merge": true, + "allow_squash_merge": true, + "allow_merge_commit": true, + "subscribers_count": 42, + "network_count": 0 + } + }, + "base": { + "label": "octocat:master", + "ref": "master", + "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "user": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "repo": { + "id": 1296269, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "name": "Hello-World", + "full_name": "octocat/Hello-World", + "owner": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "private": false, + "html_url": "https://github.com/octocat/Hello-World", + "description": "This your first repo!", + "fork": true, + "url": "https://api.github.com/repos/octocat/Hello-World", + "archive_url": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", + "assignees_url": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}", + "blobs_url": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", + "branches_url": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}", + "collaborators_url": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", + "comments_url": "http://api.github.com/repos/octocat/Hello-World/comments{/number}", + "commits_url": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}", + "compare_url": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", + "contents_url": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}", + "contributors_url": "http://api.github.com/repos/octocat/Hello-World/contributors", + "deployments_url": "http://api.github.com/repos/octocat/Hello-World/deployments", + "downloads_url": "http://api.github.com/repos/octocat/Hello-World/downloads", + "events_url": "http://api.github.com/repos/octocat/Hello-World/events", + "forks_url": "http://api.github.com/repos/octocat/Hello-World/forks", + "git_commits_url": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", + "git_refs_url": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", + "git_tags_url": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", + "git_url": "git:github.com/octocat/Hello-World.git", + "issue_comment_url": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", + "issue_events_url": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}", + "issues_url": "http://api.github.com/repos/octocat/Hello-World/issues{/number}", + "keys_url": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}", + "labels_url": "http://api.github.com/repos/octocat/Hello-World/labels{/name}", + "languages_url": "http://api.github.com/repos/octocat/Hello-World/languages", + "merges_url": "http://api.github.com/repos/octocat/Hello-World/merges", + "milestones_url": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}", + "notifications_url": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", + "pulls_url": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}", + "releases_url": "http://api.github.com/repos/octocat/Hello-World/releases{/id}", + "ssh_url": "git@github.com:octocat/Hello-World.git", + "stargazers_url": "http://api.github.com/repos/octocat/Hello-World/stargazers", + "statuses_url": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}", + "subscribers_url": "http://api.github.com/repos/octocat/Hello-World/subscribers", + "subscription_url": "http://api.github.com/repos/octocat/Hello-World/subscription", + "tags_url": "http://api.github.com/repos/octocat/Hello-World/tags", + "teams_url": "http://api.github.com/repos/octocat/Hello-World/teams", + "trees_url": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", + "clone_url": "https://github.com/octocat/Hello-World.git", + "mirror_url": "git:git.example.com/octocat/Hello-World", + "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks", + "svn_url": "https://svn.github.com/octocat/Hello-World", + "homepage": "https://github.com", + "language": null, + "forks_count": 9, + "stargazers_count": 80, + "watchers_count": 80, + "size": 108, + "default_branch": "master", + "open_issues_count": 0, + "topics": [ + "octocat", + "atom", + "electron", + "API" + ], + "has_issues": true, + "has_projects": true, + "has_wiki": true, + "has_pages": false, + "has_downloads": true, + "archived": false, + "pushed_at": "2011-01-26T19:06:43Z", + "created_at": "2011-01-26T19:01:12Z", + "updated_at": "2011-01-26T19:14:43Z", + "permissions": { + "admin": false, + "push": false, + "pull": true + }, + "allow_rebase_merge": true, + "allow_squash_merge": true, + "allow_merge_commit": true, + "subscribers_count": 42, + "network_count": 0 + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347" + }, + "html": { + "href": "https://github.com/octocat/Hello-World/pull/1347" + }, + "issue": { + "href": "https://api.github.com/repos/octocat/Hello-World/issues/1347" + }, + "comments": { + "href": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e" + } + }, + "author_association": "OWNER", + "draft": false, + "merged": false, + "mergeable": true, + "rebaseable": true, + "mergeable_state": "clean", + "merged_by": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "comments": 10, + "review_comments": 0, + "maintainer_can_modify": true, + "commits": 3, + "additions": 100, + "deletions": 3, + "changed_files": 5 +}