bump rust edition to 2018 #563

Closed
trinity-1686a wants to merge 5 commits from edition-2018 into master
114 changed files with 429 additions and 539 deletions

22
Cargo.lock generated
View file

@ -373,14 +373,6 @@ dependencies = [
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "colored"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "combine"
version = "3.6.7"
@ -1775,7 +1767,6 @@ dependencies = [
"askama_escape 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"atom_syndication 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"colored 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ctrlc 3.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"diesel 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"dotenv 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1795,7 +1786,6 @@ dependencies = [
"rocket_contrib 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rocket_csrf 0.1.0 (git+https://github.com/fdb-hiroshima/rocket_csrf?rev=4a72ea2ec716cb0b26188fb00bccf2ef7d1e031c)",
"rocket_i18n 0.4.0 (git+https://github.com/Plume-org/rocket_i18n?rev=e922afa7c366038b3433278c03b1456b346074f2)",
"rpassword 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rsass 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)",
"ructe 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)",
"runtime-fmt 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1813,7 +1803,6 @@ name = "plume-api"
version = "0.3.0"
dependencies = [
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -1839,13 +1828,11 @@ dependencies = [
"chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)",
"pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"reqwest 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)",
"rocket 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -1862,7 +1849,7 @@ dependencies = [
[[package]]
name = "plume-macro"
version = "0.1.0"
version = "0.3.0"
dependencies = [
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1888,13 +1875,12 @@ dependencies = [
"openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)",
"plume-api 0.3.0",
"plume-common 0.3.0",
"plume-macro 0.1.0",
"plume-macro 0.3.0",
"reqwest 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)",
"rocket 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rocket_i18n 0.4.0 (git+https://github.com/Plume-org/rocket_i18n?rev=e922afa7c366038b3433278c03b1456b346074f2)",
"scheduled-thread-pool 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"tantivy 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2499,6 +2485,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
name = "serde"
version = "1.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "serde_derive"
@ -3303,7 +3292,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878"
"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e"
"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
"checksum colored 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6e9a455e156a4271e12fd0246238c380b1e223e3736663c7a18ed8b6362028a9"
"checksum combine 3.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d2623b3542b48f4427e15ddd4995186decb594ebbd70271463886584b4a114b9"
"checksum conv 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"
"checksum cookie 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1465f8134efa296b4c19db34d909637cb2bf0f7aaf21299e23e18fa29ac557cf"

View file

@ -3,12 +3,12 @@ authors = ["Plume contributors"]
name = "plume"
version = "0.3.0"
repository = "https://github.com/Plume-org/Plume"
edition = "2018"
[dependencies]
activitypub = "0.1.3"
askama_escape = "0.1"
atom_syndication = "0.6"
colored = "1.7"
dotenv = "0.13"
gettext = { git = "https://github.com/Plume-org/gettext/", rev = "294c54d74c699fbc66502b480a37cc66c1daa7f3" }
gettext-macros = { git = "https://github.com/Plume-org/gettext-macros/", rev = "a7c605f7edd6bfbfbfe7778026bfefd88d82db10" }
@ -21,7 +21,6 @@ num_cpus = "1.0"
rocket = "0.4.0"
rocket_contrib = { version = "0.4.0", features = ["json"] }
rocket_i18n = { git = "https://github.com/Plume-org/rocket_i18n", rev = "e922afa7c366038b3433278c03b1456b346074f2" }
rpassword = "2.0"
runtime-fmt = "0.3.0"
scheduled-thread-pool = "0.2.0"
serde = "1.0"

View file

@ -2,7 +2,7 @@
name = "plume-api"
version = "0.3.0"
authors = ["Plume contributors"]
edition = "2018"
[dependencies]
serde = "1.0"
serde_derive = "1.0"
serde = { version = "1.0", features = ["derive"] }

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
#[derive(Clone, Serialize, Deserialize)]
pub struct NewAppData {
pub name: String,

View file

@ -1,6 +1,2 @@
extern crate serde;
#[macro_use]
extern crate serde_derive;
pub mod apps;
pub mod posts;

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Serialize, Deserialize)]
pub struct NewPostData {
pub title: String,

View file

@ -2,6 +2,7 @@
name = "plume-cli"
version = "0.3.0"
authors = ["Plume contributors"]
edition = "2018"
[[bin]]
name = "plm"

View file

@ -1,9 +1,3 @@
extern crate clap;
extern crate diesel;
extern crate dotenv;
extern crate plume_models;
extern crate rpassword;
use clap::App;
use diesel::Connection;
use plume_models::{Connection as Conn, CONFIG};

View file

@ -1,7 +1,6 @@
use clap::{App, Arg, ArgMatches, SubCommand};
use plume_models::{instance::Instance, users::*, Connection};
use rpassword;
use std::io::{self, Write};
pub fn command<'a, 'b>() -> App<'a, 'b> {

View file

@ -2,6 +2,7 @@
name = "plume-common"
version = "0.3.0"
authors = ["Plume contributors"]
edition = "2018"
[dependencies]
activitypub = "0.1.1"
@ -11,12 +12,10 @@ array_tool = "1.0"
base64 = "0.10"
heck = "0.3.0"
hex = "0.3"
hyper = "0.12.20"
openssl = "0.10.15"
rocket = "0.4.0"
reqwest = "0.9"
serde = "1.0"
serde_derive = "1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
[dependencies.chrono]

View file

@ -1,4 +1,5 @@
use activitypub::{Activity, Link, Object};
use activitystreams_derive::{Properties, UnitString};
use array_tool::vec::Uniq;
use reqwest::ClientBuilder;
use rocket::{
@ -7,7 +8,8 @@ use rocket::{
response::{Responder, Response},
Outcome,
};
use serde_json;
use serde::{Deserialize, Serialize};
use serde_json::json;
use self::sign::Signable;
@ -63,7 +65,7 @@ impl<T> ActivityStream<T> {
}
impl<'r, O: Object> Responder<'r> for ActivityStream<O> {
fn respond_to(self, request: &Request) -> Result<Response<'r>, Status> {
fn respond_to(self, request: &Request<'_>) -> Result<Response<'r>, Status> {
let mut json = serde_json::to_value(&self.0).map_err(|_| Status::InternalServerError)?;
json["@context"] = context();
serde_json::to_string(&json).respond_to(request).map(|r| {

View file

@ -1,12 +1,11 @@
use base64;
use chrono::{offset::Utc, DateTime};
use openssl::hash::{Hasher, MessageDigest};
use reqwest::header::{HeaderMap, HeaderValue, ACCEPT, CONTENT_TYPE, DATE, USER_AGENT};
use std::ops::Deref;
use std::time::SystemTime;
use activity_pub::sign::Signer;
use activity_pub::{ap_accept_header, AP_CONTENT_TYPE};
use crate::activity_pub::sign::Signer;
use crate::activity_pub::{ap_accept_header, AP_CONTENT_TYPE};
const PLUME_USER_AGENT: &str = concat!("Plume/", env!("CARGO_PKG_VERSION"));

View file

@ -1,10 +1,8 @@
use super::request;
use base64;
use chrono::{naive::NaiveDateTime, DateTime, Duration, Utc};
use hex;
use openssl::{pkey::PKey, rsa::Rsa, sha::sha256};
use rocket::http::HeaderMap;
use serde_json;
use serde_json::json;
/// Returns (public key, private key)
pub fn gen_keypair() -> (Vec<u8>, Vec<u8>) {
@ -131,7 +129,7 @@ impl SignatureValidity {
pub fn verify_http_headers<S: Signer + ::std::fmt::Debug>(
sender: &S,
all_headers: &HeaderMap,
all_headers: &HeaderMap<'_>,
data: &request::Digest,
) -> SignatureValidity {
let sig_header = all_headers.get_one("Signature");

View file

@ -1,23 +1,4 @@
#![feature(custom_attribute, associated_type_defaults)]
extern crate activitypub;
#[macro_use]
extern crate activitystreams_derive;
extern crate activitystreams_traits;
extern crate array_tool;
extern crate base64;
extern crate chrono;
extern crate heck;
extern crate hex;
extern crate openssl;
extern crate pulldown_cmark;
extern crate reqwest;
extern crate rocket;
extern crate serde;
#[macro_use]
extern crate serde_derive;
#[macro_use]
extern crate serde_json;
#![feature(associated_type_defaults)]
pub mod activity_pub;
pub mod utils;

View file

@ -46,7 +46,7 @@ enum State {
Ready,
}
fn to_inline(tag: Tag) -> Tag {
fn to_inline(tag: Tag<'_>) -> Tag<'_> {
match tag {
Tag::Header(_) | Tag::Table(_) | Tag::TableHead | Tag::TableRow | Tag::TableCell => {
Tag::Paragraph
@ -97,7 +97,7 @@ fn inline_tags<'a>(
}
}
pub type MediaProcessor<'a> = Box<'a + Fn(i32) -> Option<(String, Option<String>)>>;
pub type MediaProcessor<'a> = Box<dyn 'a + Fn(i32) -> Option<(String, Option<String>)>>;
fn process_image<'a, 'b>(
evt: Event<'a>,
@ -160,7 +160,7 @@ pub fn md_to_html<'a>(
) -> (String, HashSet<String>, HashSet<String>) {
let parser = Parser::new_ext(md, Options::all());
let (parser, mentions, hashtags): (Vec<Event>, Vec<String>, Vec<String>) = parser
let (parser, mentions, hashtags): (Vec<Event<'_>>, Vec<String>, Vec<String>) = parser
// Flatten text because pulldown_cmark break #hashtag in two individual text elements
.scan(None, flatten_text)
.flat_map(IntoIterator::into_iter)

View file

@ -2,10 +2,11 @@
name = "plume-front"
version = "0.3.0"
authors = ["Plume contributors"]
edition = "2018"
[dependencies]
stdweb = "0.4"
gettext = { git = "https://github.com/Plume-org/gettext/", rev = "294c54d74c699fbc66502b480a37cc66c1daa7f3" }
gettext-macros = { git = "https://github.com/Plume-org/gettext-macros/", rev = "a7c605f7edd6bfbfbfe7778026bfefd88d82db10" }
gettext-utils = { git = "https://github.com/Plume-org/gettext-macros/", rev = "a7c605f7edd6bfbfbfe7778026bfefd88d82db10" }
lazy_static = "1.3"
lazy_static = "1.3"

View file

@ -1,8 +1,9 @@
use crate::CATALOG;
use gettext_macros::i18n;
use stdweb::{
unstable::{TryFrom, TryInto},
web::{event::*, html_element::*, *},
};
use CATALOG;
macro_rules! mv {
( $( $var:ident ),* => $exp:expr ) => {

View file

@ -1,14 +1,11 @@
#![recursion_limit = "128"]
#![feature(decl_macro, proc_macro_hygiene, try_trait)]
extern crate gettext;
#[macro_use]
extern crate gettext_macros;
#[macro_use]
extern crate lazy_static;
#[macro_use]
extern crate stdweb;
use gettext_macros::{compile_i18n, include_i18n, init_i18n};
use lazy_static::lazy_static;
use stdweb::web::{event::*, *};
init_i18n!(

View file

@ -1,10 +1,8 @@
[package]
authors = ["Plume contributors"]
name = "plume-macro"
version = "0.1.0"
authors = ["Trinity Pointard <trinity.pointard@insa-rennes.fr>"]
version = "0.3.0"
edition = "2018"
description = "Plume procedural macros"
license = "AGPLv3"
[lib]
proc-macro = true

View file

@ -1,8 +1,6 @@
#![recursion_limit = "128"]
extern crate proc_macro;
#[macro_use]
extern crate quote;
extern crate syn;
use quote::quote;
use proc_macro::TokenStream;
use proc_macro2::TokenStream as TokenStream2;
@ -71,12 +69,6 @@ pub fn import_migrations(input: TokenStream) -> TokenStream {
.map(file_to_migration)
.collect::<Vec<_>>();
/*
enum Action {
Sql(&'static str),
Function(&'static Fn(&Connection, &Path) -> Result<()>)
}*/
quote!(
ImportedMigrations(
&[#(ComplexMigration{name: #migrations_name, up: #migrations_up, down: #migrations_down}),*]

View file

@ -2,6 +2,7 @@
name = "plume-models"
version = "0.3.0"
authors = ["Plume contributors"]
edition = "2018"
[dependencies]
activitypub = "0.1.1"
@ -18,8 +19,7 @@ rocket = "0.4.0"
rocket_i18n = { git = "https://github.com/Plume-org/rocket_i18n", rev = "e922afa7c366038b3433278c03b1456b346074f2" }
reqwest = "0.9"
scheduled-thread-pool = "0.2.0"
serde = "1.0"
serde_derive = "1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tantivy = "0.9.1"
url = "1.7"

View file

@ -4,7 +4,7 @@ use rocket::{
Outcome,
};
use users::User;
use crate::users::User;
/// Wrapper around User to use as a request guard on pages reserved to admins.
pub struct Admin(pub User);

View file

@ -6,9 +6,9 @@ use rocket::{
Outcome,
};
use db_conn::DbConn;
use schema::api_tokens;
use {Error, Result};
use crate::db_conn::DbConn;
use crate::schema::api_tokens;
use crate::{Error, Result};
#[derive(Clone, Queryable)]
pub struct ApiToken {

View file

@ -1,8 +1,9 @@
use chrono::NaiveDateTime;
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
use serde::Serialize;
use schema::apps;
use {Error, Result};
use crate::schema::apps;
use crate::{Error, Result};
#[derive(Clone, Queryable, Serialize)]
pub struct App {

View file

@ -1,7 +1,7 @@
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
use schema::blog_authors;
use {Error, Result};
use crate::schema::blog_authors;
use crate::{Error, Result};
#[derive(Clone, Queryable, Identifiable)]
pub struct BlogAuthor {

View file

@ -11,18 +11,18 @@ use serde_json;
use url::Url;
use webfinger::*;
use instance::*;
use medias::Media;
use crate::instance::*;
use crate::medias::Media;
use crate::posts::Post;
use crate::safe_string::SafeString;
use crate::schema::blogs;
use crate::search::Searcher;
use crate::users::User;
use crate::{Connection, Error, PlumeRocket, Result};
use plume_common::activity_pub::{
inbox::{AsActor, FromId},
sign, ActivityStream, ApSignature, Id, IntoId, PublicKey, Source,
};
use posts::Post;
use safe_string::SafeString;
use schema::blogs;
use search::Searcher;
use users::User;
use {Connection, Error, PlumeRocket, Result};
pub type CustomGroup = CustomObject<ApSignature, Group>;
@ -99,8 +99,8 @@ impl Blog {
}
pub fn list_authors(&self, conn: &Connection) -> Result<Vec<User>> {
use schema::blog_authors;
use schema::users;
use crate::schema::blog_authors;
use crate::schema::users;
let authors_ids = blog_authors::table
.filter(blog_authors::blog_id.eq(self.id))
.select(blog_authors::author_id);
@ -111,7 +111,7 @@ impl Blog {
}
pub fn count_authors(&self, conn: &Connection) -> Result<i64> {
use schema::blog_authors;
use crate::schema::blog_authors;
blog_authors::table
.filter(blog_authors::blog_id.eq(self.id))
.count()
@ -120,7 +120,7 @@ impl Blog {
}
pub fn find_for_author(conn: &Connection, author: &User) -> Result<Vec<Blog>> {
use schema::blog_authors;
use crate::schema::blog_authors;
let author_ids = blog_authors::table
.filter(blog_authors::author_id.eq(author.id))
.select(blog_authors::blog_id);
@ -456,14 +456,14 @@ impl NewBlog {
#[cfg(test)]
pub(crate) mod tests {
use super::*;
use blog_authors::*;
use crate::blog_authors::*;
use crate::instance::tests as instance_tests;
use crate::medias::NewMedia;
use crate::search::tests::get_searcher;
use crate::tests::{db, rockets};
use crate::users::tests as usersTests;
use crate::Connection as Conn;
use diesel::Connection;
use instance::tests as instance_tests;
use medias::NewMedia;
use search::tests::get_searcher;
use tests::{db, rockets};
use users::tests as usersTests;
use Connection as Conn;
pub(crate) fn fill_database(conn: &Conn) -> (Vec<User>, Vec<Blog>) {
instance_tests::fill_database(conn);

View file

@ -1,9 +1,9 @@
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
use comments::Comment;
use schema::comment_seers;
use users::User;
use {Connection, Error, Result};
use crate::comments::Comment;
use crate::schema::comment_seers;
use crate::users::User;
use crate::{Connection, Error, Result};
#[derive(Queryable, Clone)]
pub struct CommentSeers {

View file

@ -9,21 +9,21 @@ use serde_json;
use std::collections::HashSet;
use comment_seers::{CommentSeers, NewCommentSeers};
use instance::Instance;
use medias::Media;
use mentions::Mention;
use notifications::*;
use crate::comment_seers::{CommentSeers, NewCommentSeers};
use crate::instance::Instance;
use crate::medias::Media;
use crate::mentions::Mention;
use crate::notifications::*;
use crate::posts::Post;
use crate::safe_string::SafeString;
use crate::schema::comments;
use crate::users::User;
use crate::{Connection, Error, PlumeRocket, Result};
use plume_common::activity_pub::{
inbox::{AsObject, FromId},
Id, IntoId, PUBLIC_VISIBILITY,
};
use plume_common::utils;
use posts::Post;
use safe_string::SafeString;
use schema::comments;
use users::User;
use {Connection, Error, PlumeRocket, Result};
#[derive(Queryable, Identifiable, Clone, AsChangeset)]
pub struct Comment {
@ -77,7 +77,7 @@ impl Comment {
}
pub fn count_local(conn: &Connection) -> Result<i64> {
use schema::users;
use crate::schema::users;
let local_authors = users::table
.filter(users::instance_id.eq(Instance::get_local(conn)?.id))
.select(users::id);

View file

@ -1,5 +1,7 @@
use lazy_static::lazy_static;
use rocket::config::Limits;
use rocket::Config as RocketConfig;
use serde::Serialize;
use std::env::{self, var};
#[cfg(not(test))]

View file

@ -10,7 +10,7 @@ use rocket::{
};
use std::ops::Deref;
use Connection;
use crate::Connection;
pub type DbPool = Pool<ConnectionManager<Connection>>;
@ -26,7 +26,7 @@ impl<'a, 'r> FromRequest<'a, 'r> for DbConn {
type Error = ();
fn from_request(request: &'a Request<'r>) -> request::Outcome<Self, Self::Error> {
let pool = request.guard::<State<DbPool>>()?;
let pool = request.guard::<State<'_, DbPool>>()?;
match pool.get() {
Ok(conn) => Outcome::Success(DbConn(conn)),
Err(_) => Outcome::Failure((Status::ServiceUnavailable, ())),

View file

@ -1,16 +1,16 @@
use activitypub::activity::{Accept, Follow as FollowAct, Undo};
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl, SaveChangesDsl};
use notifications::*;
use crate::notifications::*;
use crate::schema::follows;
use crate::users::User;
use crate::{ap_url, Connection, Error, PlumeRocket, Result, CONFIG};
use plume_common::activity_pub::{
broadcast,
inbox::{AsActor, AsObject, FromId},
sign::Signer,
Id, IntoId, PUBLIC_VISIBILITY,
};
use schema::follows;
use users::User;
use {ap_url, Connection, Error, PlumeRocket, Result, CONFIG};
#[derive(Clone, Queryable, Identifiable, Associations, AsChangeset)]
#[belongs_to(User, foreign_key = "following_id")]
@ -213,9 +213,9 @@ impl IntoId for Follow {
#[cfg(test)]
mod tests {
use super::*;
use crate::tests::db;
use crate::users::tests as user_tests;
use diesel::Connection;
use tests::db;
use users::tests as user_tests;
#[test]
fn test_id() {

View file

@ -71,6 +71,7 @@ pub(crate) mod tests {
use crate::tests::rockets;
use crate::PlumeRocket;
use diesel::Connection;
use serde_json::json;
pub fn fill_database(
rockets: &PlumeRocket,

View file

@ -2,13 +2,13 @@ use chrono::NaiveDateTime;
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
use std::iter::Iterator;
use ap_url;
use medias::Media;
use crate::ap_url;
use crate::medias::Media;
use crate::safe_string::SafeString;
use crate::schema::{instances, users};
use crate::users::User;
use crate::{Connection, Error, Result};
use plume_common::utils::md_to_html;
use safe_string::SafeString;
use schema::{instances, users};
use users::User;
use {Connection, Error, Result};
#[derive(Clone, Identifiable, Queryable)]
pub struct Instance {
@ -166,9 +166,9 @@ impl Instance {
#[cfg(test)]
pub(crate) mod tests {
use super::*;
use crate::tests::db;
use crate::Connection as Conn;
use diesel::Connection;
use tests::db;
use Connection as Conn;
pub(crate) fn fill_database(conn: &Conn) -> Vec<(NewInstance, Instance)> {
vec![

View file

@ -1,40 +1,7 @@
#![feature(try_trait)]
#![feature(never_type)]
#![feature(custom_attribute)]
#![feature(proc_macro_hygiene)]
#![feature(never_type, proc_macro_hygiene, try_trait)]
extern crate activitypub;
extern crate ammonia;
extern crate askama_escape;
extern crate bcrypt;
extern crate chrono;
#[macro_use]
extern crate diesel;
extern crate guid_create;
extern crate heck;
extern crate itertools;
#[macro_use]
extern crate lazy_static;
extern crate migrations_internals;
extern crate openssl;
extern crate plume_api;
extern crate plume_common;
#[macro_use]
extern crate plume_macro;
extern crate reqwest;
extern crate rocket;
extern crate rocket_i18n;
extern crate scheduled_thread_pool;
extern crate serde;
#[macro_use]
extern crate serde_derive;
#[macro_use]
extern crate serde_json;
#[macro_use]
extern crate tantivy;
extern crate url;
extern crate webfinger;
extern crate whatlang;
use plume_common::activity_pub::inbox::InboxError;
@ -289,7 +256,7 @@ macro_rules! last {
}
mod config;
pub use config::CONFIG;
pub use crate::config::CONFIG;
pub fn ap_url(url: &str) -> String {
format!("https://{}", url)
@ -298,18 +265,19 @@ pub fn ap_url(url: &str) -> String {
#[cfg(test)]
#[macro_use]
mod tests {
use db_conn;
use crate::db_conn;
use crate::migrations::IMPORTED_MIGRATIONS;
use crate::search;
use crate::Connection as Conn;
use crate::CONFIG;
use diesel::r2d2::ConnectionManager;
#[cfg(feature = "sqlite")]
use diesel::{dsl::sql_query, RunQueryDsl};
use migrations::IMPORTED_MIGRATIONS;
use lazy_static::lazy_static;
use plume_common::utils::random_hex;
use scheduled_thread_pool::ScheduledThreadPool;
use search;
use std::env::temp_dir;
use std::sync::Arc;
use Connection as Conn;
use CONFIG;
#[macro_export]
macro_rules! part_eq {
@ -376,4 +344,4 @@ pub mod schema;
pub mod search;
pub mod tags;
pub mod users;
pub use plume_rocket::PlumeRocket;
pub use crate::plume_rocket::PlumeRocket;

View file

@ -2,15 +2,15 @@ use activitypub::activity;
use chrono::NaiveDateTime;
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
use notifications::*;
use crate::notifications::*;
use crate::posts::Post;
use crate::schema::likes;
use crate::users::User;
use crate::{Connection, Error, PlumeRocket, Result};
use plume_common::activity_pub::{
inbox::{AsObject, FromId},
Id, IntoId, PUBLIC_VISIBILITY,
};
use posts::Post;
use schema::likes;
use users::User;
use {Connection, Error, PlumeRocket, Result};
#[derive(Clone, Queryable, Identifiable)]
pub struct Like {

View file

@ -10,11 +10,11 @@ use plume_common::{
utils::MediaProcessor,
};
use instance::Instance;
use safe_string::SafeString;
use schema::medias;
use users::User;
use {ap_url, Connection, Error, PlumeRocket, Result};
use crate::instance::Instance;
use crate::safe_string::SafeString;
use crate::schema::medias;
use crate::users::User;
use crate::{ap_url, Connection, Error, PlumeRocket, Result};
#[derive(Clone, Identifiable, Queryable)]
pub struct Media {
@ -248,13 +248,13 @@ impl Media {
#[cfg(test)]
pub(crate) mod tests {
use super::*;
use crate::tests::db;
use crate::users::tests as usersTests;
use crate::Connection as Conn;
use diesel::Connection;
use std::env::{current_dir, set_current_dir};
use std::fs;
use std::path::Path;
use tests::db;
use users::tests as usersTests;
use Connection as Conn;
pub(crate) fn fill_database(conn: &Conn) -> (Vec<User>, Vec<Media>) {
let mut wd = current_dir().unwrap().to_path_buf();

View file

@ -1,13 +1,13 @@
use activitypub::link;
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
use comments::Comment;
use notifications::*;
use posts::Post;
use schema::mentions;
use users::User;
use PlumeRocket;
use {Connection, Error, Result};
use crate::comments::Comment;
use crate::notifications::*;
use crate::posts::Post;
use crate::schema::mentions;
use crate::users::User;
use crate::PlumeRocket;
use crate::{Connection, Error, Result};
#[derive(Clone, Queryable, Identifiable)]
pub struct Mention {

View file

@ -1,16 +1,17 @@
use Connection;
use Error;
use Result;
use crate::Connection;
use crate::Error;
use crate::Result;
use diesel::connection::{Connection as Conn, SimpleConnection};
use migrations_internals::{setup_database, MigrationConnection};
use plume_macro::import_migrations;
use std::path::Path;
#[allow(dead_code)] //variants might not be constructed if not required by current migrations
enum Action {
Sql(&'static str),
Function(&'static Fn(&Connection, &Path) -> Result<()>),
Function(&'static dyn Fn(&Connection, &Path) -> Result<()>),
}
impl Action {

View file

@ -1,15 +1,15 @@
use chrono::NaiveDateTime;
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
use comments::Comment;
use follows::Follow;
use likes::Like;
use mentions::Mention;
use posts::Post;
use reshares::Reshare;
use schema::notifications;
use users::User;
use {Connection, Error, Result};
use crate::comments::Comment;
use crate::follows::Follow;
use crate::likes::Like;
use crate::mentions::Mention;
use crate::posts::Post;
use crate::reshares::Reshare;
use crate::schema::notifications;
use crate::users::User;
use crate::{Connection, Error, Result};
pub mod notification_kind {
pub const COMMENT: &str = "COMMENT";

View file

@ -29,9 +29,9 @@ mod module {
let conn = request.guard::<DbConn>()?;
let intl = request.guard::<rocket_i18n::I18n>()?;
let user = request.guard::<users::User>().succeeded();
let worker = request.guard::<State<Arc<ScheduledThreadPool>>>()?;
let searcher = request.guard::<State<Arc<search::Searcher>>>()?;
let flash_msg = request.guard::<FlashMessage>().succeeded();
let worker = request.guard::<State<'_, Arc<ScheduledThreadPool>>>()?;
let searcher = request.guard::<State<'_, Arc<search::Searcher>>>()?;
let flash_msg = request.guard::<FlashMessage<'_, '_>>().succeeded();
Outcome::Success(PlumeRocket {
conn,
intl,
@ -70,8 +70,8 @@ mod module {
fn from_request(request: &'a Request<'r>) -> request::Outcome<PlumeRocket, ()> {
let conn = request.guard::<DbConn>()?;
let user = request.guard::<users::User>().succeeded();
let worker = request.guard::<State<Arc<ScheduledThreadPool>>>()?;
let searcher = request.guard::<State<Arc<search::Searcher>>>()?;
let worker = request.guard::<State<'_, Arc<ScheduledThreadPool>>>()?;
let searcher = request.guard::<State<'_, Arc<search::Searcher>>>()?;
Outcome::Success(PlumeRocket {
conn,
user,

View file

@ -1,9 +1,9 @@
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
use posts::Post;
use schema::post_authors;
use users::User;
use {Error, Result};
use crate::posts::Post;
use crate::schema::post_authors;
use crate::users::User;
use crate::{Error, Result};
#[derive(Clone, Queryable, Identifiable, Associations)]
#[belongs_to(Post)]

View file

@ -7,13 +7,20 @@ use activitypub::{
use chrono::{NaiveDateTime, TimeZone, Utc};
use diesel::{self, BelongingToDsl, ExpressionMethods, QueryDsl, RunQueryDsl, SaveChangesDsl};
use heck::{CamelCase, KebabCase};
use serde_json;
use serde_json::json;
use std::collections::HashSet;
use blogs::Blog;
use instance::Instance;
use medias::Media;
use mentions::Mention;
use crate::blogs::Blog;
use crate::instance::Instance;
use crate::medias::Media;
use crate::mentions::Mention;
use crate::post_authors::*;
use crate::safe_string::SafeString;
use crate::schema::posts;
use crate::search::Searcher;
use crate::tags::*;
use crate::users::User;
use crate::{ap_url, Connection, Error, PlumeRocket, Result, CONFIG};
use plume_common::{
activity_pub::{
inbox::{AsObject, FromId},
@ -21,13 +28,6 @@ use plume_common::{
},
utils::md_to_html,
};
use post_authors::*;
use safe_string::SafeString;
use schema::posts;
use search::Searcher;
use tags::*;
use users::User;
use {ap_url, Connection, Error, PlumeRocket, Result, CONFIG};
pub type LicensedArticle = CustomObject<Licensed, Article>;
@ -110,7 +110,7 @@ impl Post {
tag: String,
(min, max): (i32, i32),
) -> Result<Vec<Post>> {
use schema::tags;
use crate::schema::tags;
let ids = tags::table.filter(tags::tag.eq(tag)).select(tags::post_id);
posts::table
@ -124,7 +124,7 @@ impl Post {
}
pub fn count_for_tag(conn: &Connection, tag: String) -> Result<i64> {
use schema::tags;
use crate::schema::tags;
let ids = tags::table.filter(tags::tag.eq(tag)).select(tags::post_id);
posts::table
.filter(posts::id.eq_any(ids))
@ -138,8 +138,8 @@ impl Post {
}
pub fn count_local(conn: &Connection) -> Result<i64> {
use schema::post_authors;
use schema::users;
use crate::schema::post_authors;
use crate::schema::users;
let local_authors = users::table
.filter(users::instance_id.eq(Instance::get_local(conn)?.id))
.select(users::id);
@ -196,7 +196,7 @@ impl Post {
author: &User,
limit: i64,
) -> Result<Vec<Post>> {
use schema::post_authors;
use crate::schema::post_authors;
let posts = PostAuthor::belonging_to(author).select(post_authors::post_id);
posts::table
@ -263,7 +263,7 @@ impl Post {
instance_id: i32,
(min, max): (i32, i32),
) -> Result<Vec<Post>> {
use schema::blogs;
use crate::schema::blogs;
let blog_ids = blogs::table
.filter(blogs::instance_id.eq(instance_id))
@ -285,7 +285,7 @@ impl Post {
followed: Vec<i32>,
(min, max): (i32, i32),
) -> Result<Vec<Post>> {
use schema::post_authors;
use crate::schema::post_authors;
let post_ids = post_authors::table
.filter(post_authors::author_id.eq_any(followed))
.select(post_authors::post_id);
@ -301,7 +301,7 @@ impl Post {
}
pub fn drafts_by_author(conn: &Connection, author: &User) -> Result<Vec<Post>> {
use schema::post_authors;
use crate::schema::post_authors;
let posts = PostAuthor::belonging_to(author).select(post_authors::post_id);
posts::table
@ -313,8 +313,8 @@ impl Post {
}
pub fn get_authors(&self, conn: &Connection) -> Result<Vec<User>> {
use schema::post_authors;
use schema::users;
use crate::schema::post_authors;
use crate::schema::users;
let author_list = PostAuthor::belonging_to(self).select(post_authors::author_id);
users::table
.filter(users::id.eq_any(author_list))
@ -323,7 +323,7 @@ impl Post {
}
pub fn is_author(&self, conn: &Connection, author_id: i32) -> Result<bool> {
use schema::post_authors;
use crate::schema::post_authors;
Ok(PostAuthor::belonging_to(self)
.filter(post_authors::author_id.eq(author_id))
.count()
@ -332,7 +332,7 @@ impl Post {
}
pub fn get_blog(&self, conn: &Connection) -> Result<Blog> {
use schema::blogs;
use crate::schema::blogs;
blogs::table
.filter(blogs::id.eq(self.blog_id))
.limit(1)
@ -343,7 +343,7 @@ impl Post {
}
pub fn count_likes(&self, conn: &Connection) -> Result<i64> {
use schema::likes;
use crate::schema::likes;
likes::table
.filter(likes::post_id.eq(self.id))
.count()
@ -352,7 +352,7 @@ impl Post {
}
pub fn count_reshares(&self, conn: &Connection) -> Result<i64> {
use schema::reshares;
use crate::schema::reshares;
reshares::table
.filter(reshares::post_id.eq(self.id))
.count()

View file

@ -2,15 +2,15 @@ use activitypub::activity::{Announce, Undo};
use chrono::NaiveDateTime;
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
use notifications::*;
use crate::notifications::*;
use crate::posts::Post;
use crate::schema::reshares;
use crate::users::User;
use crate::{Connection, Error, PlumeRocket, Result};
use plume_common::activity_pub::{
inbox::{AsObject, FromId},
Id, IntoId, PUBLIC_VISIBILITY,
};
use posts::Post;
use schema::reshares;
use users::User;
use {Connection, Error, PlumeRocket, Result};
#[derive(Clone, Queryable, Identifiable)]
pub struct Reshare {

View file

@ -6,6 +6,7 @@ use diesel::{
sql_types::Text,
types::ToSql,
};
use lazy_static::lazy_static;
use serde::{self, de::Visitor, Deserialize, Deserializer, Serialize, Serializer};
use std::{
borrow::{Borrow, Cow},
@ -48,7 +49,7 @@ lazy_static! {
};
}
fn url_add_prefix(url: &str) -> Option<Cow<str>> {
fn url_add_prefix(url: &str) -> Option<Cow<'_, str>> {
if url.starts_with('#') && !url.starts_with("#postcontent-") {
//if start with an #
let mut new_url = "#postcontent-".to_owned(); //change to valid id
@ -105,7 +106,7 @@ struct SafeStringVisitor;
impl<'de> Visitor<'de> for SafeStringVisitor {
type Value = SafeString;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
formatter.write_str("a string")
}
@ -147,7 +148,7 @@ where
DB: diesel::backend::Backend,
str: ToSql<diesel::sql_types::Text, DB>,
{
fn to_sql<W: Write>(&self, out: &mut Output<W, DB>) -> serialize::Result {
fn to_sql<W: Write>(&self, out: &mut Output<'_, W, DB>) -> serialize::Result {
str::to_sql(&self.value, out)
}
}
@ -159,7 +160,7 @@ impl Borrow<str> for SafeString {
}
impl Display for SafeString {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.value)
}
}

View file

@ -11,12 +11,12 @@ pub(crate) mod tests {
use std::env::temp_dir;
use std::str::FromStr;
use blogs::tests::fill_database;
use crate::blogs::tests::fill_database;
use crate::post_authors::*;
use crate::posts::{NewPost, Post};
use crate::safe_string::SafeString;
use crate::tests::db;
use plume_common::utils::random_hex;
use post_authors::*;
use posts::{NewPost, Post};
use safe_string::SafeString;
use tests::db;
pub(crate) fn get_searcher() -> Searcher {
let dir = temp_dir().join("plume-test");

View file

@ -1,5 +1,5 @@
use crate::search::searcher::Searcher;
use chrono::{naive::NaiveDate, offset::Utc, Datelike};
use search::searcher::Searcher;
use std::{cmp, ops::Bound};
use tantivy::{query::*, schema::*, Term};
@ -153,7 +153,7 @@ impl PlumeQuery {
/// Convert this Query to a Tantivy Query
pub fn into_query(self) -> BooleanQuery {
let mut result: Vec<(Occur, Box<Query>)> = Vec::new();
let mut result: Vec<(Occur, Box<dyn Query>)> = Vec::new();
gen_to_query!(self, result; normal: title, subtitle, content, tag;
oneoff: instance, author, blog, lang, license);
@ -279,7 +279,7 @@ impl PlumeQuery {
}
// map a token and it's field to a query
fn token_to_query(token: &str, field_name: &str) -> Box<Query> {
fn token_to_query(token: &str, field_name: &str) -> Box<dyn Query> {
let token = token.to_lowercase();
let token = token.as_str();
let field = Searcher::schema().get_field(field_name).unwrap();

View file

@ -1,22 +1,22 @@
use instance::Instance;
use posts::Post;
use schema::posts;
use tags::Tag;
use Connection;
use crate::instance::Instance;
use crate::posts::Post;
use crate::schema::posts;
use crate::tags::Tag;
use crate::Connection;
use chrono::Datelike;
use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl};
use itertools::Itertools;
use std::{cmp, fs::create_dir_all, path::Path, sync::Mutex};
use tantivy::{
collector::TopDocs, directory::MmapDirectory, schema::*, tokenizer::*, Index, IndexReader,
collector::TopDocs, directory::MmapDirectory, doc, schema::*, tokenizer::*, Index, IndexReader,
IndexWriter, ReloadPolicy, Term,
};
use whatlang::{detect as detect_lang, Lang};
use super::tokenizer;
use search::query::PlumeQuery;
use Result;
use crate::search::query::PlumeQuery;
use crate::Result;
#[derive(Debug)]
pub enum SearcherError {
@ -72,7 +72,7 @@ impl Searcher {
schema_builder.build()
}
pub fn create(path: &AsRef<Path>) -> Result<Self> {
pub fn create(path: &dyn AsRef<Path>) -> Result<Self> {
let whitespace_tokenizer = tokenizer::WhitespaceTokenizer.filter(LowerCaser);
let content_tokenizer = SimpleTokenizer
@ -111,7 +111,7 @@ impl Searcher {
})
}
pub fn open(path: &AsRef<Path>) -> Result<Self> {
pub fn open(path: &dyn AsRef<Path>) -> Result<Self> {
let whitespace_tokenizer = tokenizer::WhitespaceTokenizer.filter(LowerCaser);
let content_tokenizer = SimpleTokenizer

View file

@ -1,9 +1,9 @@
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
use instance::Instance;
use crate::instance::Instance;
use crate::schema::tags;
use crate::{ap_url, Connection, Error, Result};
use plume_common::activity_pub::Hashtag;
use schema::tags;
use {ap_url, Connection, Error, Result};
#[derive(Clone, Identifiable, Queryable)]
pub struct Tag {

View file

@ -37,17 +37,17 @@ use std::{
use url::Url;
use webfinger::*;
use blogs::Blog;
use db_conn::DbConn;
use follows::Follow;
use instance::*;
use medias::Media;
use post_authors::PostAuthor;
use posts::Post;
use safe_string::SafeString;
use schema::users;
use search::Searcher;
use {ap_url, Connection, Error, PlumeRocket, Result};
use crate::blogs::Blog;
use crate::db_conn::DbConn;
use crate::follows::Follow;
use crate::instance::*;
use crate::medias::Media;
use crate::post_authors::PostAuthor;
use crate::posts::Post;
use crate::safe_string::SafeString;
use crate::schema::users;
use crate::search::Searcher;
use crate::{ap_url, Connection, Error, PlumeRocket, Result};
pub type CustomPerson = CustomObject<ApSignature, Person>;
@ -146,7 +146,7 @@ impl User {
}
pub fn delete(&self, conn: &Connection, searcher: &Searcher) -> Result<()> {
use schema::post_authors;
use crate::schema::post_authors;
for blog in Blog::find_for_author(conn, self)?
.iter()
@ -421,8 +421,8 @@ impl User {
}
fn get_activities(&self, conn: &Connection) -> Result<Vec<serde_json::Value>> {
use schema::post_authors;
use schema::posts;
use crate::schema::post_authors;
use crate::schema::posts;
let posts_by_self = PostAuthor::belonging_to(self).select(post_authors::post_id);
let posts = posts::table
.filter(posts::published.eq(true))
@ -439,7 +439,7 @@ impl User {
}
pub fn get_followers(&self, conn: &Connection) -> Result<Vec<User>> {
use schema::follows;
use crate::schema::follows;
let follows = Follow::belonging_to(self).select(follows::follower_id);
users::table
.filter(users::id.eq_any(follows))
@ -448,7 +448,7 @@ impl User {
}
pub fn count_followers(&self, conn: &Connection) -> Result<i64> {
use schema::follows;
use crate::schema::follows;
let follows = Follow::belonging_to(self).select(follows::follower_id);
users::table
.filter(users::id.eq_any(follows))
@ -462,7 +462,7 @@ impl User {
conn: &Connection,
(min, max): (i32, i32),
) -> Result<Vec<User>> {
use schema::follows;
use crate::schema::follows;
let follows = Follow::belonging_to(self).select(follows::follower_id);
users::table
.filter(users::id.eq_any(follows))
@ -473,7 +473,7 @@ impl User {
}
pub fn get_followed(&self, conn: &Connection) -> Result<Vec<User>> {
use schema::follows::dsl::*;
use crate::schema::follows::dsl::*;
let f = follows.filter(follower_id.eq(self.id)).select(following_id);
users::table
.filter(users::id.eq_any(f))
@ -482,7 +482,7 @@ impl User {
}
pub fn count_followed(&self, conn: &Connection) -> Result<i64> {
use schema::follows;
use crate::schema::follows;
follows::table
.filter(follows::follower_id.eq(self.id))
.count()
@ -495,7 +495,7 @@ impl User {
conn: &Connection,
(min, max): (i32, i32),
) -> Result<Vec<User>> {
use schema::follows;
use crate::schema::follows;
let follows = follows::table
.filter(follows::follower_id.eq(self.id))
.select(follows::following_id)
@ -508,7 +508,7 @@ impl User {
}
pub fn is_followed_by(&self, conn: &Connection, other_id: i32) -> Result<bool> {
use schema::follows;
use crate::schema::follows;
follows::table
.filter(follows::follower_id.eq(other_id))
.filter(follows::following_id.eq(self.id))
@ -519,7 +519,7 @@ impl User {
}
pub fn is_following(&self, conn: &Connection, other_id: i32) -> Result<bool> {
use schema::follows;
use crate::schema::follows;
follows::table
.filter(follows::follower_id.eq(self.id))
.filter(follows::following_id.eq(other_id))
@ -530,7 +530,7 @@ impl User {
}
pub fn has_liked(&self, conn: &Connection, post: &Post) -> Result<bool> {
use schema::likes;
use crate::schema::likes;
likes::table
.filter(likes::post_id.eq(post.id))
.filter(likes::user_id.eq(self.id))
@ -541,7 +541,7 @@ impl User {
}
pub fn has_reshared(&self, conn: &Connection, post: &Post) -> Result<bool> {
use schema::reshares;
use crate::schema::reshares;
reshares::table
.filter(reshares::post_id.eq(post.id))
.filter(reshares::user_id.eq(self.id))
@ -552,7 +552,7 @@ impl User {
}
pub fn is_author_in(&self, conn: &Connection, blog: &Blog) -> Result<bool> {
use schema::blog_authors;
use crate::schema::blog_authors;
blog_authors::table
.filter(blog_authors::author_id.eq(self.id))
.filter(blog_authors::blog_id.eq(blog.id))
@ -947,11 +947,11 @@ impl NewUser {
#[cfg(test)]
pub(crate) mod tests {
use super::*;
use crate::instance::{tests as instance_tests, Instance};
use crate::search::tests::get_searcher;
use crate::tests::{db, rockets};
use crate::Connection as Conn;
use diesel::Connection;
use instance::{tests as instance_tests, Instance};
use search::tests::get_searcher;
use tests::{db, rockets};
use Connection as Conn;
pub(crate) fn fill_database(conn: &Conn) -> Vec<User> {
instance_tests::fill_database(conn);

View file

@ -1,7 +1,3 @@
extern crate diesel;
extern crate plume_common;
extern crate plume_models;
use diesel::Connection;
use plume_common::utils::random_hex;
use plume_models::migrations::IMPORTED_MIGRATIONS;

View file

@ -4,7 +4,7 @@ use rocket::{
response::{self, Responder},
};
use rocket_contrib::json::Json;
use serde_json;
use serde_json::json;
use plume_common::utils::random_hex;
use plume_models::{api_tokens::*, apps::App, users::User, Error, PlumeRocket};
@ -27,7 +27,7 @@ impl From<std::option::NoneError> for ApiError {
}
impl<'r> Responder<'r> for ApiError {
fn respond_to(self, req: &Request) -> response::Result<'r> {
fn respond_to(self, req: &Request<'_>) -> response::Result<'r> {
match self.0 {
Error::NotFound => Json(json!({
"error": "Not found"

View file

@ -14,7 +14,7 @@ use std::io::Read;
pub fn handle_incoming(
rockets: PlumeRocket,
data: SignedJson<serde_json::Value>,
headers: Headers,
headers: Headers<'_>,
) -> Result<String, status::BadRequest<&'static str>> {
let conn = &*rockets.conn;
let act = data.1.into_inner();
@ -74,7 +74,7 @@ impl<'a, T: Deserialize<'a>> FromData<'a> for SignedJson<T> {
type Borrowed = str;
fn transform(
r: &Request,
r: &Request<'_>,
d: Data,
) -> Transform<rocket::data::Outcome<Self::Owned, Self::Error>> {
let size_limit = r.limits().get("json").unwrap_or(JSON_LIMIT);
@ -86,7 +86,7 @@ impl<'a, T: Deserialize<'a>> FromData<'a> for SignedJson<T> {
}
fn from_data(
_: &Request,
_: &Request<'_>,
o: Transformed<'a, Self>,
) -> rocket::data::Outcome<Self, Self::Error> {
let string = o.borrowed()?;

View file

@ -1,42 +1,12 @@
#![allow(clippy::too_many_arguments)]
#![feature(decl_macro, proc_macro_hygiene, try_trait)]
extern crate activitypub;
extern crate askama_escape;
extern crate atom_syndication;
extern crate chrono;
extern crate colored;
extern crate ctrlc;
extern crate diesel;
extern crate dotenv;
#[macro_use]
extern crate gettext_macros;
extern crate gettext_utils;
extern crate guid_create;
extern crate heck;
extern crate lettre;
extern crate lettre_email;
extern crate multipart;
extern crate num_cpus;
extern crate plume_api;
extern crate plume_common;
extern crate plume_models;
#[macro_use]
extern crate rocket;
extern crate rocket_contrib;
extern crate rocket_csrf;
extern crate rocket_i18n;
#[macro_use]
extern crate runtime_fmt;
extern crate scheduled_thread_pool;
extern crate serde;
#[macro_use]
extern crate serde_json;
extern crate serde_qs;
extern crate validator;
#[macro_use]
extern crate validator_derive;
extern crate webfinger;
use diesel::r2d2::ConnectionManager;
use plume_models::{

View file

@ -10,14 +10,14 @@ use rocket_i18n::I18n;
use std::{borrow::Cow, collections::HashMap};
use validator::{Validate, ValidationError, ValidationErrors};
use crate::routes::{errors::ErrorPage, Page};
use crate::template_utils::{IntoContext, Ructe};
use plume_common::activity_pub::{ActivityStream, ApRequest};
use plume_common::utils;
use plume_models::{
blog_authors::*, blogs::*, instance::Instance, medias::*, posts::Post, safe_string::SafeString,
users::User, Connection, PlumeRocket,
};
use routes::{errors::ErrorPage, Page};
use template_utils::{IntoContext, Ructe};
#[get("/~/<name>?<page>", rank = 2)]
pub fn details(name: String, page: Option<Page>, rockets: PlumeRocket) -> Result<Ructe, ErrorPage> {

View file

@ -1,13 +1,15 @@
use crate::template_utils::Ructe;
use activitypub::object::Note;
use rocket::{
request::LenientForm,
response::{Flash, Redirect},
};
use template_utils::Ructe;
use validator::Validate;
use std::time::Duration;
use crate::routes::errors::ErrorPage;
use crate::template_utils::IntoContext;
use plume_common::{
activity_pub::{broadcast, ActivityStream, ApRequest},
utils,
@ -16,8 +18,6 @@ use plume_models::{
blogs::Blog, comments::*, inbox::inbox, instance::Instance, medias::Media, mentions::Mention,
posts::Post, safe_string::SafeString, tags::Tag, users::User, Error, PlumeRocket,
};
use routes::errors::ErrorPage;
use template_utils::IntoContext;
#[derive(Default, FromForm, Debug, Validate)]
pub struct NewCommentForm {

View file

@ -1,9 +1,9 @@
use crate::template_utils::{IntoContext, Ructe};
use plume_models::{Error, PlumeRocket};
use rocket::{
response::{self, Responder},
Request,
};
use template_utils::{IntoContext, Ructe};
#[derive(Debug)]
pub struct ErrorPage(Error);
@ -15,7 +15,7 @@ impl From<Error> for ErrorPage {
}
impl<'r> Responder<'r> for ErrorPage {
fn respond_to(self, req: &Request) -> response::Result<'r> {
fn respond_to(self, req: &Request<'_>) -> response::Result<'r> {
let rockets = req.guard::<PlumeRocket>().unwrap();
match self.0 {
@ -29,19 +29,19 @@ impl<'r> Responder<'r> for ErrorPage {
}
#[catch(404)]
pub fn not_found(req: &Request) -> Ructe {
pub fn not_found(req: &Request<'_>) -> Ructe {
let rockets = req.guard::<PlumeRocket>().unwrap();
render!(errors::not_found(&rockets.to_context()))
}
#[catch(422)]
pub fn unprocessable_entity(req: &Request) -> Ructe {
pub fn unprocessable_entity(req: &Request<'_>) -> Ructe {
let rockets = req.guard::<PlumeRocket>().unwrap();
render!(errors::unprocessable_entity(&rockets.to_context()))
}
#[catch(500)]
pub fn server_error(req: &Request) -> Ructe {
pub fn server_error(req: &Request<'_>) -> Ructe {
let rockets = req.guard::<PlumeRocket>().unwrap();
render!(errors::server_error(&rockets.to_context()))
}

View file

@ -4,17 +4,17 @@ use rocket::{
};
use rocket_contrib::json::Json;
use rocket_i18n::I18n;
use serde_json;
use serde_json::json;
use validator::{Validate, ValidationErrors};
use inbox;
use crate::inbox;
use crate::routes::{errors::ErrorPage, rocket_uri_macro_static_files, Page};
use crate::template_utils::{IntoContext, Ructe};
use plume_common::activity_pub::{broadcast, inbox::FromId};
use plume_models::{
admin::Admin, comments::Comment, db_conn::DbConn, headers::Headers, instance::*, posts::Post,
safe_string::SafeString, users::User, Error, PlumeRocket, CONFIG,
};
use routes::{errors::ErrorPage, rocket_uri_macro_static_files, Page};
use template_utils::{IntoContext, Ructe};
#[get("/")]
pub fn index(rockets: PlumeRocket) -> Result<Ructe, ErrorPage> {
@ -226,7 +226,7 @@ pub fn ban(_admin: Admin, id: i32, rockets: PlumeRocket) -> Result<Flash<Redirec
pub fn shared_inbox(
rockets: PlumeRocket,
data: inbox::SignedJson<serde_json::Value>,
headers: Headers,
headers: Headers<'_>,
) -> Result<String, status::BadRequest<&'static str>> {
inbox::handle_incoming(rockets, data, headers)
}

View file

@ -1,12 +1,12 @@
use rocket::response::{Flash, Redirect};
use rocket_i18n::I18n;
use crate::routes::errors::ErrorPage;
use plume_common::activity_pub::broadcast;
use plume_common::utils;
use plume_models::{
blogs::Blog, inbox::inbox, likes, posts::Post, users::User, Error, PlumeRocket,
};
use routes::errors::ErrorPage;
#[post("/~/<blog>/<slug>/like")]
pub fn create(

View file

@ -1,3 +1,5 @@
use crate::routes::{errors::ErrorPage, Page};
use crate::template_utils::{IntoContext, Ructe};
use guid_create::GUID;
use multipart::server::{
save::{SaveResult, SavedData},
@ -10,9 +12,7 @@ use rocket::{
Data,
};
use rocket_i18n::I18n;
use routes::{errors::ErrorPage, Page};
use std::fs;
use template_utils::{IntoContext, Ructe};
#[get("/medias?<page>")]
pub fn list(user: User, page: Option<Page>, rockets: PlumeRocket) -> Result<Ructe, ErrorPage> {

View file

@ -1,10 +1,10 @@
use rocket::response::{Flash, Redirect};
use rocket_i18n::I18n;
use crate::routes::{errors::ErrorPage, Page};
use crate::template_utils::{IntoContext, Ructe};
use plume_common::utils;
use plume_models::{notifications::Notification, users::User, PlumeRocket};
use routes::{errors::ErrorPage, Page};
use template_utils::{IntoContext, Ructe};
#[get("/notifications?<page>")]
pub fn notifications(

View file

@ -3,6 +3,7 @@ use heck::{CamelCase, KebabCase};
use rocket::request::LenientForm;
use rocket::response::{Flash, Redirect};
use rocket_i18n::I18n;
use runtime_fmt::{rt_format, rt_format_args};
use std::{
borrow::Cow,
collections::{HashMap, HashSet},
@ -10,6 +11,8 @@ use std::{
};
use validator::{Validate, ValidationError, ValidationErrors};
use crate::routes::{comments::NewCommentForm, errors::ErrorPage, ContentLen, RemoteForm};
use crate::template_utils::{IntoContext, Ructe};
use plume_common::activity_pub::{broadcast, ActivityStream, ApRequest};
use plume_common::utils;
use plume_models::{
@ -26,8 +29,6 @@ use plume_models::{
users::User,
Error, PlumeRocket,
};
use routes::{comments::NewCommentForm, errors::ErrorPage, ContentLen, RemoteForm};
use template_utils::{IntoContext, Ructe};
#[get("/~/<blog>/<slug>?<responding_to>", rank = 4)]
pub fn details(

View file

@ -1,12 +1,12 @@
use rocket::response::{Flash, Redirect};
use rocket_i18n::I18n;
use crate::routes::errors::ErrorPage;
use plume_common::activity_pub::broadcast;
use plume_common::utils;
use plume_models::{
blogs::Blog, inbox::inbox, posts::Post, reshares::*, users::User, Error, PlumeRocket,
};
use routes::errors::ErrorPage;
#[post("/~/<blog>/<slug>/reshare")]
pub fn create(

View file

@ -1,10 +1,10 @@
use chrono::offset::Utc;
use rocket::request::Form;
use crate::routes::Page;
use crate::template_utils::{IntoContext, Ructe};
use plume_models::{search::Query, PlumeRocket};
use routes::Page;
use std::str::FromStr;
use template_utils::{IntoContext, Ructe};
#[derive(Default, FromForm)]
pub struct SearchQuery {

View file

@ -14,13 +14,13 @@ use std::{
};
use validator::{Validate, ValidationError, ValidationErrors};
use mail::{build_mail, Mailer};
use crate::mail::{build_mail, Mailer};
use crate::routes::errors::ErrorPage;
use crate::template_utils::{IntoContext, Ructe};
use plume_models::{
users::{User, AUTH_COOKIE},
Error, PlumeRocket, CONFIG,
};
use routes::errors::ErrorPage;
use template_utils::{IntoContext, Ructe};
#[get("/login?<m>")]
pub fn new(m: Option<String>, rockets: PlumeRocket) -> Ructe {
@ -43,7 +43,7 @@ pub struct LoginForm {
#[post("/login", data = "<form>")]
pub fn create(
form: LenientForm<LoginForm>,
mut cookies: Cookies,
mut cookies: Cookies<'_>,
rockets: PlumeRocket,
) -> Result<Flash<Redirect>, Ructe> {
let conn = &*rockets.conn;
@ -122,7 +122,7 @@ pub fn create(
}
#[get("/logout")]
pub fn delete(mut cookies: Cookies, intl: I18n) -> Flash<Redirect> {
pub fn delete(mut cookies: Cookies<'_>, intl: I18n) -> Flash<Redirect> {
if let Some(cookie) = cookies.get_private(AUTH_COOKIE) {
cookies.remove_private(cookie);
}
@ -162,9 +162,9 @@ pub struct ResetForm {
#[post("/password-reset", data = "<form>")]
pub fn password_reset_request(
mail: State<Arc<Mutex<Mailer>>>,
mail: State<'_, Arc<Mutex<Mailer>>>,
form: Form<ResetForm>,
requests: State<Arc<Mutex<Vec<ResetRequest>>>>,
requests: State<'_, Arc<Mutex<Vec<ResetRequest>>>>,
rockets: PlumeRocket,
) -> Ructe {
let mut requests = requests.lock().unwrap();
@ -201,7 +201,7 @@ pub fn password_reset_request(
#[get("/password-reset/<token>")]
pub fn password_reset_form(
token: String,
requests: State<Arc<Mutex<Vec<ResetRequest>>>>,
requests: State<'_, Arc<Mutex<Vec<ResetRequest>>>>,
rockets: PlumeRocket,
) -> Result<Ructe, ErrorPage> {
requests
@ -239,7 +239,7 @@ fn passwords_match(form: &NewPasswordForm) -> Result<(), ValidationError> {
#[post("/password-reset/<token>", data = "<form>")]
pub fn password_reset(
token: String,
requests: State<Arc<Mutex<Vec<ResetRequest>>>>,
requests: State<'_, Arc<Mutex<Vec<ResetRequest>>>>,
form: Form<NewPasswordForm>,
rockets: PlumeRocket,
) -> Result<Flash<Redirect>, Ructe> {

View file

@ -1,6 +1,6 @@
use crate::routes::{errors::ErrorPage, Page};
use crate::template_utils::{IntoContext, Ructe};
use plume_models::{posts::Post, PlumeRocket};
use routes::{errors::ErrorPage, Page};
use template_utils::{IntoContext, Ructe};
#[get("/tag/<name>?<page>")]
pub fn tag(name: String, page: Option<Page>, rockets: PlumeRocket) -> Result<Ructe, ErrorPage> {

View file

@ -6,11 +6,13 @@ use rocket::{
response::{status, Content, Flash, Redirect},
};
use rocket_i18n::I18n;
use serde_json;
use runtime_fmt::{rt_format, rt_format_args};
use std::{borrow::Cow, collections::HashMap};
use validator::{Validate, ValidationError, ValidationErrors};
use inbox;
use crate::inbox;
use crate::routes::{errors::ErrorPage, Page, RemoteForm};
use crate::template_utils::{IntoContext, Ructe};
use plume_common::activity_pub::{broadcast, inbox::FromId, ActivityStream, ApRequest, Id};
use plume_common::utils;
use plume_models::{
@ -25,8 +27,6 @@ use plume_models::{
users::*,
Error, PlumeRocket,
};
use routes::{errors::ErrorPage, Page, RemoteForm};
use template_utils::{IntoContext, Ructe};
#[get("/me")]
pub fn me(user: Option<User>) -> Result<Redirect, Flash<Redirect>> {
@ -404,7 +404,7 @@ pub fn update(
pub fn delete(
name: String,
user: User,
mut cookies: Cookies,
mut cookies: Cookies<'_>,
rockets: PlumeRocket,
) -> Result<Flash<Redirect>, ErrorPage> {
let account = User::find_by_fqn(&rockets, &name)?;
@ -552,7 +552,7 @@ pub fn outbox(name: String, rockets: PlumeRocket) -> Option<ActivityStream<Order
pub fn inbox(
name: String,
data: inbox::SignedJson<serde_json::Value>,
headers: Headers,
headers: Headers<'_>,
rockets: PlumeRocket,
) -> Result<String, status::BadRequest<&'static str>> {
User::find_by_fqn(&rockets, &name).map_err(|_| status::BadRequest(Some("User not found")))?;

View file

@ -1,6 +1,6 @@
use rocket::http::ContentType;
use rocket::response::Content;
use serde_json;
use serde_json::json;
use webfinger::*;
use plume_models::{ap_url, blogs::Blog, users::User, PlumeRocket, CONFIG};

View file

@ -1,5 +1,6 @@
use plume_models::{notifications::*, users::User, Connection, PlumeRocket};
use crate::templates::Html;
use rocket::http::hyper::header::{ETag, EntityTag};
use rocket::http::{Method, Status};
use rocket::request::Request;
@ -7,7 +8,6 @@ use rocket::response::{self, content::Html as HtmlCt, Responder, Response};
use rocket_i18n::Catalog;
use std::collections::hash_map::DefaultHasher;
use std::hash::Hasher;
use templates::Html;
pub use askama_escape::escape;
@ -53,7 +53,7 @@ impl IntoContext for PlumeRocket {
pub struct Ructe(pub Vec<u8>);
impl<'r> Responder<'r> for Ructe {
fn respond_to(self, r: &Request) -> response::Result<'r> {
fn respond_to(self, r: &Request<'_>) -> response::Result<'r> {
//if method is not Get or page contain a form, no caching
if r.method() != Method::Get || self.0.windows(6).any(|w| w == b"<form ") {
return HtmlCt(self.0).respond_to(r);
@ -82,7 +82,7 @@ impl<'r> Responder<'r> for Ructe {
macro_rules! render {
($group:tt :: $page:tt ( $( $param:expr ),* ) ) => {
{
use templates;
use crate::templates;
let mut res = vec![];
templates::$group::$page(
@ -96,7 +96,7 @@ macro_rules! render {
}
}
pub fn translate_notification(ctx: BaseContext, notif: Notification) -> String {
pub fn translate_notification(ctx: BaseContext<'_>, notif: Notification) -> String {
let name = notif.get_actor(ctx.0).unwrap().name();
match notif.kind.as_ref() {
notification_kind::COMMENT => i18n!(ctx.1, "{0} commented on your article."; &name),

View file

@ -1,6 +1,6 @@
@use plume_models::CONFIG;
@use template_utils::*;
@use routes::*;
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext, title: String, head: Content, header: Content, content: Content)
<!DOCTYPE html>

View file

@ -2,9 +2,9 @@
@use plume_models::instance::Instance;
@use plume_models::posts::Post;
@use plume_models::users::User;
@use templates::{base, partials::post_card};
@use template_utils::*;
@use routes::*;
@use crate::templates::{base, partials::post_card};
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext, blog: Blog, authors: &[User], page: i32, n_pages: i32, posts: Vec<Post>)

View file

@ -1,12 +1,12 @@
@use validator::ValidationErrors;
@use plume_models::blogs::Blog;
@use plume_models::medias::Media;
@use routes::blogs;
@use routes::blogs::EditForm;
@use routes::medias;
@use template_utils::*;
@use templates::base;
@use templates::partials::image_select;
@use crate::routes::blogs;
@use crate::routes::blogs::EditForm;
@use crate::routes::medias;
@use crate::template_utils::*;
@use crate::templates::base;
@use crate::templates::partials::image_select;
@(ctx: BaseContext, blog: &Blog, medias: Vec<Media>, form: &EditForm, errors: ValidationErrors)
@ -15,7 +15,7 @@
}, {
<h1>@i18n!(ctx.1, "Edit \"{}\""; &blog.title)</h1>
<form method="post" action="@uri!(blogs::update: name = &blog.fqn)">
<!-- Rocket hack to use various HTTP methods -->
<!-- Rocket hack to use crate::various HTTP methods -->
<input type=hidden name="_method" value="put">
@input!(ctx.1, title (text), "Title", form, errors.clone(), "minlenght=\"1\"")
@ -24,7 +24,7 @@
<textarea id="summary" name="summary" rows="20">@form.summary</textarea>
<p>
@i18n!(ctx.1, "You can upload images to your gallery, to use them as blog icons, or banners.")
@i18n!(ctx.1, "You can upload images to your gallery, to use crate::them as blog icons, or banners.")
<a href="@uri!(medias::new)">@i18n!(ctx.1, "Upload images")</a>
</p>

View file

@ -1,8 +1,8 @@
@use validator::ValidationErrors;
@use templates::base;
@use template_utils::*;
@use routes::blogs::NewBlogForm;
@use routes::*;
@use crate::templates::base;
@use crate::template_utils::*;
@use crate::routes::blogs::NewBlogForm;
@use crate::routes::*;
@(ctx: BaseContext, form: &NewBlogForm, errors: ValidationErrors)

View file

@ -1,5 +1,5 @@
@use templates::base as base_template;
@use template_utils::*;
@use crate::templates::base as base_template;
@use crate::template_utils::*;
@(ctx: BaseContext, error_message: String, error: Content)

View file

@ -1,5 +1,5 @@
@use templates::errors::base;
@use template_utils::*;
@use crate::templates::errors::base;
@use crate::template_utils::*;
@(ctx: BaseContext)

View file

@ -1,5 +1,5 @@
@use templates::errors::base;
@use template_utils::*;
@use crate::templates::errors::base;
@use crate::template_utils::*;
@(ctx: BaseContext, error_message: String)

View file

@ -1,5 +1,5 @@
@use templates::errors::base;
@use template_utils::*;
@use crate::templates::errors::base;
@use crate::template_utils::*;
@(ctx: BaseContext)

View file

@ -1,5 +1,5 @@
@use templates::errors::base;
@use template_utils::*;
@use crate::templates::errors::base;
@use crate::template_utils::*;
@(ctx: BaseContext)

View file

@ -1,5 +1,5 @@
@use templates::errors::base;
@use template_utils::*;
@use crate::templates::errors::base;
@use crate::template_utils::*;
@(ctx: BaseContext)

View file

@ -1,7 +1,7 @@
@use plume_models::{instance::Instance, users::User};
@use templates::base;
@use template_utils::*;
@use routes::*;
@use crate::templates::base;
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext, instance: Instance, admin: User, n_users: i64, n_articles: i64, n_instances: i64)

View file

@ -1,9 +1,9 @@
@use plume_models::instance::Instance;
@use validator::ValidationErrors;
@use templates::base;
@use template_utils::*;
@use routes::instance::InstanceSettingsForm;
@use routes::*;
@use crate::templates::base;
@use crate::template_utils::*;
@use crate::routes::instance::InstanceSettingsForm;
@use crate::routes::*;
@(ctx: BaseContext, instance: Instance, form: InstanceSettingsForm, errors: ValidationErrors)

View file

@ -1,7 +1,7 @@
@use plume_models::posts::Post;
@use templates::{base, partials::post_card};
@use template_utils::*;
@use routes::*;
@use crate::templates::{base, partials::post_card};
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext, articles: Vec<Post>, page: i32, n_pages: i32)

View file

@ -1,7 +1,7 @@
@use plume_models::posts::Post;
@use templates::{base, partials::post_card};
@use template_utils::*;
@use routes::*;
@use crate::templates::{base, partials::post_card};
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext, articles: Vec<Post>, page: i32, n_pages: i32)

View file

@ -1,8 +1,8 @@
@use templates::{base, partials::*};
@use template_utils::*;
@use crate::templates::{base, partials::*};
@use crate::template_utils::*;
@use plume_models::instance::Instance;
@use plume_models::posts::Post;
@use routes::*;
@use crate::routes::*;
@(ctx: BaseContext, instance: Instance, n_users: i64, n_articles: i64, local: Vec<Post>, federated: Vec<Post>, user_feed: Option<Vec<Post>>)

View file

@ -1,7 +1,7 @@
@use plume_models::instance::Instance;
@use templates::base;
@use template_utils::*;
@use routes::*;
@use crate::templates::base;
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext, instance: Instance, instances: Vec<Instance>, page: i32, n_pages: i32)

View file

@ -1,8 +1,8 @@
@use plume_models::posts::Post;
@use plume_models::instance::Instance;
@use templates::{base, partials::post_card};
@use template_utils::*;
@use routes::*;
@use crate::templates::{base, partials::post_card};
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext, instance: Instance, articles: Vec<Post>, page: i32, n_pages: i32)

View file

@ -1,7 +1,7 @@
@use plume_models::users::User;
@use templates::base;
@use template_utils::*;
@use routes::*;
@use crate::templates::base;
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext, users: Vec<User>, page: i32, n_pages: i32)

View file

@ -1,8 +1,8 @@
@use plume_models::medias::{Media, MediaCategory};
@use plume_models::safe_string::SafeString;
@use templates::base;
@use template_utils::*;
@use routes::*;
@use crate::templates::base;
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext, media: Media)

View file

@ -1,7 +1,7 @@
@use plume_models::medias::*;
@use templates::base;
@use template_utils::*;
@use routes::*;
@use crate::templates::base;
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext, medias: Vec<Media>, page: i32, n_pages: i32)

View file

@ -1,6 +1,6 @@
@use templates::base;
@use template_utils::*;
@use routes::*;
@use crate::templates::base;
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext)

View file

@ -1,5 +1,5 @@
@use templates::base;
@use template_utils::*;
@use crate::templates::base;
@use crate::template_utils::*;
@use plume_models::notifications::Notification;
@(ctx: BaseContext, notifications: Vec<Notification>, page: i32, n_pages: i32)

View file

@ -1,6 +1,6 @@
@use template_utils::*;
@use crate::template_utils::*;
@use plume_models::comments::CommentTree;
@use routes::*;
@use crate::routes::*;
@(ctx: BaseContext, comment_tree: &CommentTree, in_reply_to: Option<&str>, blog: &str, slug: &str)

View file

@ -1,6 +1,6 @@
@use templates::partials::post_card;
@use crate::templates::partials::post_card;
@use plume_models::posts::Post;
@use template_utils::*;
@use crate::template_utils::*;
@(ctx: BaseContext, articles: Vec<Post>, link: &str, title: String)

View file

@ -1,4 +1,4 @@
@use template_utils::*;
@use crate::template_utils::*;
@use plume_models::medias::*;
@(ctx: BaseContext, id: &str, title: String, optional: bool, medias: Vec<Media>, selected: Option<i32>)

View file

@ -1,6 +1,6 @@
@use template_utils::*;
@use crate::template_utils::*;
@use plume_models::instance::Instance;
@use routes::*;
@use crate::routes::*;
@(ctx: BaseContext, instance: Instance, n_users: i64, n_articles: i64)

View file

@ -1,6 +1,6 @@
@use plume_models::posts::Post;
@use template_utils::*;
@use routes::*;
@use crate::template_utils::*;
@use crate::routes::*;
@(ctx: BaseContext, article: Post)

View file

@ -1,13 +1,13 @@
@use templates::{base, partials::comment};
@use template_utils::*;
@use crate::templates::{base, partials::comment};
@use crate::template_utils::*;
@use plume_models::blogs::Blog;
@use plume_models::comments::{Comment, CommentTree};
@use plume_models::posts::Post;
@use plume_models::tags::Tag;
@use plume_models::users::User;
@use validator::ValidationErrors;
@use routes::comments::NewCommentForm;
@use routes::*;
@use crate::routes::comments::NewCommentForm;
@use crate::routes::*;
@(ctx: BaseContext, article: Post, blog: Blog, comment_form: &NewCommentForm, comment_errors: ValidationErrors, tags: Vec<Tag>, comments: Vec<CommentTree>, previous_comment: Option<Comment>, n_likes: i64, n_reshares: i64, has_liked: bool, has_reshared: bool, is_following: bool, author: User)
@ -110,7 +110,7 @@
</form>
</div>
} else {
<p class="center">@Html(i18n!(ctx.1, "{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this article";
<p class="center">@Html(i18n!(ctx.1, "{0}Log in{1}, or {2}use crate::your Fediverse account{3} to interact with this article";
format!("<a href='{}'>", uri!(session::new: m = _)), "</a>",
format!("<a href='{}'>", uri!(posts::remote_interact: blog_name = &blog.fqn, slug = &article.slug)), "</a>"
))</p>

View file

@ -1,13 +1,13 @@
@use templates::base;
@use templates::partials::image_select;
@use template_utils::*;
@use crate::templates::base;
@use crate::templates::partials::image_select;
@use crate::template_utils::*;
@use validator::{ValidationErrors, ValidationErrorsKind};
@use std::borrow::Cow;
@use plume_models::medias::*;
@use plume_models::blogs::Blog;
@use plume_models::posts::Post;
@use routes::posts::NewPostForm;
@use routes::*;
@use crate::routes::posts::NewPostForm;
@use crate::routes::*;
@(ctx: BaseContext, title: String, blog: Blog, editing: bool, form: &NewPostForm, is_draft: bool, article: Option<Post>, errors: ValidationErrors, medias: Vec<Media>, content_len: u64)

View file

@ -1,9 +1,9 @@
@use templates::remote_interact_base;
@use templates::partials::post_card;
@use crate::templates::remote_interact_base;
@use crate::templates::partials::post_card;
@use plume_models::posts::Post;
@use routes::RemoteForm;
@use routes::session::LoginForm;
@use template_utils::*;
@use crate::routes::RemoteForm;
@use crate::routes::session::LoginForm;
@use crate::template_utils::*;
@use validator::ValidationErrors;
@(ctx: BaseContext, post: Post, login_form: LoginForm, login_errs: ValidationErrors, remote_form: RemoteForm, remote_errs: ValidationErrors)

View file

@ -1,7 +1,7 @@
@use templates::base;
@use routes::session::LoginForm;
@use routes::RemoteForm;
@use template_utils::*;
@use crate::templates::base;
@use crate::routes::session::LoginForm;
@use crate::routes::RemoteForm;
@use crate::template_utils::*;
@use validator::ValidationErrors;
@(ctx: BaseContext, title: String, login_msg: String, remote_msg: String, header: Content, login_form: LoginForm, login_errs: ValidationErrors, remote_form: RemoteForm, remote_errs: ValidationErrors)

View file

@ -1,5 +1,5 @@
@use templates::base;
@use template_utils::*;
@use crate::templates::base;
@use crate::template_utils::*;
@(ctx: BaseContext, now: &str)

Some files were not shown because too many files have changed in this diff Show more