diff --git a/Cargo.lock b/Cargo.lock index 6e15871..2833f16 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3317,7 +3317,7 @@ dependencies = [ [[package]] name = "rustical" -version = "0.11.10" +version = "0.11.17" dependencies = [ "anyhow", "argon2", @@ -3328,6 +3328,7 @@ dependencies = [ "figment", "headers", "http", + "ical", "insta", "opentelemetry", "opentelemetry-otlp", @@ -3362,7 +3363,7 @@ dependencies = [ [[package]] name = "rustical_caldav" -version = "0.11.10" +version = "0.11.17" dependencies = [ "async-std", "async-trait", @@ -3404,7 +3405,7 @@ dependencies = [ [[package]] name = "rustical_carddav" -version = "0.11.10" +version = "0.11.17" dependencies = [ "async-trait", "axum", @@ -3438,7 +3439,7 @@ dependencies = [ [[package]] name = "rustical_dav" -version = "0.11.10" +version = "0.11.17" dependencies = [ "async-trait", "axum", @@ -3464,7 +3465,7 @@ dependencies = [ [[package]] name = "rustical_dav_push" -version = "0.11.10" +version = "0.11.17" dependencies = [ "async-trait", "axum", @@ -3489,7 +3490,7 @@ dependencies = [ [[package]] name = "rustical_frontend" -version = "0.11.10" +version = "0.11.17" dependencies = [ "askama", "askama_web", @@ -3525,7 +3526,7 @@ dependencies = [ [[package]] name = "rustical_ical" -version = "0.11.10" +version = "0.11.17" dependencies = [ "axum", "chrono", @@ -3544,7 +3545,7 @@ dependencies = [ [[package]] name = "rustical_oidc" -version = "0.11.10" +version = "0.11.17" dependencies = [ "async-trait", "axum", @@ -3560,7 +3561,7 @@ dependencies = [ [[package]] name = "rustical_store" -version = "0.11.10" +version = "0.11.17" dependencies = [ "anyhow", "async-trait", @@ -3593,7 +3594,7 @@ dependencies = [ [[package]] name = "rustical_store_sqlite" -version = "0.11.10" +version = "0.11.17" dependencies = [ "async-trait", "chrono", @@ -3603,6 +3604,7 @@ dependencies = [ "password-auth", "password-hash", "pbkdf2", + "regex", "rstest", "rustical_ical", "rustical_store", @@ -3617,7 +3619,7 @@ dependencies = [ [[package]] name = "rustical_xml" -version = "0.11.10" +version = "0.11.17" dependencies = [ "quick-xml", "thiserror 2.0.17", @@ -5439,7 +5441,7 @@ checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "xml_derive" -version = "0.11.10" +version = "0.11.17" dependencies = [ "darling 0.23.0", "heck", diff --git a/Cargo.toml b/Cargo.toml index ead46ae..c3a9c9d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -160,6 +160,7 @@ rustical_store_sqlite.workspace = true rustical_caldav.workspace = true rustical_carddav.workspace = true rustical_frontend.workspace = true +ical.workspace = true toml.workspace = true serde.workspace = true tokio.workspace = true diff --git a/src/migration_0_12.rs b/src/migration_0_12.rs index 2130220..f661f8a 100644 --- a/src/migration_0_12.rs +++ b/src/migration_0_12.rs @@ -1,3 +1,4 @@ +use ical::parser::{ical::IcalObjectParser, vcard::VcardParser}; use rustical_store::{AddressbookStore, CalendarStore, auth::AuthenticationProvider}; use tracing::{error, info}; @@ -8,21 +9,18 @@ pub async fn validate_calendar_objects_0_12( let mut success = true; for principal in principal_store.get_principals().await? { for calendar in cal_store.get_calendars(&principal.id).await? { - for object in cal_store + for (object_id, object) in cal_store .get_objects(&calendar.principal, &calendar.id) .await? { - if let Err(err) = ical_dev::parser::ical::IcalObjectParser::from_slice( - object.get_ics().as_bytes(), - ) - .expect_one() + if let Err(err) = + IcalObjectParser::from_slice(object.get_ics().as_bytes()).expect_one() { success = false; error!( "An error occured parsing a calendar object: principal={principal}, calendar={calendar}, object_id={object_id}: {err}", principal = principal.id, calendar = calendar.id, - object_id = object.get_id() ); println!("{}", object.get_ics()); } @@ -48,20 +46,17 @@ pub async fn validate_address_objects_0_12( let mut success = true; for principal in principal_store.get_principals().await? { for addressbook in addr_store.get_addressbooks(&principal.id).await? { - for object in addr_store + for (object_id, object) in addr_store .get_objects(&addressbook.principal, &addressbook.id) .await? { - if let Err(err) = - ical_dev::parser::vcard::VcardParser::from_slice(object.get_vcf().as_bytes()) - .expect_one() + if let Err(err) = VcardParser::from_slice(object.get_vcf().as_bytes()).expect_one() { success = false; error!( "An error occured parsing an address object: principal={principal}, addressbook={addressbook}, object_id={object_id}: {err}", principal = principal.id, addressbook = addressbook.id, - object_id = object.get_id() ); println!("{}", object.get_vcf()); }