diff --git a/Cargo.lock b/Cargo.lock index bc22dfc8..8d21a294 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -113,7 +113,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -151,7 +151,7 @@ dependencies = [ "parse-size", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -311,7 +311,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -386,7 +386,7 @@ checksum = "008f98f5a68eeacf5e6d44ed74ce03c1b906baa53eabfb41faf0f5f40bd685f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -555,13 +555,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -741,9 +741,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.15" +version = "1.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" +checksum = "e9d013ecb737093c0e86b151a7b837993cf9ec6c502946cfb44bedc392421e0b" dependencies = [ "jobserver", "libc", @@ -799,9 +799,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.16" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" dependencies = [ "clap_builder", "clap_derive", @@ -809,9 +809,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" dependencies = [ "anstream", "anstyle", @@ -828,7 +828,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -1009,7 +1009,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -1020,7 +1020,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -1067,7 +1067,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -1087,7 +1087,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", "unicode-xid", ] @@ -1103,6 +1103,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "dotenvy" version = "0.15.7" @@ -1210,7 +1221,7 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "ffplayout" -version = "0.24.0-beta3" +version = "0.24.0-beta4" dependencies = [ "actix-files", "actix-multipart", @@ -1297,9 +1308,9 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.24" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf401df4a4e3872c4fe8151134cf483738e74b67fc934d6532c882b3d24a4550" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", @@ -1433,7 +1444,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -1513,7 +1524,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.4.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -1674,9 +1685,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", @@ -1733,6 +1744,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1749,6 +1878,18 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "idna" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd69211b9b519e98303c015e21a007e293db403b6c85b9b124e133d25e242cdd" +dependencies = [ + "icu_normalizer", + "icu_properties", + "smallvec", + "utf8_iter", +] + [[package]] name = "impl-more" version = "0.1.6" @@ -1768,9 +1909,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -1894,9 +2035,9 @@ dependencies = [ [[package]] name = "lettre" -version = "0.11.7" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a62049a808f1c4e2356a2a380bd5f2aca3b011b0b482cf3b914ba1731426969" +checksum = "1658ac89b01055e3ba23d66ecf6f8b97388ebe34ce125e49f8ef71234fb8aaba" dependencies = [ "async-trait", "base64 0.22.1", @@ -1907,13 +2048,14 @@ dependencies = [ "futures-io", "futures-util", "httpdate", - "idna", + "idna 1.0.2", "mime", "nom", "percent-encoding", "quoted_printable", "rustls", "rustls-pemfile", + "rustls-pki-types", "socket2", "tokio", "tokio-rustls", @@ -1950,7 +2092,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.6.0", "libc", - "redox_syscall 0.5.3", + "redox_syscall", ] [[package]] @@ -1970,6 +2112,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "local-channel" version = "0.1.5" @@ -1983,9 +2131,9 @@ dependencies = [ [[package]] name = "local-ip-address" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136ef34e18462b17bf39a7826f8f3bbc223341f8e83822beb8b77db9a3d49696" +checksum = "b435d7dd476416a905f9634dff8c330cee8d3168fdd1fbd472a17d1a75c00c3e" dependencies = [ "libc", "neli", @@ -2270,9 +2418,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.3" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -2313,7 +2461,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall", "smallvec", "windows-targets 0.52.6", ] @@ -2404,7 +2552,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -2479,23 +2627,23 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] name = "psm" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" dependencies = [ "cc", ] [[package]] name = "quinn" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" dependencies = [ "bytes", "pin-project-lite", @@ -2528,15 +2676,15 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" dependencies = [ "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2604,15 +2752,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.5.3" @@ -2776,18 +2915,18 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" dependencies = [ "bitflags 2.6.0", "errno", @@ -2829,9 +2968,9 @@ checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.102.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "84678086bd54edf2b415183ed7a94d0efb049f1b646a33e22a36f3794be6ae56" dependencies = [ "ring", "rustls-pki-types", @@ -2907,7 +3046,7 @@ checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -2926,7 +3065,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de514ef58196f1fc96dcaef80fe6170a1ce6215df9687a93fe8300e773fefc5" dependencies = [ "form_urlencoded", - "indexmap 2.4.0", + "indexmap 2.5.0", "itoa", "ryu", "serde", @@ -2934,9 +3073,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.127" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", "memchr", @@ -2994,7 +3133,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.4.0", + "indexmap 2.5.0", "serde", "serde_derive", "serde_json", @@ -3011,7 +3150,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -3036,7 +3175,7 @@ checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -3069,9 +3208,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-child" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4eed4c5ae38438470ab8e0108bb751012f786f44ff585cfd837c9a5fe426f" +checksum = "a3184fa464a0128cbcc353100ae752a848bc0067dd5715a50550f31570051150" [[package]] name = "signal-hook-registry" @@ -3163,9 +3302,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcfa89bea9500db4a0d038513d7a060566bfc51d46d1c014847049a45cce85e8" +checksum = "93334716a037193fac19df402f8571269c84a00852f6a7066b5d2616dcd64d3e" dependencies = [ "sqlx-core", "sqlx-macros", @@ -3176,9 +3315,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06e2f2bd861719b1f3f0c7dbe1d80c30bf59e76cf019f07d9014ed7eefb8e08" +checksum = "d4d8060b456358185f7d50c55d9b5066ad956956fddec42ee2e8567134a8936e" dependencies = [ "atoi", "byteorder", @@ -3195,7 +3334,7 @@ dependencies = [ "hashbrown 0.14.5", "hashlink", "hex", - "indexmap 2.4.0", + "indexmap 2.5.0", "log", "memchr", "once_cell", @@ -3215,22 +3354,22 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f998a9defdbd48ed005a89362bd40dd2117502f15294f61c8d47034107dbbdc" +checksum = "cac0692bcc9de3b073e8d747391827297e075c7710ff6276d9f7a1f3d58c6657" dependencies = [ "proc-macro2", "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] name = "sqlx-macros-core" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d100558134176a2629d46cec0c8891ba0be8910f7896abfdb75ef4ab6f4e7ce" +checksum = "1804e8a7c7865599c9c79be146dc8a9fd8cc86935fa641d3ea58e5f0688abaa5" dependencies = [ "dotenvy", "either", @@ -3246,7 +3385,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.76", + "syn 2.0.77", "tempfile", "tokio", "url", @@ -3254,9 +3393,9 @@ dependencies = [ [[package]] name = "sqlx-mysql" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cac0ab331b14cb3921c62156d913e4c15b74fb6ec0f3146bd4ef6e4fb3c12" +checksum = "64bb4714269afa44aef2755150a0fc19d756fb580a67db8885608cf02f47d06a" dependencies = [ "atoi", "base64 0.22.1", @@ -3296,9 +3435,9 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9734dbce698c67ecf67c442f768a5e90a49b2a4d61a9f1d59f73874bd4cf0710" +checksum = "6fa91a732d854c5d7726349bb4bb879bb9478993ceb764247660aee25f67c2f8" dependencies = [ "atoi", "base64 0.22.1", @@ -3334,9 +3473,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75b419c3c1b1697833dd927bdc4c6545a620bc1bbafabd44e1efbe9afcd337e" +checksum = "d5b2cf34a45953bfd3daaf3db0f7a7878ab9b7a6b91b422d24a7a9e4c857b680" dependencies = [ "atoi", "flume", @@ -3355,6 +3494,12 @@ dependencies = [ "url", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "stacker" version = "0.1.17" @@ -3493,9 +3638,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.76" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -3512,10 +3657,21 @@ dependencies = [ ] [[package]] -name = "sysinfo" -version = "0.31.3" +name = "synstructure" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b92e0bdf838cbc1c4c9ba14f9c97a7ec6cdcd1ae66b10e1e42775a25553f45d" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "sysinfo" +version = "0.31.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" dependencies = [ "core-foundation-sys", "libc", @@ -3540,7 +3696,7 @@ dependencies = [ [[package]] name = "tests" -version = "0.24.0-beta3" +version = "0.24.0-beta4" dependencies = [ "actix-rt", "actix-test", @@ -3585,7 +3741,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -3619,6 +3775,16 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -3636,9 +3802,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.3" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", @@ -3660,7 +3826,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -3687,9 +3853,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -3714,7 +3880,7 @@ version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", @@ -3768,7 +3934,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -3859,10 +4025,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", - "idna", + "idna 0.5.0", "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -3985,7 +4163,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -4019,7 +4197,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4042,20 +4220,20 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.3" +version = "0.26.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" dependencies = [ "rustls-pki-types", ] [[package]] name = "whoami" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ - "redox_syscall 0.4.1", + "redox_syscall", "wasite", ] @@ -4129,7 +4307,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -4140,7 +4318,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", ] [[package]] @@ -4339,6 +4517,42 @@ dependencies = [ "memchr", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -4357,7 +4571,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.77", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "synstructure", ] [[package]] @@ -4393,6 +4628,28 @@ dependencies = [ "uuid", ] +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "zstd" version = "0.13.2" diff --git a/Cargo.toml b/Cargo.toml index 8e3613cf..31f62efe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ default-members = ["ffplayout", "tests"] resolver = "2" [workspace.package] -version = "0.24.0-beta3" +version = "0.24.0-beta4" license = "GPL-3.0" repository = "https://github.com/ffplayout/ffplayout" authors = ["Jonathan Baecker "] diff --git a/ffplayout/src/api/routes.rs b/ffplayout/src/api/routes.rs index 45855876..2d3c85bb 100644 --- a/ffplayout/src/api/routes.rs +++ b/ffplayout/src/api/routes.rs @@ -570,7 +570,13 @@ async fn get_advanced_config( role: AuthDetails, user: web::ReqData, ) -> Result { - let manager = controllers.lock().unwrap().get(*id).unwrap(); + let manager = controllers + .lock() + .unwrap() + .get(*id) + .ok_or(ServiceError::BadRequest(format!( + "Channel ({id}) not exists!" + )))?; let config = manager.config.lock().unwrap().advanced.clone(); Ok(web::Json(config)) @@ -626,7 +632,13 @@ async fn get_playout_config( role: AuthDetails, user: web::ReqData, ) -> Result { - let manager = controllers.lock().unwrap().get(*id).unwrap(); + let manager = controllers + .lock() + .unwrap() + .get(*id) + .ok_or(ServiceError::BadRequest(format!( + "Channel ({id}) not exists!" + )))?; let config = manager.config.lock().unwrap().clone(); Ok(web::Json(config)) diff --git a/ffplayout/src/main.rs b/ffplayout/src/main.rs index 41faf79e..5897fc57 100644 --- a/ffplayout/src/main.rs +++ b/ffplayout/src/main.rs @@ -73,7 +73,9 @@ async fn main() -> std::io::Result<()> { .map_err(|e| io::Error::new(io::ErrorKind::Other, e.to_string()))?; for channel in channels.iter() { - let config = get_config(&pool, channel.id).await?; + let config = get_config(&pool, channel.id) + .await + .map_err(|e| io::Error::new(io::ErrorKind::Other, e.to_string()))?; let manager = ChannelManager::new(Some(pool.clone()), channel.clone(), config.clone()); let m_queue = Arc::new(Mutex::new(MailQueue::new(channel.id, config.mail))); @@ -210,7 +212,9 @@ async fn main() -> std::io::Result<()> { let channels = ARGS.channels.clone().unwrap_or_else(|| vec![1]); for (index, channel_id) in channels.iter().enumerate() { - let config = get_config(&pool, *channel_id).await?; + let config = get_config(&pool, *channel_id) + .await + .map_err(|e| io::Error::new(io::ErrorKind::Other, e.to_string()))?; let channel = handles::select_channel(&pool, channel_id).await.unwrap(); let manager = ChannelManager::new(Some(pool.clone()), channel.clone(), config.clone()); diff --git a/ffplayout/src/player/controller.rs b/ffplayout/src/player/controller.rs index b5567061..1c463ee1 100644 --- a/ffplayout/src/player/controller.rs +++ b/ffplayout/src/player/controller.rs @@ -126,7 +126,7 @@ impl ChannelManager { let channel_id = self.channel.lock().unwrap().id; if let Err(e) = handles::update_player(&pool_clone, channel_id, true).await { - error!("Unable write to player status: {e}"); + error!(target: Target::all(), channel = channel_id; "Unable write to player status: {e}"); }; thread::spawn(move || { @@ -171,7 +171,7 @@ impl ChannelManager { let channel_id = self.channel.lock().unwrap().id; if let Err(e) = handles::update_player(&pool_clone, channel_id, true).await { - error!("Unable write to player status: {e}"); + error!(target: Target::all(), channel = channel_id; "Unable write to player status: {e}"); }; if index + 1 == ARGS.channels.clone().unwrap_or_default().len() { @@ -258,16 +258,16 @@ impl ChannelManager { } pub async fn async_stop(&self) { - debug!("Stop all child processes"); self.is_terminated.store(true, Ordering::SeqCst); self.is_alive.store(false, Ordering::SeqCst); self.ingest_is_running.store(false, Ordering::SeqCst); self.run_count.fetch_sub(1, Ordering::SeqCst); let pool = self.db_pool.clone().unwrap(); let channel_id = self.channel.lock().unwrap().id; + debug!(target: Target::all(), channel = channel_id; "Stop all child processes from channel {channel_id}"); if let Err(e) = handles::update_player(&pool, channel_id, false).await { - error!("Unable write to player status: {e}"); + error!(target: Target::all(), channel = channel_id; "Unable write to player status: {e}"); }; for unit in [Decoder, Encoder, Ingest] { @@ -281,26 +281,22 @@ impl ChannelManager { /// No matter what is running, terminate them all. pub fn stop_all(&self) { - debug!("Stop all child processes"); self.is_terminated.store(true, Ordering::SeqCst); + self.is_alive.store(false, Ordering::SeqCst); self.ingest_is_running.store(false, Ordering::SeqCst); self.run_count.fetch_sub(1, Ordering::SeqCst); + let channel_id = self.channel.lock().unwrap().id; + debug!(target: Target::all(), channel = channel_id; "Stop all child processes from channel {channel_id}"); - if self.is_alive.load(Ordering::SeqCst) { - self.is_alive.store(false, Ordering::SeqCst); - - trace!("Playout is alive and processes are terminated"); - - for unit in [Decoder, Encoder, Ingest] { - if let Err(e) = self.stop(unit) { - if !e.to_string().contains("exited process") { - error!("{e}") - } + for unit in [Decoder, Encoder, Ingest] { + if let Err(e) = self.stop(unit) { + if !e.to_string().contains("exited process") { + error!(target: Target::all(), channel = channel_id; "{e}") } - if let Err(e) = self.wait(unit) { - if !e.to_string().contains("exited process") { - error!("{e}") - } + } + if let Err(e) = self.wait(unit) { + if !e.to_string().contains("exited process") { + error!(target: Target::all(), channel = channel_id; "{e}") } } } diff --git a/ffplayout/src/player/filter/mod.rs b/ffplayout/src/player/filter/mod.rs index e6413307..41b04ae9 100644 --- a/ffplayout/src/player/filter/mod.rs +++ b/ffplayout/src/player/filter/mod.rs @@ -546,7 +546,7 @@ fn process_output_filters(config: &PlayoutConfig, chain: &mut Filters, custom_fi let filter = if (config.text.add_text && !config.text.text_from_filename) || config.output.mode == HLS { let re_v = Regex::new(r"\[[0:]+[v^\[]+([:0]+)?\]").unwrap(); // match video filter input link - let _re_a = Regex::new(r"\[[0:]+[a^\[]+([:0]+)?\]").unwrap(); // match video filter input link + let _re_a = Regex::new(r"\[[0:]+[a^\[]+([:0]+)?\]").unwrap(); // match audio filter input link let mut cf = custom_filter.to_string(); if !chain.video_chain.is_empty() { diff --git a/ffplayout/src/player/input/folder.rs b/ffplayout/src/player/input/folder.rs index 0a297620..7112b2c7 100644 --- a/ffplayout/src/player/input/folder.rs +++ b/ffplayout/src/player/input/folder.rs @@ -32,7 +32,7 @@ pub fn watchman( let path = Path::new(&config.channel.storage_path); if !path.exists() { - error!("Folder path not exists: '{path:?}'"); + error!(target: Target::file_mail(), channel = id; "Folder path not exists: '{path:?}'"); panic!("Folder path not exists: '{path:?}'"); } @@ -95,7 +95,7 @@ pub fn watchman( } _ => debug!(target: Target::file_mail(), channel = id; "Not tracked file event: {event:?}") }), - Err(errors) => errors.iter().for_each(|error| error!("{error:?}")), + Err(errors) => errors.iter().for_each(|error| error!(target: Target::file_mail(), channel = id; "{error:?}")), } } diff --git a/ffplayout/src/utils/config.rs b/ffplayout/src/utils/config.rs index 1a3b07d5..9172bf0e 100644 --- a/ffplayout/src/utils/config.rs +++ b/ffplayout/src/utils/config.rs @@ -1,5 +1,5 @@ use std::{ - fmt, io, + fmt, path::{Path, PathBuf}, str::FromStr, }; @@ -552,19 +552,13 @@ fn default_track_index() -> i32 { // } impl PlayoutConfig { - pub async fn new(pool: &Pool, channel_id: i32) -> Self { + pub async fn new(pool: &Pool, channel_id: i32) -> Result { let global = handles::select_global(pool) .await .expect("Can't read globals"); - let channel = handles::select_channel(pool, &channel_id) - .await - .expect("Can't read channel"); - let config = handles::select_configuration(pool, channel_id) - .await - .expect("Can't read config"); - let adv_config = handles::select_advanced_configuration(pool, channel_id) - .await - .expect("Can't read advanced config"); + let channel = handles::select_channel(pool, &channel_id).await?; + let config = handles::select_configuration(pool, channel_id).await?; + let adv_config = handles::select_advanced_configuration(pool, channel_id).await?; let channel = Channel::new(&global, channel); let advanced = AdvancedConfig::new(adv_config); @@ -590,23 +584,14 @@ impl PlayoutConfig { Storage::new(&config, channel.storage_path.clone(), global.shared_storage); if !channel.playlist_path.is_dir() { - tokio::fs::create_dir_all(&channel.playlist_path) - .await - .unwrap_or_else(|_| { - panic!("Can't create playlist folder: {:#?}", channel.playlist_path) - }); + tokio::fs::create_dir_all(&channel.playlist_path).await?; } if !channel.logging_path.is_dir() { - tokio::fs::create_dir_all(&channel.logging_path) - .await - .unwrap_or_else(|_| { - panic!("Can't create logging folder: {:#?}", channel.logging_path) - }); + tokio::fs::create_dir_all(&channel.logging_path).await?; } - let (filler_path, _, _) = norm_abs_path(&channel.storage_path, &config.storage_filler) - .expect("Can't get filler path"); + let (filler_path, _, _) = norm_abs_path(&channel.storage_path, &config.storage_filler)?; storage.filler = filler_path; @@ -700,10 +685,10 @@ impl PlayoutConfig { for item in cmd.iter_mut() { if item.ends_with(".ts") || (item.ends_with(".m3u8") && item != "master.m3u8") { if let Ok((hls_path, _, _)) = norm_abs_path(&channel.hls_path, item) { - let parent = hls_path.parent().expect("HLS parent path"); + let parent = hls_path.parent().ok_or("HLS parent path")?; if !parent.is_dir() { - fs::create_dir_all(parent).await.expect("Create HLS path"); + fs::create_dir_all(parent).await?; } item.clone_from(&hls_path.to_string_lossy().to_string()); }; @@ -726,7 +711,7 @@ impl PlayoutConfig { text.node_pos = None; } - Self { + Ok(Self { channel, advanced, general, @@ -739,11 +724,11 @@ impl PlayoutConfig { text, task, output, - } + }) } pub async fn dump(pool: &Pool, id: i32) -> Result<(), ServiceError> { - let mut config = Self::new(pool, id).await; + let mut config = Self::new(pool, id).await?; config.storage.filler.clone_from( &config .storage @@ -819,8 +804,11 @@ fn pre_audio_codec(proc_filter: &str, ingest_filter: &str, channel_count: u8) -> } /// Read command line arguments, and override the config with them. -pub async fn get_config(pool: &Pool, channel_id: i32) -> Result { - let mut config = PlayoutConfig::new(pool, channel_id).await; +pub async fn get_config( + pool: &Pool, + channel_id: i32, +) -> Result { + let mut config = PlayoutConfig::new(pool, channel_id).await?; let args = ARGS.clone(); config.general.generate = args.generate; diff --git a/ffplayout/src/utils/control.rs b/ffplayout/src/utils/control.rs index 5f08d3f0..3fafc859 100644 --- a/ffplayout/src/utils/control.rs +++ b/ffplayout/src/utils/control.rs @@ -11,7 +11,7 @@ use crate::player::{ controller::{ChannelManager, ProcessUnit::*}, utils::{get_delta, get_media_map}, }; -use crate::utils::{config::OutputMode::*, errors::ServiceError, TextFilter}; +use crate::utils::{config::OutputMode::*, errors::ServiceError, logging::Target, TextFilter}; #[derive(Debug, Deserialize, Serialize, Clone)] struct TextParams { @@ -85,6 +85,7 @@ pub async fn send_message( let filter = message.to_string(); let mut data_map = Map::new(); let config = manager.config.lock().unwrap().clone(); + let id = config.general.channel_id; if config.text.zmq_stream_socket.is_some() { if let Some(clips_filter) = manager.filter_chain.clone() { @@ -105,7 +106,7 @@ pub async fn send_message( return Ok(data_map); }; } else if let Err(e) = manager.stop(Ingest) { - error!("Ingest {e:?}") + error!(target: Target::file_mail(), channel = id; "Ingest {e:?}") } } @@ -135,6 +136,7 @@ pub async fn control_state( command: &str, ) -> Result, ServiceError> { let config = manager.config.lock().unwrap().clone(); + let id = config.general.channel_id; let current_date = manager.current_date.lock().unwrap().clone(); let current_list = manager.current_list.lock().unwrap().clone(); let mut date = manager.current_date.lock().unwrap().clone(); @@ -145,23 +147,23 @@ pub async fn control_state( if index > 1 && current_list.len() > 1 { if let Some(proc) = manager.decoder.lock().unwrap().as_mut() { if let Err(e) = proc.kill() { - error!("Decoder {e:?}") + error!(target: Target::file_mail(), channel = id; "Decoder {e:?}") }; if let Err(e) = proc.wait() { - error!("Decoder {e:?}") + error!(target: Target::file_mail(), channel = id; "Decoder {e:?}") }; } else { return Err(ServiceError::InternalServerError); } - info!("Move to last clip"); + info!(target: Target::file_mail(), channel = id; "Move to last clip"); let mut data_map = Map::new(); let mut media = current_list[index - 2].clone(); manager.current_index.fetch_sub(2, Ordering::SeqCst); if let Err(e) = media.add_probe(false) { - error!("{e:?}"); + error!(target: Target::file_mail(), channel = id; "{e:?}"); }; let (delta, _) = get_delta(&config, &media.begin.unwrap_or(0.0)); @@ -181,23 +183,23 @@ pub async fn control_state( if index < current_list.len() { if let Some(proc) = manager.decoder.lock().unwrap().as_mut() { if let Err(e) = proc.kill() { - error!("Decoder {e:?}") + error!(target: Target::file_mail(), channel = id; "Decoder {e:?}") }; if let Err(e) = proc.wait() { - error!("Decoder {e:?}") + error!(target: Target::file_mail(), channel = id; "Decoder {e:?}") }; } else { return Err(ServiceError::InternalServerError); } - info!("Move to next clip"); + info!(target: Target::file_mail(), channel = id; "Move to next clip"); let mut data_map = Map::new(); let mut media = current_list[index].clone(); if let Err(e) = media.add_probe(false) { - error!("{e:?}"); + error!(target: Target::file_mail(), channel = id; "{e:?}"); }; let (delta, _) = get_delta(&config, &media.begin.unwrap_or(0.0)); @@ -216,17 +218,17 @@ pub async fn control_state( "reset" => { if let Some(proc) = manager.decoder.lock().unwrap().as_mut() { if let Err(e) = proc.kill() { - error!("Decoder {e:?}") + error!(target: Target::file_mail(), channel = id; "Decoder {e:?}") }; if let Err(e) = proc.wait() { - error!("Decoder {e:?}") + error!(target: Target::file_mail(), channel = id; "Decoder {e:?}") }; } else { return Err(ServiceError::InternalServerError); } - info!("Reset playout to original state"); + info!(target: Target::file_mail(), channel = id; "Reset playout to original state"); let mut data_map = Map::new(); manager.channel.lock().unwrap().time_shift = 0.0; date.clone_from(¤t_date); diff --git a/ffplayout/src/utils/generator.rs b/ffplayout/src/utils/generator.rs index e8eb2c58..7519cdd0 100644 --- a/ffplayout/src/utils/generator.rs +++ b/ffplayout/src/utils/generator.rs @@ -19,7 +19,7 @@ use crate::player::{ controller::ChannelManager, utils::{ folder::{fill_filler_list, FolderSource}, - gen_dummy, get_date_range, include_file_extension, + get_date_range, include_file_extension, json_serializer::JsonPlaylist, sum_durations, Media, }, @@ -118,15 +118,6 @@ pub fn filler_list(config: &PlayoutConfig, total_length: f64) -> Vec { let last_index = filler_clip_list.len() - 1; filler_clip_list[last_index].out = filler_clip_list[last_index].duration - over_length; - } else { - let mut dummy = Media::new(0, "", false); - let (source, cmd) = gen_dummy(config, total_length); - dummy.source = source; - dummy.cmd = Some(cmd); - dummy.duration = total_length; - dummy.out = total_length; - - filler_clip_list.push(dummy); } filler_clip_list diff --git a/frontend b/frontend index 8d8ab58e..48f123bf 160000 --- a/frontend +++ b/frontend @@ -1 +1 @@ -Subproject commit 8d8ab58ef43d450968a3e4fa23f1141c77a31b88 +Subproject commit 48f123bf6ad136968495e9e5e22249b8ca5ef192 diff --git a/tests/src/api_routes.rs b/tests/src/api_routes.rs index 59b6697a..20774f52 100644 --- a/tests/src/api_routes.rs +++ b/tests/src/api_routes.rs @@ -42,7 +42,7 @@ async fn prepare_config() -> (PlayoutConfig, ChannelManager, Pool) { handles::insert_user(&pool, user.clone()).await.unwrap(); - let config = PlayoutConfig::new(&pool, 1).await; + let config = PlayoutConfig::new(&pool, 1).await.unwrap(); let channel = handles::select_channel(&pool, &1).await.unwrap(); let manager = ChannelManager::new(Some(pool.clone()), channel, config.clone()); diff --git a/tests/src/engine_cmd.rs b/tests/src/engine_cmd.rs index 6e4d2772..7187d1b3 100644 --- a/tests/src/engine_cmd.rs +++ b/tests/src/engine_cmd.rs @@ -31,7 +31,7 @@ async fn prepare_config() -> (PlayoutConfig, ChannelManager) { .await .unwrap(); - let config = PlayoutConfig::new(&pool, 1).await; + let config = PlayoutConfig::new(&pool, 1).await.unwrap(); let channel = handles::select_channel(&pool, &1).await.unwrap(); let manager = ChannelManager::new(Some(pool), channel, config.clone()); diff --git a/tests/src/engine_generator.rs b/tests/src/engine_generator.rs index 151dada8..7b2e8922 100644 --- a/tests/src/engine_generator.rs +++ b/tests/src/engine_generator.rs @@ -34,7 +34,7 @@ async fn prepare_config() -> (PlayoutConfig, ChannelManager) { .await .unwrap(); - let config = PlayoutConfig::new(&pool, 1).await; + let config = PlayoutConfig::new(&pool, 1).await.unwrap(); let channel = handles::select_channel(&pool, &1).await.unwrap(); let manager = ChannelManager::new(Some(pool), channel, config.clone()); diff --git a/tests/src/engine_playlist.rs b/tests/src/engine_playlist.rs index 3bd603e8..e33adad0 100644 --- a/tests/src/engine_playlist.rs +++ b/tests/src/engine_playlist.rs @@ -33,7 +33,7 @@ async fn prepare_config() -> (PlayoutConfig, ChannelManager) { .await .unwrap(); - let config = PlayoutConfig::new(&pool, 1).await; + let config = PlayoutConfig::new(&pool, 1).await.unwrap(); let channel = handles::select_channel(&pool, &1).await.unwrap(); let manager = ChannelManager::new(Some(pool), channel, config.clone()); diff --git a/tests/src/lib_utils.rs b/tests/src/lib_utils.rs index 2638d038..11f640e5 100644 --- a/tests/src/lib_utils.rs +++ b/tests/src/lib_utils.rs @@ -27,7 +27,7 @@ async fn prepare_config() -> (PlayoutConfig, ChannelManager) { .await .unwrap(); - let config = PlayoutConfig::new(&pool, 1).await; + let config = PlayoutConfig::new(&pool, 1).await.unwrap(); let channel = handles::select_channel(&pool, &1).await.unwrap(); let manager = ChannelManager::new(Some(pool), channel, config.clone());