Switch from chrono to time crate

pull/18/head
Dominik Nakamura 3 years ago
parent 6d8b18abbf
commit 7ce0112ae2
No known key found for this signature in database
GPG Key ID: E4C6A749B2491910

@ -19,7 +19,6 @@ features = ["events", "tls"]
async-stream = { version = "0.3.2", optional = true }
base64 = "0.13.0"
bitflags = "1.3.2"
chrono = { version = "0.4.19", default-features = false, features = ["std"] }
either = { version = "1.6.1", features = ["serde"] }
futures-util = { version = "0.3.19", features = ["sink"] }
log = "0.4.14"
@ -31,6 +30,7 @@ serde_repr = "0.1.7"
serde_with = "1.11.0"
sha2 = "0.10.0"
thiserror = "1.0.30"
time = "0.3.5"
tokio = { version = "1.15.0", features = ["net", "rt", "sync"] }
tokio-tungstenite = "0.16.1"

@ -1,4 +1,4 @@
use chrono::Duration;
use time::Duration;
use super::Client;
use crate::{requests::RequestType, responses, Result};

@ -1,5 +1,5 @@
use chrono::Duration;
use serde::{de::DeserializeOwned, Serialize};
use time::Duration;
use super::Client;
use crate::{

@ -1,5 +1,5 @@
use chrono::Duration;
use serde::Serialize;
use time::Duration;
use super::Client;
use crate::{requests::RequestType, responses, Error, Result};

@ -7,8 +7,8 @@ use std::{
marker::PhantomData,
};
use chrono::Duration;
use serde::de::{self, Deserializer, Visitor};
use time::Duration;
#[derive(Debug, thiserror::Error)]
enum Error {

@ -1,7 +1,7 @@
//! All events that can be received from the API.
use chrono::Duration;
use serde::Deserialize;
use time::Duration;
use crate::common::{SceneItem, SceneItemTransform};

@ -3,10 +3,10 @@
use std::path::Path;
use chrono::Duration;
use rgb::RGBA8;
use serde::{ser::SerializeStruct, Serialize, Serializer};
use serde_repr::Serialize_repr;
use time::Duration;
use crate::{common::FontFlags, requests::ser};

@ -3,11 +3,11 @@
use std::path::Path;
use bitflags::bitflags;
use chrono::Duration;
use either::Either;
pub use rgb::RGBA8;
use serde::Serialize;
use serde_with::skip_serializing_none;
use time::Duration;
use crate::common::{Align, Alignment, BoundsType, FontFlags, MonitorType, StreamType, Valign};

@ -1,10 +1,12 @@
use chrono::Duration;
use std::convert::TryFrom;
use rgb::RGBA8;
use serde::ser::{self, Serialize, Serializer};
use time::Duration;
#[derive(Debug, thiserror::Error)]
enum Error {
#[error("duration of {} days is too big to be serialized as nanoseconds", .0.num_days())]
#[error("duration of {} days is too big to be serialized as number", .0.whole_days())]
DurationTooBig(Duration),
}
@ -13,7 +15,9 @@ where
S: Serializer,
{
match value {
Some(duration) => serializer.serialize_some(&duration.num_milliseconds()),
Some(duration) => {
serializer.serialize_some(&to_i64(duration, duration.whole_milliseconds())?)
}
None => serializer.serialize_none(),
}
}
@ -22,18 +26,23 @@ pub fn duration_millis<S>(value: &Duration, serializer: S) -> Result<S::Ok, S::E
where
S: Serializer,
{
serializer.serialize_i64(value.num_milliseconds())
serializer.serialize_i64(to_i64(value, value.whole_milliseconds())?)
}
pub fn duration_nanos<S>(value: &Duration, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
match value.num_nanoseconds() {
Some(nanos) => serializer.serialize_i64(nanos),
None => Err(ser::Error::custom(Error::DurationTooBig(*value))),
}
serializer.serialize_i64(to_i64(value, value.whole_nanoseconds())?)
}
fn to_i64<E>(duration: &Duration, value: i128) -> Result<i64, E>
where
E: ser::Error,
{
i64::try_from(value).map_err(|_| E::custom(Error::DurationTooBig(*duration)))
}
pub fn bitflags_u8<S, T>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
@ -185,7 +194,7 @@ mod tests {
},
Token::Str("value"),
],
"duration of 365000000 days is too big to be serialized as nanoseconds",
"duration of 365000000 days is too big to be serialized as number",
);
}

@ -2,10 +2,10 @@
use std::{collections::HashSet, path::PathBuf};
use chrono::Duration;
pub use rgb::RGBA8;
pub use semver::Version as SemVerVersion;
use serde::Deserialize;
use time::Duration;
use crate::common::{
Align, Bounds, Crop, FontFlags, MonitorType, Position, Scale, SceneItem, SceneItemTransform,

@ -103,7 +103,7 @@ async fn ensure_obs_setup(client: &Client) -> Result<()> {
ensure!(
sources.iter().any(is_required_source_2),
"text source `{}` not found, required for sources tests",
TEXT_SOURCE
TEXT_SOURCE_2
);
ensure!(
sources.iter().any(is_required_browser_source),
@ -148,10 +148,25 @@ async fn ensure_obs_setup(client: &Client) -> Result<()> {
);
client.scenes().set_current_scene(TEST_SCENE).await?;
client
.scenes()
.reorder_scene_items(Some(TEST_SCENE), SCENE_ORDER)
.await?;
let sources = client.scenes().get_current_scene().await?.sources;
ensure!(
sources.len() == 4,
"scene `{}` must have exactly 4 scene items",
TEST_SCENE
);
if sources[0].name != TEXT_SOURCE
|| sources[1].name != TEXT_SOURCE_2
|| sources[2].name != TEST_BROWSER
|| sources[3].name != TEST_MEDIA
{
client
.scenes()
.reorder_scene_items(Some(TEST_SCENE), SCENE_ORDER)
.await?;
}
client
.transitions()
.set_current_transition(TEST_TRANSITION)

@ -1,8 +1,8 @@
#![cfg(feature = "test-integration")]
use anyhow::Result;
use chrono::Duration;
use obws::requests::{SceneItem, SceneTransitionOverride};
use time::Duration;
use crate::common::{
TEST_BROWSER, TEST_MEDIA, TEST_SCENE, TEST_SCENE_2, TEST_TRANSITION, TEXT_SOURCE, TEXT_SOURCE_2,

@ -1,7 +1,6 @@
#![cfg(feature = "test-integration")]
use anyhow::{Context, Result};
use chrono::Duration;
use obws::{
common::MonitorType,
requests::{
@ -10,6 +9,7 @@ use obws::{
},
};
use serde_json::json;
use time::Duration;
use crate::common::{SOURCE_KIND_VLC, TEST_BROWSER, TEST_MEDIA, TEXT_SOURCE};

@ -1,8 +1,8 @@
#![cfg(feature = "test-integration")]
use anyhow::Result;
use chrono::Duration;
use obws::requests::Transition;
use time::Duration;
use crate::common::{TEST_SCENE_2, TEST_TRANSITION};

Loading…
Cancel
Save