From 6dd49e390ba2a0c990561c67e2604a49c8acaa1c Mon Sep 17 00:00:00 2001 From: Serhii Khalymon Date: Sat, 20 Jul 2024 18:06:24 +0200 Subject: [PATCH] feat: show error description from gstd close #2 --- .gitignore | 2 +- Cargo.lock | 1147 ------------------------------------- Cargo.toml | 2 +- Makefile | 14 +- src/client.rs | 40 +- src/error.rs | 18 +- src/gstd_types.rs | 43 +- src/lib.rs | 2 +- src/resources/bus.rs | 12 +- src/resources/debug.rs | 24 +- src/resources/element.rs | 23 +- src/resources/pipeline.rs | 52 +- 12 files changed, 137 insertions(+), 1242 deletions(-) delete mode 100644 Cargo.lock diff --git a/.gitignore b/.gitignore index ed5669f..a3d6f9b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ .DS_Store /target/ - +Cargo.lock diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index 46013c6..0000000 --- a/Cargo.lock +++ /dev/null @@ -1,1147 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "autocfg" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[package]] -name = "backtrace" -version = "0.3.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "bytes" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" - -[[package]] -name = "cc" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" - -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "encoding_rs" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "fastrand" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-channel" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" - -[[package]] -name = "futures-sink" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" - -[[package]] -name = "futures-task" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" - -[[package]] -name = "futures-util" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" -dependencies = [ - "futures-core", - "futures-task", - "pin-project-lite", - "pin-utils", -] - -[[package]] -name = "gimli" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" - -[[package]] -name = "gst-client" -version = "0.1.2" -dependencies = [ - "derive_more", - "mime", - "mime_serde_shim", - "reqwest", - "serde", - "serde_repr", - "tokio", - "url", -] - -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "0.14.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "js-sys" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "libc" -version = "0.2.155" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_serde_shim" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab9c5b33b135e34aab675cef7f678c688b30740ba299d75e3a8c0af89b5d5cea" -dependencies = [ - "mime", - "serde", -] - -[[package]] -name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.48.0", -] - -[[package]] -name = "native-tls" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "object" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "openssl" -version = "0.10.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2823eb4c6453ed64055057ea8bd416eda38c71018723869dd043a3b1186115e" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" - -[[package]] -name = "proc-macro2" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustix" -version = "0.38.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -dependencies = [ - "bitflags 2.6.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64", -] - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "schannel" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "serde" -version = "1.0.204" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.204" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.120" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "socket2" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "syn" -version = "2.0.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tempfile" -version = "3.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" -dependencies = [ - "cfg-if", - "fastrand", - "rustix", - "windows-sys 0.52.0", -] - -[[package]] -name = "tinyvec" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.38.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys 0.48.0", -] - -[[package]] -name = "tokio-macros" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "url" -version = "2.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" - -[[package]] -name = "web-sys" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] diff --git a/Cargo.toml b/Cargo.toml index 47acf20..a79fe73 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,6 @@ categories = ["web-programming::http-client"] [package.metadata.release] allow-branch = ["master"] -dev-version = false pre-release-replacements = [ {file="README.md", search="[{{prev_version}}]+", replace="{{version}}"} , {file="CHANGELOG.md", search="Unreleased", replace="{{version}}", min=1}, @@ -30,6 +29,7 @@ mime_serde_shim = "0.2" serde = { version = "1.0", features = ["derive"] } serde_repr = "0.1" url = { version = "2.1", features = ["serde"] } +serde_json = "1.0" [dependencies.derive_more] version = "0.99" features = ["display", "error", "from"] diff --git a/Makefile b/Makefile index 3144367..71a89eb 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,8 @@ lint: cargo.lint doc: cargo.doc +test: cargo.test + ################## # Cargo commands # @@ -57,10 +59,18 @@ cargo.lint: cargo.doc: cargo doc --all-features +# Run tests +# +# Usage: +# make cargo.test + +cargo.test: + cargo nextest run + ################## # .PHONY section # ################## -.PHONY: fmt lint \ - cargo.fmt cargo.lint \ No newline at end of file +.PHONY: fmt lint test\ + cargo.fmt cargo.lint cargo.test \ No newline at end of file diff --git a/src/client.rs b/src/client.rs index 276168b..e2e29d9 100644 --- a/src/client.rs +++ b/src/client.rs @@ -62,30 +62,30 @@ impl GstClient { .map_err(Error::RequestFailed) } - pub(crate) async fn process_resp(&self, resp: Response) -> Result { - if !resp.status().is_success() { - return Err(Error::BadStatus(resp.status())); - } - - let res = resp - .json::() + pub(crate) async fn process_resp( + &self, + resp: Response, + ) -> Result { + let api_response = resp + .json::() .await - .map_err(Error::BadBody)?; - - if res.code != gstd_types::ResponseCode::Success { - return Err(Error::GstdError(res.code)); + .map_err(Error::RequestFailed)?; + match api_response { + gstd_types::ApiResponse::Success(resp) => Ok(resp), + gstd_types::ApiResponse::Error(resp) => { + Err(Error::GstdError(resp.code, resp.description)) + } } - Ok(res) } /// Performs `GET /pipelines` API request, returning the - /// parsed [`gstd_types::Response`] + /// parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn pipelines(&self) -> Result { + pub async fn pipelines(&self) -> Result { let resp = self.get("pipelines").await?; self.process_resp(resp).await } @@ -142,7 +142,7 @@ impl From<&Url> for GstClient { #[cfg(test)] mod spec { use super::*; - const BASE_URL: &'static str = "http://10.211.55.4:5000"; + const BASE_URL: &'static str = "http://localhost:8080"; const PIPELINE_NAME: &'static str = "test pipeline"; fn expect_url() -> Url { @@ -167,7 +167,6 @@ mod spec { let client = GstClient::from(url); assert_eq!(client.base_url, expect_url()); } - #[tokio::test] async fn create_pipeline() { if let Ok(client) = GstClient::build(BASE_URL) { @@ -176,6 +175,7 @@ mod spec { assert!(res.is_ok()); }; } + #[tokio::test] async fn retrieve_pipelines() { if let Ok(client) = GstClient::build(BASE_URL) { @@ -230,4 +230,12 @@ mod spec { assert!(res.is_ok()); }; } + #[tokio::test] + async fn delete_pipeline() { + if let Ok(client) = GstClient::build(BASE_URL) { + let res = client.pipeline(PIPELINE_NAME).delete().await; + println!("{:?}", res); + assert!(res.is_ok()); + }; + } } diff --git a/src/error.rs b/src/error.rs index 6e3098e..f80c4ee 100644 --- a/src/error.rs +++ b/src/error.rs @@ -8,37 +8,31 @@ use derive_more::{Display, Error}; #[derive(Debug, Display, Error)] pub enum Error { /// Performing HTTP request failed itself. - #[display(fmt = "Failed to perform HTTP request: {}", _0)] + #[display(fmt = "Failed to perform HTTP request: {_0}")] RequestFailed(reqwest::Error), /// [`GstClient`] responded with a bad [`StatusCode`]. /// /// [`StatusCode`]: reqwest::StatusCode /// [`GstClient`]: crate::GstClient - #[display(fmt = "API responded with bad status: {}", _0)] + #[display(fmt = "API responded with bad status: {_0}")] BadStatus(#[error(not(source))] reqwest::StatusCode), - /// [`GstClient`] responded with a bad body, which cannot be deserialized. - /// - /// [`GstClient`]: crate::GstClient - #[display(fmt = "Failed to decode API response: {}", _0)] - BadBody(reqwest::Error), - /// Failed to build [`GstClient`] client because incorrect base Url /// /// [`GstClient`]: crate::GstClient - #[display(fmt = "Failed to parse base URL: {}", _0)] + #[display(fmt = "Failed to parse base URL: {_0}")] IncorrectBaseUrl(url::ParseError), /// Failed to create [`GstClient`] API Url /// /// [`GstClient`]: crate::GstClient - #[display(fmt = "Failed to parse URL: {}", _0)] + #[display(fmt = "Failed to parse URL: {_0}")] IncorrectApiUrl(url::ParseError), /// Failed to process request on [GStD] side. /// /// [GStD]: https://developer.ridgerun.com/wiki/index.php/GStreamer_Daemon - #[display(fmt = "Failed to process request: {}", _0)] - GstdError(ResponseCode), + #[display(fmt = "Failed to process request with status `{_0}` and description `{_1}`")] + GstdError(ResponseCode, String), } diff --git a/src/gstd_types.rs b/src/gstd_types.rs index 4b16261..9684456 100644 --- a/src/gstd_types.rs +++ b/src/gstd_types.rs @@ -11,17 +11,36 @@ use serde_repr::{Deserialize_repr, Serialize_repr}; /// /// [1]: https://developer.ridgerun.com/wiki/index.php/GStreamer_Daemon #[derive(Clone, Debug, Deserialize, Serialize)] -pub struct Response { - /// Status of response. +#[serde(untagged)] +pub enum ApiResponse { + Success(SuccessResponse), + Error(ErrorResponse), +} + +/// Successful response by [`GStreamer Daemon`][1] API. +/// +/// [1]: https://developer.ridgerun.com/wiki/index.php/GStreamer_Daemon +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct SuccessResponse { pub code: ResponseCode, /// Description of command response. - /// Same as [`Response::code`] but with text + /// Same as [`SuccessResponse::code`] but with text pub description: String, /// The actual response data from the server pub response: ResponseT, } -/// Response Codes for [`Response`] of [`GStD`] +/// Unsuccessful response by [`GStreamer Daemon`][1] API. +/// +/// [1]: https://developer.ridgerun.com/wiki/index.php/GStreamer_Daemon +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct ErrorResponse { + pub code: ResponseCode, + pub description: String, + pub response: Option<()>, +} + +/// Response Codes for [`SuccessResponse`] of [`GStD`] /// /// [`GStD`]: https://developer.ridgerun.com/wiki/index.php/GStreamer_Daemon #[derive(Serialize_repr, Deserialize_repr, PartialEq, Eq, Debug, Clone, Copy, Error, Display)] @@ -71,6 +90,7 @@ pub enum ResponseCode { #[serde(untagged)] pub enum ResponseT { Bus(Option), + PropertiesWithNodes(PropertiesWithNodes), Properties(Properties), Property(Property), } @@ -82,14 +102,21 @@ pub struct Param { pub access: String, } -/// Possible result in [`Response::response`] after +/// Possible result in [`SuccessResponse::response`] after /// `GET /pipelines` API request #[derive(Clone, Debug, Deserialize, Serialize)] -pub struct Properties { +pub struct PropertiesWithNodes { pub properties: Vec, pub nodes: Vec, } +/// Possible result in [`SuccessResponse::response`] after +/// `GET /pipelines/{{pipeline_name}}/graph` API request +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct Properties { + pub properties: Vec, +} + #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Node { /// The name of [`GStreamer element`] @@ -99,7 +126,7 @@ pub struct Node { pub name: String, } -/// Possible result in [`Response::response`] after +/// Possible result in [`SuccessResponse::response`] after /// `GET /pipelines/{pipeline_name}/graph` API request #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Property { @@ -116,7 +143,7 @@ pub enum PropertyValue { Bool(bool), } -/// Possible result in [`Response::response`] after +/// Possible result in [`SuccessResponse::response`] after /// `GET /pipelines/{name}/bus/message` API request #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Bus { diff --git a/src/lib.rs b/src/lib.rs index 18ac1f4..8ae9122 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -61,4 +61,4 @@ mod error; pub mod gstd_types; pub mod resources; -pub use crate::{client::GstClient, error::Error, gstd_types::Response}; +pub use crate::{client::GstClient, error::Error, gstd_types::SuccessResponse}; diff --git a/src/resources/bus.rs b/src/resources/bus.rs index 9de5384..917ebbb 100644 --- a/src/resources/bus.rs +++ b/src/resources/bus.rs @@ -23,13 +23,13 @@ impl PipelineBus { } } /// Performs `GET pipelines/{name}/bus/message` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn read(&self) -> Result { + pub async fn read(&self) -> Result { let resp = self .client .get(&format!("pipelines/{}/bus/message", self.pipeline.name)) @@ -37,13 +37,13 @@ impl PipelineBus { self.client.process_resp(resp).await } /// Performs `PUT pipelines/{name}?timeout={time_ns}` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn set_timeout(&self, time_ns: i32) -> Result { + pub async fn set_timeout(&self, time_ns: i32) -> Result { let resp = self .client .put(&format!( @@ -54,13 +54,13 @@ impl PipelineBus { self.client.process_resp(resp).await } /// Performs `PUT pipelines/{name}?types={filter}` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn set_filter(&self, filter: &str) -> Result { + pub async fn set_filter(&self, filter: &str) -> Result { let resp = self .client .put(&format!( diff --git a/src/resources/debug.rs b/src/resources/debug.rs index cc32d7a..7fbabad 100644 --- a/src/resources/debug.rs +++ b/src/resources/debug.rs @@ -21,49 +21,49 @@ impl Debug { } } /// Performs `PUT debug/enable?name=enable` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn enable(&self) -> Result { + pub async fn enable(&self) -> Result { let resp = self.client.put("debug/enable?name=true").await?; self.client.process_resp(resp).await } /// Performs `PUT debug/enable?name=false` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn disable(&self) -> Result { + pub async fn disable(&self) -> Result { let resp = self.client.put("debug/enable?name=false").await?; self.client.process_resp(resp).await } /// Performs `PUT debug/reset?name={value}` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn reset(&self, value: bool) -> Result { + pub async fn reset(&self, value: bool) -> Result { let val = if value { "true" } else { "false" }; let resp = self.client.put(&format!("debug/reset?name={val}")).await?; self.client.process_resp(resp).await } /// Performs `PUT debug/threshold?name={value}` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn threshold(&self, value: &str) -> Result { + pub async fn threshold(&self, value: &str) -> Result { let resp = self .client .put(&format!("debug/threshold?name={value}")) @@ -71,24 +71,24 @@ impl Debug { self.client.process_resp(resp).await } /// Performs `PUT debug/color?name=true` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn enable_color(&self) -> Result { + pub async fn enable_color(&self) -> Result { let resp = self.client.put("debug/color?name=true").await?; self.client.process_resp(resp).await } /// Performs `PUT debug/color?name=false` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn disable_color(&self) -> Result { + pub async fn disable_color(&self) -> Result { let resp = self.client.put("debug/color?name=false").await?; self.client.process_resp(resp).await } diff --git a/src/resources/element.rs b/src/resources/element.rs index 43b7cac..00ec869 100644 --- a/src/resources/element.rs +++ b/src/resources/element.rs @@ -28,13 +28,13 @@ impl PipelineElement { /// Performs `GET pipelines/{name}/elements/ /// {element}/properties/{property}` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn property(&self, property: &str) -> Result { + pub async fn property(&self, property: &str) -> Result { let resp = self .client .get(&format!( @@ -46,7 +46,7 @@ impl PipelineElement { } /// Performs `PUT pipelines/{name}/elements/ /// {element}/properties/{property}?name={value}` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// @@ -56,7 +56,7 @@ impl PipelineElement { &self, property: &str, value: &str, - ) -> Result { + ) -> Result { let resp = self .client .put(&format!( @@ -70,13 +70,13 @@ impl PipelineElement { /// Performs `GET pipelines/{name}/ /// elements/{element}/signals/{signal}/callback` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn signal_connect(&self, signal: &str) -> Result { + pub async fn signal_connect(&self, signal: &str) -> Result { let resp = self .client .get(&format!( @@ -90,13 +90,16 @@ impl PipelineElement { /// Performs `GET pipelines/{name}/ /// elements/{element}/signals/{signal}/disconnect` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn signal_disconnect(&self, signal: &str) -> Result { + pub async fn signal_disconnect( + &self, + signal: &str, + ) -> Result { let resp = self .client .get(&format!( @@ -109,7 +112,7 @@ impl PipelineElement { } /// Performs `PUT pipelines/{name}/ /// elements/{element}/signals/{signal}/timeout?name={timeout}` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Arguments /// @@ -123,7 +126,7 @@ impl PipelineElement { &self, signal: &str, timeout: &str, - ) -> Result { + ) -> Result { let resp = self .client .put(&format!( diff --git a/src/resources/pipeline.rs b/src/resources/pipeline.rs index b111cfb..4060612 100644 --- a/src/resources/pipeline.rs +++ b/src/resources/pipeline.rs @@ -31,7 +31,7 @@ impl Pipeline { /// Creates a new pipeline . /// /// Performs `POST pipelines?name={name}&description={description}` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Arguments /// @@ -44,7 +44,7 @@ impl Pipeline { pub async fn create>( &self, description: S, - ) -> Result { + ) -> Result { let resp = self .client .post(&format!( @@ -57,13 +57,13 @@ impl Pipeline { } /// Performs `GET /pipelines/{name}/graph` API request, returning the - /// parsed [`gstd_types::Response`] + /// parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn graph(&self) -> Result { + pub async fn graph(&self) -> Result { let resp = self .client .get(&format!("pipelines/{}/graph", self.name)) @@ -71,13 +71,13 @@ impl Pipeline { self.client.process_resp(resp).await } /// Performs `GET /pipelines/{name}/elements` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn elements(&self) -> Result { + pub async fn elements(&self) -> Result { let resp = self .client .get(&format!("pipelines/{}/elements", self.name)) @@ -86,13 +86,13 @@ impl Pipeline { } /// Performs `GET /pipelines/{name}/properties` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn properties(&self) -> Result { + pub async fn properties(&self) -> Result { let resp = self .client .get(&format!("pipelines/{}/properties", self.name)) @@ -120,7 +120,7 @@ impl Pipeline { } /// Performs `POST pipelines/{name}/event?name={event_name}` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// @@ -129,7 +129,7 @@ impl Pipeline { pub async fn emit_event + Display>( &self, name: S, - ) -> Result { + ) -> Result { let resp = self .client .post(&format!("pipelines/{}/event?name={name}", self.name)) @@ -138,13 +138,13 @@ impl Pipeline { } /// Performs `POST pipelines/{name}/event?name=eos` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn emit_event_eos(&self) -> Result { + pub async fn emit_event_eos(&self) -> Result { let resp = self .client .post(&format!("pipelines/{}/event?name=eos", self.name)) @@ -153,13 +153,13 @@ impl Pipeline { } /// Performs `POST pipelines/{name}/event?name=flush_start` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn emit_event_flush_start(&self) -> Result { + pub async fn emit_event_flush_start(&self) -> Result { let resp = self .client .post(&format!("pipelines/{}/event?name=flush_start", self.name)) @@ -168,13 +168,13 @@ impl Pipeline { } /// Performs `POST pipelines/{name}/event?name=flush_stop` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn emit_event_flush_stop(&self) -> Result { + pub async fn emit_event_flush_stop(&self) -> Result { let resp = self .client .post(&format!("pipelines/{}/event?name=flush_stop", self.name)) @@ -182,13 +182,13 @@ impl Pipeline { self.client.process_resp(resp).await } /// Performs `PUT pipelines/{name}/state?name=playing` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn play(&self) -> Result { + pub async fn play(&self) -> Result { let resp = self .client .put(&format!("pipelines/{}/state?name=playing", self.name)) @@ -196,13 +196,13 @@ impl Pipeline { self.client.process_resp(resp).await } /// Performs `PUT pipelines/{name}/state?name=paused` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn pause(&self) -> Result { + pub async fn pause(&self) -> Result { let resp = self .client .put(&format!("pipelines/{}/state?name=paused", self.name)) @@ -210,13 +210,13 @@ impl Pipeline { self.client.process_resp(resp).await } /// Performs `PUT pipelines/{name}/state?name=null` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn stop(&self) -> Result { + pub async fn stop(&self) -> Result { let resp = self .client .put(&format!("pipelines/{}/state?name=null", self.name)) @@ -225,13 +225,13 @@ impl Pipeline { } /// Performs `PUT pipelines/{name}/verbose?name={value}` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn set_verbose(&self, value: bool) -> Result { + pub async fn set_verbose(&self, value: bool) -> Result { let val = if value { "true" } else { "false" }; let resp = self .client @@ -241,13 +241,13 @@ impl Pipeline { } /// Performs `DELETE pipelines/{name}/` - /// API request, returning the parsed [`gstd_types::Response`] + /// API request, returning the parsed [`gstd_types::SuccessResponse`] /// /// # Errors /// /// If API request cannot be performed, or fails. /// See [`Error`] for details. - pub async fn delete(&self) -> Result { + pub async fn delete(&self) -> Result { let resp = self .client .delete(&format!("pipelines?name={}", self.name))