Added ability to list all domains

main
Brian Picciano 1 year ago
parent f7107de96b
commit d93d4accba
  1. 1
      TODO
  2. 31
      src/service.rs
  3. 12
      src/service/http_tpl/domains.html
  4. 2
      src/service/http_tpl/index.html

@ -1,4 +1,3 @@
- list existing domains
- logging
- expect statements (pretend it's "expected", not "expect")
- map_unexpected annotation string

@ -288,6 +288,36 @@ where
self.render_page("/domain_sync.html", response)
}
pub fn domains(&self) -> SvcResponse {
#[derive(Serialize)]
struct Response {
domains: Vec<String>,
}
let domains = match self.domain_manager.all_domains() {
Ok(domains) => domains,
Err(e) => {
return self.render_error_page(500, format!("failed get all domains: {e}").as_str())
}
};
let domains: Vec<domain::Name> = match domains.into_iter().try_collect() {
Ok(domains) => domains,
Err(e) => {
return self.render_error_page(500, format!("failed get all domains: {e}").as_str())
}
};
let mut domains: Vec<String> = domains
.into_iter()
.map(|domain| domain.as_str().to_string())
.collect();
domains.sort();
self.render_page("/domains.html", Response { domains: domains })
}
}
pub async fn handle_request<DomainManager>(
@ -385,6 +415,7 @@ where
})
.await
}
(&Method::GET, "/domains.html") => svc.domains(),
_ => svc.render_error_page(404, "Page not found!"),
}
}

@ -0,0 +1,12 @@
<h2>All Domains</h2>
<p>Below are listed all domains which this Domiply instance is currently
serving</p>
<ul>
{{ #each data.domains }}
<li>
<a href="https://{{ this }}">{{ this }}</a>
</li>
{{ /each }}
</ul>

@ -29,7 +29,7 @@ been set up.</p>
<p>Or you can do any of the following alternative actions:</p>
<ul>
<li>List all existing domains (TODO)</li>
<li><a href="/domains.html">List all existing domains</a></li>
<li><a href="https://code.betamike.com/cryptic-io/domiply">View the Source Code</a></li>
<li><a href="mailto:me@mediocregopher.com">Report a Bug</a></li>
</ul>

Loading…
Cancel
Save