46 lines
1.0 KiB
Rust
46 lines
1.0 KiB
Rust
use std::str::SplitWhitespace;
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
use crate::{
|
|
commands::RequestParserError,
|
|
common::{Priority, Tag},
|
|
};
|
|
|
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
|
pub enum CaseSensitivity {
|
|
CaseSensitive,
|
|
CaseInsensitive,
|
|
CommandDependent,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
|
pub enum Filter {
|
|
Not(Box<Filter>),
|
|
And(Box<Filter>, Box<Filter>),
|
|
|
|
EqTag(Tag, String, CaseSensitivity),
|
|
Contains(Tag, String, CaseSensitivity),
|
|
StartsWith(Tag, String, CaseSensitivity),
|
|
PerlRegex(Tag, String),
|
|
NegPerlRegex(Tag, String),
|
|
EqUri(String),
|
|
Base(String),
|
|
ModifiedSince(u64),
|
|
AudioFormatEq {
|
|
sample_rate: u32,
|
|
bits: u8,
|
|
channels: u8,
|
|
},
|
|
AudioFormatEqMask {
|
|
sample_rate: Option<u32>,
|
|
bits: Option<u8>,
|
|
channels: Option<u8>,
|
|
},
|
|
PrioCmp(Priority),
|
|
}
|
|
|
|
pub fn parse_filter(parts: &mut SplitWhitespace<'_>) -> Result<Filter, RequestParserError> {
|
|
todo!()
|
|
}
|