Refactor code

This commit is contained in:
spikecodes 2021-01-13 12:52:00 -08:00
parent 5ab88567de
commit 09c98c8da6
2 changed files with 39 additions and 23 deletions

View File

@ -1,5 +1,5 @@
// CRATES // CRATES
use crate::utils::{cookie, error, format_num, format_url, media, parse_rich_flair, param, prefs, request, rewrite_url, val, Comment, Flags, Flair, Post, Preferences}; use crate::utils::{cookie, error, format_num, format_url, media, param, parse_rich_flair, prefs, request, rewrite_url, val, Comment, Flags, Flair, Post, Preferences};
use actix_web::{HttpRequest, HttpResponse}; use actix_web::{HttpRequest, HttpResponse};
use async_recursion::async_recursion; use async_recursion::async_recursion;
@ -83,7 +83,11 @@ async fn parse_post(json: &serde_json::Value) -> Post {
body: rewrite_url(&val(post, "selftext_html")), body: rewrite_url(&val(post, "selftext_html")),
author: val(post, "author"), author: val(post, "author"),
author_flair: Flair { author_flair: Flair {
flair_parts: parse_rich_flair(val(post, "author_flair_type"), post["data"]["author_flair_richtext"].as_array(), post["data"]["author_flair_text"].as_str()), flair_parts: parse_rich_flair(
val(post, "author_flair_type"),
post["data"]["author_flair_richtext"].as_array(),
post["data"]["author_flair_text"].as_str(),
),
background_color: val(post, "author_flair_background_color"), background_color: val(post, "author_flair_background_color"),
foreground_color: val(post, "author_flair_text_color"), foreground_color: val(post, "author_flair_text_color"),
}, },
@ -93,7 +97,11 @@ async fn parse_post(json: &serde_json::Value) -> Post {
post_type, post_type,
thumbnail: format_url(val(post, "thumbnail").as_str()), thumbnail: format_url(val(post, "thumbnail").as_str()),
flair: Flair { flair: Flair {
flair_parts: parse_rich_flair(val(post, "link_flair_type"), post["data"]["link_flair_richtext"].as_array(), post["data"]["link_flair_text"].as_str()), flair_parts: parse_rich_flair(
val(post, "link_flair_type"),
post["data"]["link_flair_richtext"].as_array(),
post["data"]["link_flair_text"].as_str(),
),
background_color: val(post, "link_flair_background_color"), background_color: val(post, "link_flair_background_color"),
foreground_color: if val(post, "link_flair_text_color") == "dark" { foreground_color: if val(post, "link_flair_text_color") == "dark" {
"black".to_string() "black".to_string()
@ -146,7 +154,11 @@ async fn parse_comments(json: &serde_json::Value) -> Vec<Comment> {
time: OffsetDateTime::from_unix_timestamp(unix_time).format("%b %d %Y %H:%M UTC"), time: OffsetDateTime::from_unix_timestamp(unix_time).format("%b %d %Y %H:%M UTC"),
replies, replies,
flair: Flair { flair: Flair {
flair_parts: parse_rich_flair(val(&comment, "author_flair_type"), comment["data"]["author_flair_richtext"].as_array(), comment["data"]["author_flair_text"].as_str()), flair_parts: parse_rich_flair(
val(&comment, "author_flair_type"),
comment["data"]["author_flair_richtext"].as_array(),
comment["data"]["author_flair_text"].as_str(),
),
background_color: val(&comment, "author_flair_background_color"), background_color: val(&comment, "author_flair_background_color"),
foreground_color: val(&comment, "author_flair_text_color"), foreground_color: val(&comment, "author_flair_text_color"),
}, },

View File

@ -7,7 +7,7 @@ use base64::encode;
use regex::Regex; use regex::Regex;
use serde_json::{from_str, Value}; use serde_json::{from_str, Value};
use std::collections::HashMap; use std::collections::HashMap;
use time::{OffsetDateTime, Duration}; use time::{Duration, OffsetDateTime};
use url::Url; use url::Url;
// //
@ -183,11 +183,11 @@ pub async fn media(data: &serde_json::Value) -> (String, String) {
Some(gif) => { Some(gif) => {
post_type = "gif"; post_type = "gif";
format_url(gif["source"]["url"].as_str().unwrap_or_default()) format_url(gif["source"]["url"].as_str().unwrap_or_default())
}, }
None => { None => {
post_type = "image"; post_type = "image";
format_url(preview["source"]["url"].as_str().unwrap_or_default()) format_url(preview["source"]["url"].as_str().unwrap_or_default())
}, }
} }
} else if data["is_self"].as_bool().unwrap_or_default() { } else if data["is_self"].as_bool().unwrap_or_default() {
post_type = "self"; post_type = "self";
@ -207,16 +207,12 @@ pub fn parse_rich_flair(flair_type: String, rich_flair: Option<&Vec<Value>>, tex
let flair_part_type = part["e"].as_str().unwrap_or_default().to_string(); let flair_part_type = part["e"].as_str().unwrap_or_default().to_string();
let value = if flair_part_type == "text" { let value = if flair_part_type == "text" {
part["t"].as_str().unwrap_or_default().to_string() part["t"].as_str().unwrap_or_default().to_string()
} else if flair_part_type == "emoji" { } else if flair_part_type == "emoji" {
format_url(part["u"].as_str().unwrap_or_default()) format_url(part["u"].as_str().unwrap_or_default())
} else { } else {
"".to_string() "".to_string()
}; };
result.push(FlairPart { result.push(FlairPart { flair_part_type, value });
flair_part_type,
value,
});
} }
} else if flair_type == "text" && !text_flair.is_none() { } else if flair_type == "text" && !text_flair.is_none() {
result.push(FlairPart { result.push(FlairPart {
@ -293,7 +289,11 @@ pub async fn fetch_posts(path: &str, fallback_title: String) -> Result<(Vec<Post
body: rewrite_url(&val(post, "body_html")), body: rewrite_url(&val(post, "body_html")),
author: val(post, "author"), author: val(post, "author"),
author_flair: Flair { author_flair: Flair {
flair_parts: parse_rich_flair(val(post, "author_flair_type"), post["data"]["author_flair_richtext"].as_array(), post["data"]["author_flair_text"].as_str()), flair_parts: parse_rich_flair(
val(post, "author_flair_type"),
post["data"]["author_flair_richtext"].as_array(),
post["data"]["author_flair_text"].as_str(),
),
background_color: val(post, "author_flair_background_color"), background_color: val(post, "author_flair_background_color"),
foreground_color: val(post, "author_flair_text_color"), foreground_color: val(post, "author_flair_text_color"),
}, },
@ -304,7 +304,11 @@ pub async fn fetch_posts(path: &str, fallback_title: String) -> Result<(Vec<Post
media, media,
domain: val(post, "domain"), domain: val(post, "domain"),
flair: Flair { flair: Flair {
flair_parts: parse_rich_flair(val(post, "link_flair_type"), post["data"]["link_flair_richtext"].as_array(), post["data"]["link_flair_text"].as_str()), flair_parts: parse_rich_flair(
val(post, "link_flair_type"),
post["data"]["link_flair_richtext"].as_array(),
post["data"]["link_flair_text"].as_str(),
),
background_color: val(post, "link_flair_background_color"), background_color: val(post, "link_flair_background_color"),
foreground_color: if val(post, "link_flair_text_color") == "dark" { foreground_color: if val(post, "link_flair_text_color") == "dark" {
"black".to_string() "black".to_string()