Update ical-rs

This commit is contained in:
Lennart K
2026-01-13 16:01:59 +01:00
parent 5ec2787ecf
commit 2c67890343
7 changed files with 26 additions and 28 deletions

36
Cargo.lock generated
View File

@@ -689,9 +689,9 @@ dependencies = [
[[package]] [[package]]
name = "clap_lex" name = "clap_lex"
version = "0.7.6" version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32"
[[package]] [[package]]
name = "colorchoice" name = "colorchoice"
@@ -1771,7 +1771,7 @@ dependencies = [
[[package]] [[package]]
name = "ical" name = "ical"
version = "0.11.0" version = "0.11.0"
source = "git+https://github.com/lennart-k/ical-rs?branch=dev#626982a02647c3bee5c7d0828facd1b77df5722f" source = "git+https://github.com/lennart-k/ical-rs?branch=dev#ece5b95ddc20f89d14e162aba3a49038f9989701"
dependencies = [ dependencies = [
"chrono", "chrono",
"chrono-tz", "chrono-tz",
@@ -2965,7 +2965,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
dependencies = [ dependencies = [
"rand_chacha 0.9.0", "rand_chacha 0.9.0",
"rand_core 0.9.3", "rand_core 0.9.5",
] ]
[[package]] [[package]]
@@ -2985,7 +2985,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [ dependencies = [
"ppv-lite86", "ppv-lite86",
"rand_core 0.9.3", "rand_core 0.9.5",
] ]
[[package]] [[package]]
@@ -2999,9 +2999,9 @@ dependencies = [
[[package]] [[package]]
name = "rand_core" name = "rand_core"
version = "0.9.3" version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
dependencies = [ dependencies = [
"getrandom 0.3.4", "getrandom 0.3.4",
] ]
@@ -4353,30 +4353,30 @@ dependencies = [
[[package]] [[package]]
name = "time" name = "time"
version = "0.3.44" version = "0.3.45"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd"
dependencies = [ dependencies = [
"deranged", "deranged",
"itoa", "itoa",
"num-conv", "num-conv",
"powerfmt", "powerfmt",
"serde", "serde_core",
"time-core", "time-core",
"time-macros", "time-macros",
] ]
[[package]] [[package]]
name = "time-core" name = "time-core"
version = "0.1.6" version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca"
[[package]] [[package]]
name = "time-macros" name = "time-macros"
version = "0.2.24" version = "0.2.25"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd"
dependencies = [ dependencies = [
"num-conv", "num-conv",
"time-core", "time-core",
@@ -4611,9 +4611,9 @@ dependencies = [
[[package]] [[package]]
name = "tower" name = "tower"
version = "0.5.2" version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
dependencies = [ dependencies = [
"futures-core", "futures-core",
"futures-util", "futures-util",
@@ -5559,6 +5559,6 @@ dependencies = [
[[package]] [[package]]
name = "zmij" name = "zmij"
version = "1.0.13" version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac93432f5b761b22864c774aac244fa5c0fd877678a4c37ebf6cf42208f9c9ec" checksum = "bd8f3f50b848df28f887acb68e41201b5aea6bc8a8dacc00fb40635ff9a72fea"

View File

@@ -11,7 +11,6 @@ use rustical_ical::CalendarObjectType;
use rustical_store::{ use rustical_store::{
Calendar, CalendarMetadata, CalendarStore, SubscriptionStore, auth::Principal, Calendar, CalendarMetadata, CalendarStore, SubscriptionStore, auth::Principal,
}; };
use std::io::BufReader;
use tracing::instrument; use tracing::instrument;
#[instrument(skip(resource_service))] #[instrument(skip(resource_service))]
@@ -26,7 +25,7 @@ pub async fn route_import<C: CalendarStore, S: SubscriptionStore>(
return Err(Error::Unauthorized); return Err(Error::Unauthorized);
} }
let parser = ical::IcalParser::new(BufReader::new(body.as_bytes())); let parser = ical::IcalParser::from_slice(body.as_bytes());
let mut cal = parser let mut cal = parser
.expect_one() .expect_one()
.map_err(rustical_ical::Error::ParserError)? .map_err(rustical_ical::Error::ParserError)?

View File

@@ -87,7 +87,7 @@ pub async fn route_mkcalendar<C: CalendarStore, S: SubscriptionStore>(
Some(tzid) Some(tzid)
} else if let Some(tz) = request.calendar_timezone { } else if let Some(tz) = request.calendar_timezone {
// TODO: Proper error (calendar-timezone precondition) // TODO: Proper error (calendar-timezone precondition)
let calendar = IcalParser::new(tz.as_bytes()) let calendar = IcalParser::from_slice(tz.as_bytes())
.next() .next()
.ok_or_else(|| rustical_dav::Error::BadRequest("No timezone data provided".to_owned()))? .ok_or_else(|| rustical_dav::Error::BadRequest("No timezone data provided".to_owned()))?
.map_err(|_| rustical_dav::Error::BadRequest("Error parsing timezone".to_owned()))?; .map_err(|_| rustical_dav::Error::BadRequest("Error parsing timezone".to_owned()))?;

View File

@@ -202,7 +202,7 @@ impl Resource for CalendarResource {
CalendarProp::CalendarTimezone(timezone) => { CalendarProp::CalendarTimezone(timezone) => {
if let Some(tz) = timezone { if let Some(tz) = timezone {
// TODO: Proper error (calendar-timezone precondition) // TODO: Proper error (calendar-timezone precondition)
let calendar = IcalParser::new(tz.as_bytes()) let calendar = IcalParser::from_slice(tz.as_bytes())
.next() .next()
.ok_or_else(|| { .ok_or_else(|| {
rustical_dav::Error::BadRequest( rustical_dav::Error::BadRequest(

View File

@@ -10,7 +10,6 @@ use ical::{
property::ContentLine, property::ContentLine,
}; };
use rustical_store::{Addressbook, AddressbookStore, SubscriptionStore, auth::Principal}; use rustical_store::{Addressbook, AddressbookStore, SubscriptionStore, auth::Principal};
use std::io::BufReader;
use tracing::instrument; use tracing::instrument;
#[instrument(skip(resource_service))] #[instrument(skip(resource_service))]
@@ -24,7 +23,7 @@ pub async fn route_import<AS: AddressbookStore, S: SubscriptionStore>(
return Err(Error::Unauthorized); return Err(Error::Unauthorized);
} }
let parser = vcard::VcardParser::new(BufReader::new(body.as_bytes())); let parser = vcard::VcardParser::from_slice(body.as_bytes());
let mut objects = vec![]; let mut objects = vec![];
for res in parser { for res in parser {

View File

@@ -14,8 +14,8 @@ use ical::parser::{
use ical::property::ContentLine; use ical::property::ContentLine;
use ical::types::{CalDate, PartialDate}; use ical::types::{CalDate, PartialDate};
use sha2::{Digest, Sha256}; use sha2::{Digest, Sha256};
use std::collections::HashMap;
use std::str::FromStr; use std::str::FromStr;
use std::{collections::HashMap, io::BufReader};
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct AddressObject { pub struct AddressObject {
@@ -32,7 +32,7 @@ impl From<VcardContact> for AddressObject {
impl AddressObject { impl AddressObject {
pub fn from_vcf(vcf: String) -> Result<Self, Error> { pub fn from_vcf(vcf: String) -> Result<Self, Error> {
let parser = vcard::VcardParser::new(BufReader::new(vcf.as_bytes())); let parser = vcard::VcardParser::from_slice(vcf.as_bytes());
let vcard = parser.expect_one()?; let vcard = parser.expect_one()?;
Ok(Self { vcf, vcard }) Ok(Self { vcf, vcard })
} }

View File

@@ -1,9 +1,9 @@
use crate::Error; use crate::Error;
use derive_more::Display; use derive_more::Display;
use ical::IcalObjectParser;
use ical::component::CalendarInnerData; use ical::component::CalendarInnerData;
use ical::component::IcalCalendarObject; use ical::component::IcalCalendarObject;
use ical::generator::Emitter; use ical::generator::Emitter;
use ical::parser::ComponentParser;
use serde::Deserialize; use serde::Deserialize;
use serde::Serialize; use serde::Serialize;
use sha2::{Digest, Sha256}; use sha2::{Digest, Sha256};
@@ -69,7 +69,7 @@ pub struct CalendarObject {
impl CalendarObject { impl CalendarObject {
pub fn from_ics(ics: String) -> Result<Self, Error> { pub fn from_ics(ics: String) -> Result<Self, Error> {
let parser: ComponentParser<_, IcalCalendarObject> = ComponentParser::new(ics.as_bytes()); let parser = IcalObjectParser::from_slice(ics.as_bytes());
let inner = parser.expect_one()?; let inner = parser.expect_one()?;
Ok(Self { inner, ics }) Ok(Self { inner, ics })