Use of Voluntary Application Server Identification (VAPID) in JMAP Web Push
Some checks failed
CI / Build / x86_64-unknown-linux-gnu (push) Has been cancelled
CI / Build / x86_64-unknown-linux-musl (push) Has been cancelled
CI / Build / arm-unknown-linux-gnueabihf (push) Has been cancelled
CI / Build / arm-unknown-linux-musleabihf (push) Has been cancelled
CI / Build / armv7-unknown-linux-gnueabihf (push) Has been cancelled
CI / Build / armv7-unknown-linux-musleabihf (push) Has been cancelled
CI / Build / aarch64-unknown-linux-gnu (push) Has been cancelled
CI / Build / aarch64-unknown-linux-musl (push) Has been cancelled
CI / Build / x86_64-pc-windows-msvc (push) Has been cancelled
CI / Build / aarch64-apple-darwin (push) Has been cancelled
CI / Build / x86_64-apple-darwin (push) Has been cancelled
CI / Build / x86_64-unknown-freebsd (push) Has been cancelled
CI / Merge image / gnu (push) Has been cancelled
CI / Merge image / musl (push) Has been cancelled
CI / Release (push) Has been cancelled
CI / Publish release (push) Has been cancelled
CI / Cleanup failed release (push) Has been cancelled

This commit is contained in:
Maurus Decimus
2026-07-20 13:55:00 +02:00
parent 2553d8ee4c
commit 425d034ae7
27 changed files with 532 additions and 45 deletions

View File

@@ -91,6 +91,8 @@ pub enum Capability {
MailShare = 1 << 16,
#[serde(rename(serialize = "urn:stalwart:jmap"))]
Stalwart = 1 << 17,
#[serde(rename(serialize = "urn:ietf:params:jmap:webpush-vapid"))]
WebPushVapid = 1 << 18,
}
#[derive(Debug, Clone, Copy, Default)]
@@ -119,6 +121,7 @@ pub enum Capabilities {
PrincipalsAvailability(PrincipalAvailabilityCapabilities),
Calendar(CalendarCapabilities),
FileNode(FileNodeCapabilities),
WebPush(WebPushCapabilities),
Empty(EmptyCapabilities),
}
@@ -291,6 +294,12 @@ pub struct FileNodeCapabilities {
pub web_write_url_template: Option<String>,
}
#[derive(Debug, Clone, serde::Serialize)]
pub struct WebPushCapabilities {
#[serde(rename(serialize = "applicationServerKey"))]
pub application_server_key: String,
}
#[derive(Debug, Clone, Default, serde::Serialize)]
pub struct EmptyCapabilities {}
@@ -321,6 +330,7 @@ impl Capability {
Capability::FileNode => "urn:ietf:params:jmap:filenode",
Capability::MailShare => "urn:ietf:params:jmap:mail:share",
Capability::Stalwart => "urn:stalwart:jmap",
Capability::WebPushVapid => "urn:ietf:params:jmap:webpush-vapid",
}
}
@@ -343,6 +353,7 @@ impl Capability {
Capability::FileNode,
Capability::MailShare,
Capability::Stalwart,
Capability::WebPushVapid,
]
}
}
@@ -463,6 +474,7 @@ impl Capability {
"urn:ietf:params:jmap:calendars:parse" => Capability::CalendarsParse,
"urn:ietf:params:jmap:mail:share" => Capability::MailShare,
"urn:stalwart:jmap" => Capability::Stalwart,
"urn:ietf:params:jmap:webpush-vapid" => Capability::WebPushVapid,
)
}
}