Initial commit
This commit is contained in:
commit
bfa96cd49f
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/target
|
||||||
|
Cargo.lock
|
16
Cargo.toml
Normal file
16
Cargo.toml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
[package]
|
||||||
|
name = "ruma-common"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Jonas Platte <jplatte@posteo.de>"]
|
||||||
|
description = "Common types for other ruma crates."
|
||||||
|
homepage = "https://github.com/ruma/ruma-common"
|
||||||
|
keywords = ["matrix", "chat", "messaging", "ruma"]
|
||||||
|
license = "MIT"
|
||||||
|
readme = "README.md"
|
||||||
|
repository = "https://github.com/ruma/ruma-client-api"
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
ruma-serde = "0.1.2"
|
||||||
|
serde = { version = "1.0.106", features = ["derive"] }
|
||||||
|
serde_json = { version = "1.0.52", features = ["raw_value"] }
|
19
LICENSE
Normal file
19
LICENSE
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
Copyright (c) 2020 Jonas Platte
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
7
README.md
Normal file
7
README.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# ruma-common
|
||||||
|
|
||||||
|
Common types for other ruma crates.
|
||||||
|
|
||||||
|
This crate is meant to be a dependency for other ruma crates only, consumers of
|
||||||
|
those crates should never have to use this directly (its types will be
|
||||||
|
re-exported from the other crates).
|
5
src/lib.rs
Normal file
5
src/lib.rs
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
//! Common types for other ruma crates.
|
||||||
|
|
||||||
|
#![warn(missing_docs)]
|
||||||
|
|
||||||
|
pub mod push;
|
37
src/push.rs
Normal file
37
src/push.rs
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
//! Common types for the [push notifications module][push]
|
||||||
|
//!
|
||||||
|
//! [push]: https://matrix.org/docs/spec/client_server/r0.6.0#id89
|
||||||
|
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use serde_json::value::RawValue as RawJsonValue;
|
||||||
|
|
||||||
|
mod tweak_serde;
|
||||||
|
|
||||||
|
/// The `set_tweak` action.
|
||||||
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
#[serde(from = "tweak_serde::Tweak", into = "tweak_serde::Tweak")]
|
||||||
|
pub enum Tweak {
|
||||||
|
/// A string representing the sound to be played when this notification arrives.
|
||||||
|
///
|
||||||
|
/// A value of "default" means to play a default sound. A device may choose to alert the user by
|
||||||
|
/// some other means if appropriate, eg. vibration.
|
||||||
|
Sound(String),
|
||||||
|
|
||||||
|
/// A boolean representing whether or not this message should be highlighted in the UI.
|
||||||
|
///
|
||||||
|
/// This will normally take the form of presenting the message in a different color and/or
|
||||||
|
/// style. The UI might also be adjusted to draw particular attention to the room in which the
|
||||||
|
/// event occurred. If a `highlight` tweak is given with no value, its value is defined to be
|
||||||
|
/// `true`. If no highlight tweak is given at all then the value of `highlight` is defined to be
|
||||||
|
/// `false`.
|
||||||
|
Highlight(#[serde(default = "ruma_serde::default_true")] bool),
|
||||||
|
|
||||||
|
/// A custom tweak
|
||||||
|
Custom {
|
||||||
|
/// The name of the custom tweak (`set_tweak` field)
|
||||||
|
name: String,
|
||||||
|
|
||||||
|
/// The value of the custom tweak
|
||||||
|
value: Box<RawJsonValue>,
|
||||||
|
},
|
||||||
|
}
|
51
src/push/tweak_serde.rs
Normal file
51
src/push/tweak_serde.rs
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use serde_json::value::RawValue as RawJsonValue;
|
||||||
|
|
||||||
|
/// Values for the `set_tweak` action.
|
||||||
|
#[derive(Clone, Deserialize, Serialize)]
|
||||||
|
#[serde(untagged)]
|
||||||
|
pub enum Tweak {
|
||||||
|
Sound(SoundTweak),
|
||||||
|
Highlight(HighlightTweak),
|
||||||
|
Custom {
|
||||||
|
#[serde(rename = "set_tweak")]
|
||||||
|
name: String,
|
||||||
|
value: Box<RawJsonValue>,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
|
||||||
|
#[serde(tag = "set_tweak", rename = "sound")]
|
||||||
|
pub struct SoundTweak {
|
||||||
|
value: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
|
||||||
|
#[serde(tag = "set_tweak", rename = "highlight")]
|
||||||
|
pub struct HighlightTweak {
|
||||||
|
value: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<super::Tweak> for Tweak {
|
||||||
|
fn from(tweak: super::Tweak) -> Self {
|
||||||
|
use super::Tweak::*;
|
||||||
|
|
||||||
|
match tweak {
|
||||||
|
Sound(value) => Self::Sound(SoundTweak { value }),
|
||||||
|
Highlight(value) => Self::Highlight(HighlightTweak { value }),
|
||||||
|
Custom { name, value } => Self::Custom { name, value },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<Tweak> for super::Tweak {
|
||||||
|
fn from(tweak: Tweak) -> Self {
|
||||||
|
use Tweak::*;
|
||||||
|
|
||||||
|
match tweak {
|
||||||
|
Sound(SoundTweak { value }) => Self::Sound(value),
|
||||||
|
Highlight(HighlightTweak { value }) => Self::Highlight(value),
|
||||||
|
Custom { name, value } => Self::Custom { name, value },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user