mirror of
https://github.com/nullishamy/ferri.git
synced 2025-06-28 00:54:17 +00:00
feat: scaffold web elements
This commit is contained in:
parent
77fba1a082
commit
4167a2f8bb
6 changed files with 103 additions and 2 deletions
52
Cargo.lock
generated
52
Cargo.lock
generated
|
@ -110,6 +110,48 @@ dependencies = [
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.59.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "askama"
|
||||||
|
version = "0.14.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f75363874b771be265f4ffe307ca705ef6f3baa19011c149da8674a87f1b75c4"
|
||||||
|
dependencies = [
|
||||||
|
"askama_derive",
|
||||||
|
"itoa",
|
||||||
|
"percent-encoding",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "askama_derive"
|
||||||
|
version = "0.14.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "129397200fe83088e8a68407a8e2b1f826cf0086b21ccdb866a722c8bcd3a94f"
|
||||||
|
dependencies = [
|
||||||
|
"askama_parser",
|
||||||
|
"basic-toml",
|
||||||
|
"memchr",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"rustc-hash",
|
||||||
|
"serde",
|
||||||
|
"serde_derive",
|
||||||
|
"syn 2.0.100",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "askama_parser"
|
||||||
|
version = "0.14.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d6ab5630b3d5eaf232620167977f95eb51f3432fc76852328774afbd242d4358"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
"serde",
|
||||||
|
"serde_derive",
|
||||||
|
"winnow",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-stream"
|
name = "async-stream"
|
||||||
version = "0.3.6"
|
version = "0.3.6"
|
||||||
|
@ -206,6 +248,15 @@ version = "1.7.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3"
|
checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "basic-toml"
|
||||||
|
version = "0.1.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a"
|
||||||
|
dependencies = [
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "binascii"
|
name = "binascii"
|
||||||
version = "0.1.4"
|
version = "0.1.4"
|
||||||
|
@ -2156,6 +2207,7 @@ dependencies = [
|
||||||
name = "server"
|
name = "server"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"askama",
|
||||||
"chrono",
|
"chrono",
|
||||||
"main",
|
"main",
|
||||||
"rand 0.8.5",
|
"rand 0.8.5",
|
||||||
|
|
|
@ -18,4 +18,5 @@ tracing = { workspace = true }
|
||||||
tracing-subscriber = { workspace = true }
|
tracing-subscriber = { workspace = true }
|
||||||
thiserror = { workspace = true }
|
thiserror = { workspace = true }
|
||||||
serde_json = { workspace = true }
|
serde_json = { workspace = true }
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
|
askama = "0.14.0"
|
||||||
|
|
20
ferri-server/src/endpoints/admin/mod.rs
Normal file
20
ferri-server/src/endpoints/admin/mod.rs
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
use rocket::{get, post, response::content::RawHtml};
|
||||||
|
use askama::Template;
|
||||||
|
|
||||||
|
#[derive(Template)]
|
||||||
|
#[template(path = "index.html")]
|
||||||
|
struct IndexTemplate {
|
||||||
|
val: String
|
||||||
|
}
|
||||||
|
|
||||||
|
#[post("/clicked")]
|
||||||
|
pub async fn button_clicked() -> RawHtml<String> {
|
||||||
|
let tmpl = IndexTemplate { val: "clicked".to_string() };
|
||||||
|
RawHtml(tmpl.render().unwrap())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[get("/")]
|
||||||
|
pub async fn index() -> RawHtml<String> {
|
||||||
|
let tmpl = IndexTemplate { val: "test".to_string() };
|
||||||
|
RawHtml(tmpl.render().unwrap())
|
||||||
|
}
|
|
@ -4,6 +4,8 @@ pub mod oauth;
|
||||||
pub mod user;
|
pub mod user;
|
||||||
|
|
||||||
pub mod api;
|
pub mod api;
|
||||||
|
pub mod admin;
|
||||||
|
|
||||||
pub mod custom;
|
pub mod custom;
|
||||||
pub mod inbox;
|
pub mod inbox;
|
||||||
pub mod well_known;
|
pub mod well_known;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use endpoints::{
|
use endpoints::{
|
||||||
api::{self, timeline},
|
api::{self, timeline},
|
||||||
custom, inbox, oauth, user, well_known,
|
admin, custom, inbox, oauth, user, well_known,
|
||||||
};
|
};
|
||||||
|
|
||||||
use tracing_subscriber::fmt;
|
use tracing_subscriber::fmt;
|
||||||
|
@ -122,6 +122,13 @@ pub fn launch(cfg: Config) -> Rocket<Build> {
|
||||||
.attach(Db::init())
|
.attach(Db::init())
|
||||||
.attach(cors::CORS)
|
.attach(cors::CORS)
|
||||||
.mount("/assets", rocket::fs::FileServer::from("./assets"))
|
.mount("/assets", rocket::fs::FileServer::from("./assets"))
|
||||||
|
.mount(
|
||||||
|
"/admin",
|
||||||
|
routes![
|
||||||
|
admin::index,
|
||||||
|
admin::button_clicked
|
||||||
|
]
|
||||||
|
)
|
||||||
.mount(
|
.mount(
|
||||||
"/",
|
"/",
|
||||||
routes![
|
routes![
|
||||||
|
|
19
ferri-server/templates/index.html
Normal file
19
ferri-server/templates/index.html
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<base href="https://ferri.amy.mov/admin/">
|
||||||
|
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>Ferri Test</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/dbc8023a08964f513c20796e170cb91ce891df3f/packages/tailwindcss/preflight.css">
|
||||||
|
<script src="https://unpkg.com/htmx.org@2.0.4"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<button hx-post="clicked" hx-swap="outerHTML">
|
||||||
|
Click Me {{ val }}
|
||||||
|
</button>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Add table
Add a link
Reference in a new issue