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), And(Box, Box), 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, bits: Option, channels: Option, }, PrioCmp(Priority), } pub fn parse_filter(parts: &mut SplitWhitespace<'_>) -> Result { todo!() }