|
|
@@ -1,48 +1,12 @@
|
|
1
|
|
-use std::fs::File;
|
|
2
|
|
-use std::io::prelude::*;
|
|
3
|
|
-use std::io::{Error, ErrorKind};
|
|
4
|
|
-use std::path::PathBuf;
|
|
5
|
|
-
|
|
6
|
1
|
use dotenv;
|
|
7
|
|
-use serde::{Deserialize, Serialize};
|
|
8
|
|
-use serde_json;
|
|
|
2
|
+
|
|
9
|
3
|
use tide::utils::After;
|
|
10
|
4
|
|
|
11
|
5
|
mod fs;
|
|
12
|
6
|
mod middleware;
|
|
|
7
|
+mod post;
|
|
13
|
8
|
mod routes;
|
|
14
|
9
|
|
|
15
|
|
-#[derive(Debug, Serialize, Deserialize)]
|
|
16
|
|
-pub struct Post {
|
|
17
|
|
- id: String,
|
|
18
|
|
- title: String,
|
|
19
|
|
- body: String,
|
|
20
|
|
- date: String,
|
|
21
|
|
-}
|
|
22
|
|
-
|
|
23
|
|
-impl Post {
|
|
24
|
|
- async fn save(&mut self) -> std::io::Result<()> {
|
|
25
|
|
- let mut path: PathBuf = fs::get_posts_directory_path().await?;
|
|
26
|
|
- let filename = format!("{}.json", self.id);
|
|
27
|
|
- path = path.join(&filename);
|
|
28
|
|
- let mut file = File::create(&path)?;
|
|
29
|
|
- file.write_all(serde_json::to_string(&self)?.as_bytes())?;
|
|
30
|
|
- Ok(())
|
|
31
|
|
- }
|
|
32
|
|
-
|
|
33
|
|
- fn from_str(blob: &str) -> Result<Post, Error> {
|
|
34
|
|
- let mut post: Post = match serde_json::from_str(blob) {
|
|
35
|
|
- Ok(p) => Ok(p),
|
|
36
|
|
- Err(_) => Err(Error::new(
|
|
37
|
|
- ErrorKind::Other,
|
|
38
|
|
- format!("Error deserializing post"),
|
|
39
|
|
- )),
|
|
40
|
|
- }?;
|
|
41
|
|
- post.body = post.body.replace("\n", "<br>");
|
|
42
|
|
- Ok(post)
|
|
43
|
|
- }
|
|
44
|
|
-}
|
|
45
|
|
-
|
|
46
|
10
|
#[async_std::main]
|
|
47
|
11
|
async fn main() -> std::io::Result<()> {
|
|
48
|
12
|
dotenv::dotenv().ok();
|