feat: use settings.page.base_domain to generate default deployment hostname
This commit is contained in:
parent
dd38dd05d1
commit
30be3a293d
1 changed files with 41 additions and 8 deletions
|
@ -15,6 +15,8 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use crate::settings::Settings;
|
||||||
|
|
||||||
// source: https://www.randomlists.com/data/nouns.json
|
// source: https://www.randomlists.com/data/nouns.json
|
||||||
const LEN: usize = 876;
|
const LEN: usize = 876;
|
||||||
const WORDLIST: [&str; LEN] = [
|
const WORDLIST: [&str; LEN] = [
|
||||||
|
@ -896,7 +898,22 @@ const WORDLIST: [&str; LEN] = [
|
||||||
"zoo",
|
"zoo",
|
||||||
];
|
];
|
||||||
|
|
||||||
pub fn get_random_subdomain() -> String {
|
struct ID<'a> {
|
||||||
|
first: &'a str,
|
||||||
|
second: &'a str,
|
||||||
|
third: &'a str,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> ID<'a> {
|
||||||
|
fn hostname(&self, base_domain: &str) -> String {
|
||||||
|
format!(
|
||||||
|
"{}-{}-{}.{}",
|
||||||
|
self.first, self.second, self.third, base_domain
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_random_id() -> ID<'static> {
|
||||||
use rand::{rngs::ThreadRng, thread_rng, Rng};
|
use rand::{rngs::ThreadRng, thread_rng, Rng};
|
||||||
|
|
||||||
let mut rng: ThreadRng = thread_rng();
|
let mut rng: ThreadRng = thread_rng();
|
||||||
|
@ -921,7 +938,16 @@ pub fn get_random_subdomain() -> String {
|
||||||
let first = WORDLIST[first];
|
let first = WORDLIST[first];
|
||||||
let second = WORDLIST[second];
|
let second = WORDLIST[second];
|
||||||
let third = WORDLIST[third];
|
let third = WORDLIST[third];
|
||||||
format!("{first}-{second}-{third}")
|
ID {
|
||||||
|
first,
|
||||||
|
second,
|
||||||
|
third,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_random_subdomain(s: &Settings) -> String {
|
||||||
|
let id = get_random_id();
|
||||||
|
id.hostname(&s.page.base_domain)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -929,11 +955,18 @@ mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_get_random_subdomain() {
|
fn test_subdomains() {
|
||||||
let sub = get_random_subdomain();
|
// test random ID
|
||||||
let splits: Vec<&str> = sub.split('-').collect();
|
let id = get_random_id();
|
||||||
assert_ne!(splits[0], splits[1]);
|
assert_ne!(id.first, id.second);
|
||||||
assert_ne!(splits[0], splits[2]);
|
assert_ne!(id.first, id.third);
|
||||||
assert_ne!(splits[1], splits[2]);
|
assert_ne!(id.third, id.second);
|
||||||
|
|
||||||
|
// test ID::hostname
|
||||||
|
let delimiter = "foobar21312";
|
||||||
|
assert_eq!(
|
||||||
|
id.hostname(delimiter),
|
||||||
|
format!("{}-{}-{}.{delimiter}", id.first, id.second, id.third,)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue