Skip to content

Commit

Permalink
Merge pull request #45 from unbekanntes-pferd/bugfix/0.17.1
Browse files Browse the repository at this point in the history
bugfix/0.17.1
  • Loading branch information
unbekanntes-pferd authored Nov 17, 2024
2 parents b23e487 + e35977d commit d77020a
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 15 deletions.
8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "dco3"
version = "0.17.0"
version = "0.17.1"
edition = "2021"
authors = ["Octavio Simone"]
repository = "https://github.com/unbekanntes-pferd/dco3"
Expand All @@ -16,8 +16,8 @@ description = "Async API wrapper for DRACOON in Rust."
[dependencies]
# http
reqwest = {version = "0.12", features = ["json", "stream"]}
reqwest-middleware = {version = "0.3", features = ["json"]}
reqwest-retry = "0.6"
reqwest-middleware = {version = "0.4", features = ["json"]}
reqwest-retry = "0.7"

# crypto
dco3_crypto = "0.7"
Expand Down Expand Up @@ -51,6 +51,6 @@ secrecy = {version = "0.10", features = ["serde"]}


[dev-dependencies]
mockito = "1.5"
mockito = "1"
tracing-subscriber = {version = "0.3", features = ["env-filter"]}

2 changes: 1 addition & 1 deletion src/client/models.rs
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ impl DracoonErrorResponse {
}

/// DRACOON `OAuth2` error response
#[derive(Deserialize, Debug, PartialEq)]
#[derive(Deserialize, Debug, PartialEq, Clone)]
#[serde(rename_all = "camelCase")]
pub struct DracoonAuthErrorResponse {
error: String,
Expand Down
70 changes: 62 additions & 8 deletions src/nodes/models/filters.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use super::NodeType;
#[derive(Debug, Clone)]
pub enum NodesFilter {
Name(FilterOperator, String),
Type(FilterOperator, NodeType),
Type(FilterOperator, NodeTypes),
Encrypted(FilterOperator, bool),
BranchVersion(FilterOperator, u64),
TimestampCreation(FilterOperator, String),
Expand All @@ -15,6 +15,26 @@ pub enum NodesFilter {
// TODO: add permission model enum in api/models.rs
}

#[derive(Debug, Clone)]
pub struct NodeTypes(Vec<NodeType>);

impl From<&NodeTypes> for String {
fn from(node_types: &NodeTypes) -> Self {
node_types
.0
.iter()
.map(String::from)
.collect::<Vec<_>>()
.join(":")
}
}

impl From<Vec<NodeType>> for NodeTypes {
fn from(node_types: Vec<NodeType>) -> Self {
NodeTypes(node_types)
}
}

impl FilterQuery for NodesFilter {
fn to_filter_string(&self) -> String {
match self {
Expand Down Expand Up @@ -93,15 +113,20 @@ impl NodesFilter {
}

pub fn is_file() -> Self {
NodesFilter::Type(FilterOperator::Eq, NodeType::File)
NodesFilter::Type(FilterOperator::Eq, vec![NodeType::File].into())
}

pub fn is_folder() -> Self {
NodesFilter::Type(FilterOperator::Eq, NodeType::Folder)
NodesFilter::Type(FilterOperator::Eq, vec![NodeType::Folder].into())
}

pub fn is_room() -> Self {
NodesFilter::Type(FilterOperator::Eq, NodeType::Room)
NodesFilter::Type(FilterOperator::Eq, vec![NodeType::Room].into())
}

pub fn is_types(val: Vec<NodeType>) -> Self {
let node_types = NodeTypes(val);
NodesFilter::Type(FilterOperator::Eq, node_types)
}
}

Expand All @@ -113,7 +138,7 @@ impl From<NodesFilter> for Box<dyn FilterQuery> {

#[derive(Debug, Clone)]
pub enum NodesSearchFilter {
Type(FilterOperator, NodeType),
Type(FilterOperator, NodeTypes),
FileType(FilterOperator, String),
Classification(FilterOperator, u8),
CreatedBy(FilterOperator, String),
Expand All @@ -134,15 +159,20 @@ pub enum NodesSearchFilter {

impl NodesSearchFilter {
pub fn is_file() -> Self {
NodesSearchFilter::Type(FilterOperator::Eq, NodeType::File)
NodesSearchFilter::Type(FilterOperator::Eq, vec![NodeType::File].into())
}

pub fn is_folder() -> Self {
NodesSearchFilter::Type(FilterOperator::Eq, NodeType::Folder)
NodesSearchFilter::Type(FilterOperator::Eq, vec![NodeType::Folder].into())
}

pub fn is_room() -> Self {
NodesSearchFilter::Type(FilterOperator::Eq, NodeType::Room)
NodesSearchFilter::Type(FilterOperator::Eq, vec![NodeType::Room].into())
}

pub fn is_types(val: Vec<NodeType>) -> Self {
let node_types = NodeTypes(val);
NodesSearchFilter::Type(FilterOperator::Eq, node_types)
}

pub fn is_favorite(val: bool) -> Self {
Expand Down Expand Up @@ -315,6 +345,24 @@ mod tests {
assert_eq!(filter.to_filter_string(), "type:eq:file");
}

#[test]
fn test_nodes_filter_is_room() {
let filter = NodesFilter::is_room();
assert_eq!(filter.to_filter_string(), "type:eq:room");
}

#[test]
fn test_nodes_filter_is_folder() {
let filter = NodesFilter::is_folder();
assert_eq!(filter.to_filter_string(), "type:eq:folder");
}

#[test]
fn test_nodes_filter_is_folder_room() {
let filter = NodesFilter::is_types(vec![NodeType::Folder, NodeType::Room]);
assert_eq!(filter.to_filter_string(), "type:eq:folder:room");
}

#[test]
fn test_nodes_filter_is_encrypted() {
let filter = NodesFilter::is_encrypted(true);
Expand Down Expand Up @@ -504,4 +552,10 @@ mod tests {
let filter = NodesSearchFilter::file_type_contains("jpg");
assert_eq!(filter.to_filter_string(), "fileType:cn:jpg");
}

#[test]
fn test_nodes_search_folder_room() {
let filter = NodesSearchFilter::is_types(vec![NodeType::Folder, NodeType::Room]);
assert_eq!(filter.to_filter_string(), "type:eq:folder:room");
}
}
4 changes: 2 additions & 2 deletions src/nodes/models/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -453,7 +453,7 @@ pub struct DownloadUrlResponse {
}

/// Error response for S3 requests (XML)
#[derive(Debug, Deserialize, PartialEq)]
#[derive(Debug, Deserialize, PartialEq, Clone)]
#[serde(rename_all = "PascalCase")]
pub struct S3XmlError {
code: Option<String>,
Expand All @@ -464,7 +464,7 @@ pub struct S3XmlError {
}

/// Error response for S3 requests
#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Clone)]
pub struct S3ErrorResponse {
pub status: StatusCode,
pub error: S3XmlError,
Expand Down

0 comments on commit d77020a

Please sign in to comment.