~whynothugo/vdirsyncer-devel

Make username and password in config files optional v1 PROPOSED

Дилян Пала узов: 1
 Make username and password in config files optional

 1 files changed, 24 insertions(+), 12 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~whynothugo/vdirsyncer-devel/patches/54978/mbox | git am -3
Learn more about email & git

[PATCH] Make username and password in config files optional Export this patch

Fixes: https://todo.sr.ht/~whynothugo/vdirsyncer-rs/89
---
 vdirsyncer/src/config.rs | 36 ++++++++++++++++++++++++------------
 1 file changed, 24 insertions(+), 12 deletions(-)

diff --git a/vdirsyncer/src/config.rs b/vdirsyncer/src/config.rs
index 2431ff1..ba4a689 100644
--- a/vdirsyncer/src/config.rs
+++ b/vdirsyncer/src/config.rs
@@ -431,8 +431,8 @@ impl<I: Item> Vdir<I> {
#[serde(deny_unknown_fields)]
struct CardDav {
    url: StringOrCommand,
    username: StringOrCommand,
    password: StringOrCommand,
    username: Option<StringOrCommand>,
    password: Option<StringOrCommand>,
    #[serde(flatten)]
    network_opts: HttpsConfig,
}
@@ -444,10 +444,16 @@ impl CardDav {
            .into_string()?
            .parse()
            .context("parsing caldav URL")?;
        let auth = libdav::auth::Auth::Basic {
            username: self.username.into_string()?,
            // TODO: don't prompt if won't be sync'ed
            password: Some(self.password.into_password()?),
        let auth = match self.username {
            Some(x) => libdav::auth::Auth::Basic {
                username: x.into_string()?,
                // TODO: don't prompt if won't be sync'ed
                password: match self.password {
                    Some(y) => Some(y.into_password()?),
                    None => None,
                },
            },
            None => libdav::auth::Auth::None,
        };
        let webdav = WebDavClient::new(url, auth, self.network_opts.into_connector()?);
        let client = CardDavClient::new_via_bootstrap(webdav).await?;
@@ -459,8 +465,8 @@ impl CardDav {
#[serde(deny_unknown_fields)]
struct CalDav {
    url: StringOrCommand,
    username: StringOrCommand,
    password: StringOrCommand,
    username: Option<StringOrCommand>,
    password: Option<StringOrCommand>,
    // TODO: start_date
    // TODO: end_date
    // TODO: item_types
@@ -475,10 +481,16 @@ impl CalDav {
            .into_string()?
            .parse()
            .context("parsing caldav URL")?;
        let auth = libdav::auth::Auth::Basic {
            username: self.username.into_string()?,
            // TODO: don't prompt if won't be sync'ed
            password: Some(self.password.into_password()?),
        let auth = match self.username {
            Some(x) => libdav::auth::Auth::Basic {
                username: x.into_string()?,
                // TODO: don't prompt if won't be sync'ed
                password: match self.password {
                    Some(y) => Some(y.into_password()?),
                    None => None,
                },
            },
            None => libdav::auth::Auth::None,
        };
        let webdav = WebDavClient::new(url, auth, self.network_opts.into_connector()?);
        let client = CalDavClient::new_via_bootstrap(webdav).await?;
-- 
2.46.0
Applied, thanks.