Start building a music player server #17

Merged
savanni merged 15 commits from music-player into main 2023-02-11 17:59:16 +00:00
13 changed files with 157 additions and 13 deletions
Showing only changes of commit 2857982b82 - Show all commits

View File

@ -1,3 +1,15 @@
/*
Copyright 2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
use coordinates::hex_map; use coordinates::hex_map;
use std::path::PathBuf; use std::path::PathBuf;

View File

@ -1,3 +1,15 @@
/*
Copyright 2022-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
/// Ĉi-tiu modulo enhavas la elementojn por kub-koordinato. /// Ĉi-tiu modulo enhavas la elementojn por kub-koordinato.
/// ///
/// This code is based on https://www.redblobgames.com/grids/hexagons/ /// This code is based on https://www.redblobgames.com/grids/hexagons/

View File

@ -1,3 +1,15 @@
/*
Copyright 2020-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
use date_time_tz::DateTimeTz; use date_time_tz::DateTimeTz;
use types::Recordable; use types::Recordable;
@ -8,14 +20,12 @@ pub trait Criteria {
fn apply<T: Recordable>(&self, record: &T) -> bool; fn apply<T: Recordable>(&self, record: &T) -> bool;
} }
/// Specify two criteria that must both be matched. /// Specify two criteria that must both be matched.
pub struct And<A: Criteria, B: Criteria> { pub struct And<A: Criteria, B: Criteria> {
pub lside: A, pub lside: A,
pub rside: B, pub rside: B,
} }
impl<A, B> Criteria for And<A, B> impl<A, B> Criteria for And<A, B>
where where
A: Criteria, A: Criteria,
@ -26,14 +36,12 @@ where
} }
} }
/// Specify two criteria, either of which may be matched. /// Specify two criteria, either of which may be matched.
pub struct Or<A: Criteria, B: Criteria> { pub struct Or<A: Criteria, B: Criteria> {
pub lside: A, pub lside: A,
pub rside: B, pub rside: B,
} }
/// Specify the starting time for a search. This consists of a UTC timestamp and a specifier as to /// Specify the starting time for a search. This consists of a UTC timestamp and a specifier as to
/// whether the exact time is included in the search criteria. /// whether the exact time is included in the search criteria.
pub struct StartTime { pub struct StartTime {
@ -41,7 +49,6 @@ pub struct StartTime {
pub incl: bool, pub incl: bool,
} }
impl Criteria for StartTime { impl Criteria for StartTime {
fn apply<T: Recordable>(&self, record: &T) -> bool { fn apply<T: Recordable>(&self, record: &T) -> bool {
if self.incl { if self.incl {
@ -52,7 +59,6 @@ impl Criteria for StartTime {
} }
} }
/// Specify the ending time for a search. This consists of a UTC timestamp and a specifier as to /// Specify the ending time for a search. This consists of a UTC timestamp and a specifier as to
/// whether the exact time is included in the search criteria. /// whether the exact time is included in the search criteria.
pub struct EndTime { pub struct EndTime {
@ -60,7 +66,6 @@ pub struct EndTime {
pub incl: bool, pub incl: bool,
} }
impl Criteria for EndTime { impl Criteria for EndTime {
fn apply<T: Recordable>(&self, record: &T) -> bool { fn apply<T: Recordable>(&self, record: &T) -> bool {
if self.incl { if self.incl {
@ -71,7 +76,6 @@ impl Criteria for EndTime {
} }
} }
/// Specify a list of tags that must exist on the record. /// Specify a list of tags that must exist on the record.
pub struct Tags { pub struct Tags {
pub tags: Vec<String>, pub tags: Vec<String>,
@ -80,13 +84,10 @@ pub struct Tags {
impl Criteria for Tags { impl Criteria for Tags {
fn apply<T: Recordable>(&self, record: &T) -> bool { fn apply<T: Recordable>(&self, record: &T) -> bool {
let record_tags = record.tags(); let record_tags = record.tags();
self.tags self.tags.iter().all(|v| record_tags.contains(v))
.iter()
.all(|v| record_tags.contains(v))
} }
} }
/// Specify a criteria that searches for records matching an exact time. /// Specify a criteria that searches for records matching an exact time.
pub fn exact_time(time: DateTimeTz) -> And<StartTime, EndTime> { pub fn exact_time(time: DateTimeTz) -> And<StartTime, EndTime> {
And { And {
@ -98,7 +99,6 @@ pub fn exact_time(time: DateTimeTz) -> And<StartTime, EndTime> {
} }
} }
/// Specify a criteria that searches for all records within a time range. /// Specify a criteria that searches for all records within a time range.
pub fn time_range( pub fn time_range(
start: DateTimeTz, start: DateTimeTz,

View File

@ -1,3 +1,15 @@
/*
Copyright 2020-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
extern crate chrono; extern crate chrono;
extern crate chrono_tz; extern crate chrono_tz;

View File

@ -1,3 +1,15 @@
/*
Copyright 2020-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
// NOTE: this module is a candidate for extraction into its own crate, or should be replaced with // NOTE: this module is a candidate for extraction into its own crate, or should be replaced with
// an existing crate. // an existing crate.

View File

@ -1,3 +1,15 @@
/*
Copyright 2020-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
/*! An Embedded Time Series Database /*! An Embedded Time Series Database
This library provides a low-intensity time series database meant to be embedded inside of an This library provides a low-intensity time series database meant to be embedded inside of an

View File

@ -1,3 +1,15 @@
/*
Copyright 2020-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
extern crate serde; extern crate serde;
extern crate serde_json; extern crate serde_json;
extern crate uuid; extern crate uuid;

View File

@ -1,3 +1,15 @@
/*
Copyright 2020-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
use date_time_tz::DateTimeTz; use date_time_tz::DateTimeTz;
use serde::de::DeserializeOwned; use serde::de::DeserializeOwned;
use serde::ser::Serialize; use serde::ser::Serialize;

View File

@ -1,3 +1,15 @@
/*
Copyright 2020-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
#[macro_use] #[macro_use]
extern crate serde_derive; extern crate serde_derive;

View File

@ -1,3 +1,15 @@
/*
Copyright 2020-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
//! Provide a more ergonomic interface to the base Fluent library //! Provide a more ergonomic interface to the base Fluent library
//! //!
//! The Fluent class makes it easier to load translation bundles with language fallbacks and to go //! The Fluent class makes it easier to load translation bundles with language fallbacks and to go

View File

@ -1,3 +1,15 @@
/*
Copyright 2020-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
extern crate chrono; extern crate chrono;
extern crate chrono_tz; extern crate chrono_tz;

View File

@ -1,3 +1,15 @@
/*
Copyright 2020-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
extern crate chrono; extern crate chrono;
extern crate chrono_tz; extern crate chrono_tz;
extern crate international_fixed_calendar as IFC; extern crate international_fixed_calendar as IFC;

View File

@ -1,3 +1,15 @@
/*
Copyright 2020-2023, Savanni D'Gerinel <savanni@luminescent-dreams.com>
This file is part of the Luminescent Dreams Tools.
Luminescent Dreams Tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Luminescent Dreams Tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Lumeto. If not, see <https://www.gnu.org/licenses/>.
*/
use chrono::{Datelike, Utc}; use chrono::{Datelike, Utc};
use international_fixed_calendar as IFC; use international_fixed_calendar as IFC;
use iron::headers; use iron::headers;