85 lines
2.2 KiB
Rust
85 lines
2.2 KiB
Rust
//! Endpoints for push notifications.
|
|
|
|
use ruma_common::{push::PusherData, StringEnum};
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
pub mod delete_pushrule;
|
|
pub mod get_notifications;
|
|
pub mod get_pushers;
|
|
pub mod get_pushrule;
|
|
pub mod get_pushrule_actions;
|
|
pub mod get_pushrule_enabled;
|
|
pub mod get_pushrules_all;
|
|
pub mod get_pushrules_global_scope;
|
|
pub mod set_pusher;
|
|
pub mod set_pushrule;
|
|
pub mod set_pushrule_actions;
|
|
pub mod set_pushrule_enabled;
|
|
|
|
/// The kinds of push rules that are available
|
|
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)]
|
|
#[ruma_enum(rename_all = "snake_case")]
|
|
pub enum RuleKind {
|
|
/// User-configured rules that override all other kinds
|
|
Override,
|
|
|
|
/// Lowest priority user-defined rules
|
|
Underride,
|
|
|
|
/// Sender-specific rules
|
|
Sender,
|
|
|
|
/// Room-specific rules
|
|
Room,
|
|
|
|
/// Content-specific rules
|
|
Content,
|
|
|
|
#[doc(hidden)]
|
|
_Custom(String),
|
|
}
|
|
|
|
/// Defines a pusher
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
pub struct Pusher {
|
|
/// This is a unique identifier for this pusher. Max length, 512 bytes.
|
|
pub pushkey: String,
|
|
|
|
/// The kind of the pusher. If set to None in a call to set_pusher, this
|
|
/// will delete the pusher
|
|
pub kind: Option<PusherKind>,
|
|
|
|
/// This is a reverse-DNS style identifier for the application. Max length, 64 chars.
|
|
pub app_id: String,
|
|
|
|
/// A string that will allow the user to identify what application owns this pusher.
|
|
pub app_display_name: String,
|
|
|
|
/// A string that will allow the user to identify what device owns this pusher.
|
|
pub device_display_name: String,
|
|
|
|
/// This string determines which set of device specific rules this pusher executes.
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub profile_tag: Option<String>,
|
|
|
|
/// The preferred language for receiving notifications (e.g. 'en' or 'en-US')
|
|
pub lang: String,
|
|
|
|
/// Information for the pusher implementation itself.
|
|
pub data: PusherData,
|
|
}
|
|
|
|
/// Which kind a pusher is
|
|
#[derive(Clone, Debug, PartialEq, Eq, StringEnum)]
|
|
#[ruma_enum(rename_all = "snake_case")]
|
|
pub enum PusherKind {
|
|
/// A pusher that sends HTTP pokes.
|
|
Http,
|
|
|
|
/// A pusher that emails the user with unread notifications.
|
|
Email,
|
|
|
|
#[doc(hidden)]
|
|
_Custom(String),
|
|
}
|