Merge pull request #5 from Scoder12/master

Add number format utility
This commit is contained in:
Spike 2020-12-07 11:00:38 -08:00 committed by GitHub
commit 293a4d5c50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 8 deletions

View File

@ -1,5 +1,5 @@
// CRATES
use crate::utils::{format_url, request, val, Comment, ErrorTemplate, Flair, Params, Post};
use crate::utils::{format_url, request, val, Comment, ErrorTemplate, Flair, Params, Post, format_num};
use actix_web::{get, http::StatusCode, web, HttpResponse, Result};
use askama::Template;
use chrono::{TimeZone, Utc};
@ -115,7 +115,7 @@ async fn parse_post(json: serde_json::Value) -> Result<Post, &'static str> {
body: markdown_to_html(post_data["data"]["selftext"].as_str().unwrap()).await,
author: val(post_data, "author").await,
url: val(post_data, "permalink").await,
score: if score > 1000 { format!("{}k", score / 1000) } else { score.to_string() },
score: format_num(score),
post_type: media.0,
media: media.1,
time: Utc.timestamp(unix_time, 0).format("%b %e %Y %H:%M UTC").to_string(),
@ -151,7 +151,7 @@ async fn parse_comments(json: serde_json::Value) -> Result<Vec<Comment>, &'stati
comments.push(Comment {
body: body,
author: val(comment, "author").await,
score: if score > 1000 { format!("{}k", score / 1000) } else { score.to_string() },
score: format_num(score),
time: Utc.timestamp(unix_time, 0).format("%b %e %Y %H:%M UTC").to_string(),
});
}

View File

@ -1,7 +1,8 @@
// CRATES
use crate::utils::{fetch_posts, format_url, request, val, ErrorTemplate, Params, Post, Subreddit};
use crate::utils::{fetch_posts, format_url, request, val, ErrorTemplate, Params, Post, Subreddit, format_num};
use actix_web::{get, http::StatusCode, web, HttpResponse, Result};
use askama::Template;
use std::convert::TryInto;
// STRUCTS
#[derive(Template)]
@ -89,8 +90,8 @@ async fn subreddit(sub: &String) -> Result<Subreddit, &'static str> {
title: val(&res, "title").await,
description: val(&res, "public_description").await,
icon: format_url(val(&res, "icon_img").await.as_str()).await,
members: if members > 1000 { format!("{}k", members / 1000) } else { members.to_string() },
active: if active > 1000 { format!("{}k", active / 1000) } else { active.to_string() },
members: format_num(members.try_into().unwrap()),
active: format_num(active.try_into().unwrap()),
};
Ok(sub)

View File

@ -76,7 +76,7 @@ pub struct ErrorTemplate {
}
//
// URL HANDLING
// FORMATTING
//
pub async fn format_url(url: &str) -> String {
@ -87,6 +87,10 @@ pub async fn format_url(url: &str) -> String {
return url.to_string();
}
pub fn format_num(num: i64) -> String {
return if num > 1000 { format!("{}k", num / 1000) } else { num.to_string() };
}
//
// JSON PARSING
//
@ -136,7 +140,7 @@ pub async fn fetch_posts(url: String, fallback_title: String) -> Result<(Vec<Pos
community: val(post, "subreddit").await,
body: val(post, "body").await,
author: val(post, "author").await,
score: if score > 1000 { format!("{}k", score / 1000) } else { score.to_string() },
score: format_num(score),
post_type: "link".to_string(),
media: img,
url: val(post, "permalink").await,