Compare commits

...

2 Commits

Author SHA1 Message Date
Trinity Pointard
140a1f8eda cargo update 2019-12-19 09:36:40 +01:00
Trinity Pointard
07b70c084e upgrade compiler to nightly-2019-12-17 2019-12-19 09:17:05 +01:00
17 changed files with 1084 additions and 1058 deletions

2076
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@ rocket = "0.4.0"
rocket_contrib = { version = "0.4.0", features = ["json"] } rocket_contrib = { version = "0.4.0", features = ["json"] }
rocket_i18n = { git = "https://github.com/Plume-org/rocket_i18n", rev = "e922afa7c366038b3433278c03b1456b346074f2" } rocket_i18n = { git = "https://github.com/Plume-org/rocket_i18n", rev = "e922afa7c366038b3433278c03b1456b346074f2" }
rpassword = "4.0" rpassword = "4.0"
runtime-fmt = "0.3.0" runtime-fmt = "0.4.0"
scheduled-thread-pool = "0.2.2" scheduled-thread-pool = "0.2.2"
serde = "1.0" serde = "1.0"
serde_json = "1.0" serde_json = "1.0"
@ -65,7 +65,7 @@ path = "plume-models"
[dependencies.rocket_csrf] [dependencies.rocket_csrf]
git = "https://github.com/fdb-hiroshima/rocket_csrf" git = "https://github.com/fdb-hiroshima/rocket_csrf"
rev = "4a72ea2ec716cb0b26188fb00bccf2ef7d1e031c" rev = "29910f2829e7e590a540da3804336577b48c7b31"
[build-dependencies] [build-dependencies]
ructe = "0.6.2" ructe = "0.6.2"

View File

@ -2,7 +2,7 @@ extern crate rsass;
extern crate ructe; extern crate ructe;
use ructe::Ructe; use ructe::Ructe;
use std::process::{Command, Stdio}; use std::process::{Command, Stdio};
use std::{env, ffi::OsStr, fs::*, io::Write, path::*}; use std::{ffi::OsStr, fs::*, io::Write, path::*};
fn compute_static_hash() -> String { fn compute_static_hash() -> String {
//"find static/ -type f ! -path 'static/media/*' | sort | xargs stat -c'%n %Y' | openssl dgst -r" //"find static/ -type f ! -path 'static/media/*' | sort | xargs stat -c'%n %Y' | openssl dgst -r"

View File

@ -1,4 +1,4 @@
#![feature(custom_attribute, associated_type_defaults)] #![feature(associated_type_defaults)]
extern crate activitypub; extern crate activitypub;
#[macro_use] #[macro_use]

View File

@ -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>( fn process_image<'a, 'b>(
evt: Event<'a>, evt: Event<'a>,

View File

@ -73,5 +73,4 @@ pub(crate) mod tests {
Ok(conn.begin_test_transaction().unwrap()) Ok(conn.begin_test_transaction().unwrap())
} }
} }
} }

View File

@ -1,6 +1,7 @@
#![feature(try_trait)] #![feature(try_trait)]
#![feature(never_type)] #![feature(never_type)]
#![feature(custom_attribute)] //#![feature(register_attr)]
//#![feature(register_tool)]
#![feature(proc_macro_hygiene)] #![feature(proc_macro_hygiene)]
extern crate activitypub; extern crate activitypub;
@ -253,6 +254,7 @@ macro_rules! insert {
($table:ident, $from:ident, |$val:ident, $conn:ident | $( $after:tt )+) => { ($table:ident, $from:ident, |$val:ident, $conn:ident | $( $after:tt )+) => {
last!($table); last!($table);
#[allow(dead_code)]
pub fn insert(conn: &crate::Connection, new: $from) -> Result<Self> { pub fn insert(conn: &crate::Connection, new: $from) -> Result<Self> {
diesel::insert_into($table::table) diesel::insert_into($table::table)
.values(new) .values(new)
@ -279,6 +281,7 @@ macro_rules! insert {
/// ``` /// ```
macro_rules! last { macro_rules! last {
($table:ident) => { ($table:ident) => {
#[allow(dead_code)]
pub fn last(conn: &crate::Connection) -> Result<Self> { pub fn last(conn: &crate::Connection) -> Result<Self> {
$table::table $table::table
.order_by($table::id.desc()) .order_by($table::id.desc())

View File

@ -551,5 +551,4 @@ mod tests {
Ok(()) Ok(())
}); });
} }
} }

View File

@ -117,15 +117,19 @@ impl Media {
Ok(match self.category() { Ok(match self.category() {
MediaCategory::Image => SafeString::trusted(&format!( MediaCategory::Image => SafeString::trusted(&format!(
r#"<img src="{}" alt="{}" title="{}">"#, r#"<img src="{}" alt="{}" title="{}">"#,
url, escape(&self.alt_text), escape(&self.alt_text) url,
escape(&self.alt_text),
escape(&self.alt_text)
)), )),
MediaCategory::Audio => SafeString::trusted(&format!( MediaCategory::Audio => SafeString::trusted(&format!(
r#"<div class="media-preview audio"></div><audio src="{}" title="{}" controls></audio>"#, r#"<div class="media-preview audio"></div><audio src="{}" title="{}" controls></audio>"#,
url, escape(&self.alt_text) url,
escape(&self.alt_text)
)), )),
MediaCategory::Video => SafeString::trusted(&format!( MediaCategory::Video => SafeString::trusted(&format!(
r#"<video src="{}" title="{}" controls></video>"#, r#"<video src="{}" title="{}" controls></video>"#,
url, escape(&self.alt_text) url,
escape(&self.alt_text)
)), )),
MediaCategory::Unknown => SafeString::trusted(&format!( MediaCategory::Unknown => SafeString::trusted(&format!(
r#"<a href="{}" class="media-preview unknown"></a>"#, r#"<a href="{}" class="media-preview unknown"></a>"#,

View File

@ -10,7 +10,7 @@ use std::path::Path;
#[allow(dead_code)] //variants might not be constructed if not required by current migrations #[allow(dead_code)] //variants might not be constructed if not required by current migrations
enum Action { enum Action {
Sql(&'static str), Sql(&'static str),
Function(&'static Fn(&Connection, &Path) -> Result<()>), Function(&'static dyn Fn(&Connection, &Path) -> Result<()>),
} }
impl Action { impl Action {

View File

@ -153,7 +153,7 @@ impl PlumeQuery {
/// Convert this Query to a Tantivy Query /// Convert this Query to a Tantivy Query
pub fn into_query(self) -> BooleanQuery { 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; gen_to_query!(self, result; normal: title, subtitle, content, tag;
oneoff: instance, author, blog, lang, license); oneoff: instance, author, blog, lang, license);
@ -279,7 +279,7 @@ impl PlumeQuery {
} }
// map a token and it's field to a query // 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.to_lowercase();
let token = token.as_str(); let token = token.as_str();
let field = Searcher::schema().get_field(field_name).unwrap(); let field = Searcher::schema().get_field(field_name).unwrap();

View File

@ -72,7 +72,7 @@ impl Searcher {
schema_builder.build() 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 whitespace_tokenizer = tokenizer::WhitespaceTokenizer.filter(LowerCaser);
let content_tokenizer = SimpleTokenizer 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 whitespace_tokenizer = tokenizer::WhitespaceTokenizer.filter(LowerCaser);
let content_tokenizer = SimpleTokenizer let content_tokenizer = SimpleTokenizer

View File

@ -495,8 +495,7 @@ mod tests {
), ),
published: true, published: true,
license: "GPL".to_string(), license: "GPL".to_string(),
source: "Actually, GNU+Linux, GNU×Linux, or GNU¿Linux are better." source: "Actually, GNU+Linux, GNU×Linux, or GNU¿Linux are better.".to_string(),
.to_string(),
ap_url: "".to_string(), ap_url: "".to_string(),
creation_date: None, creation_date: None,
subtitle: "".to_string(), subtitle: "".to_string(),

View File

@ -811,9 +811,17 @@ mod tests {
); );
let expect_keyword = TimelineQuery::parse(r#"not_a_field contains something"#).unwrap_err(); let expect_keyword = TimelineQuery::parse(r#"not_a_field contains something"#).unwrap_err();
assert_eq!(expect_keyword, QueryError::SyntaxError(0, 11, "Syntax Error: Expected one of 'blog', \ assert_eq!(
expect_keyword,
QueryError::SyntaxError(
0,
11,
"Syntax Error: Expected one of 'blog', \
'author', 'license', 'tags', 'lang', 'title', 'subtitle', 'content', 'followed', 'has_cover', \ 'author', 'license', 'tags', 'lang', 'title', 'subtitle', 'content', 'followed', 'has_cover', \
'local' or 'all', got 'not_a_field'".to_owned())); 'local' or 'all', got 'not_a_field'"
.to_owned()
)
);
let expect_bracket_or_comma = TimelineQuery::parse(r#"lang in [en ["#).unwrap_err(); let expect_bracket_or_comma = TimelineQuery::parse(r#"lang in [en ["#).unwrap_err();
assert_eq!( assert_eq!(

View File

@ -1 +1 @@
nightly-2019-03-23 nightly-2019-12-17

View File

@ -307,17 +307,17 @@ Then try to restart Plume
( (
"/inbox".to_owned(), "/inbox".to_owned(),
"/inbox".to_owned(), "/inbox".to_owned(),
rocket::http::Method::Post, Some(rocket::http::Method::Post),
), ),
( (
"/@/<name>/inbox".to_owned(), "/@/<name>/inbox".to_owned(),
"/@/<name>/inbox".to_owned(), "/@/<name>/inbox".to_owned(),
rocket::http::Method::Post, Some(rocket::http::Method::Post),
), ),
( (
"/api/<path..>".to_owned(), "/api/<path..>".to_owned(),
"/api/<path..>".to_owned(), "/api/<path..>".to_owned(),
rocket::http::Method::Post, Some(rocket::http::Method::Post),
), ),
]) ])
.finalize() .finalize()

View File

@ -298,7 +298,7 @@ pub fn update(
post.license = form.license.clone(); post.license = form.license.clone();
post.cover_id = form.cover; post.cover_id = form.cover;
post.update(&*conn, &rockets.searcher) post.update(&*conn, &rockets.searcher)
.expect("post::update: update error");; .expect("post::update: update error");
if post.published { if post.published {
post.update_mentions( post.update_mentions(
@ -308,7 +308,7 @@ pub fn update(
.filter_map(|m| Mention::build_activity(&rockets, &m).ok()) .filter_map(|m| Mention::build_activity(&rockets, &m).ok())
.collect(), .collect(),
) )
.expect("post::update: mentions error");; .expect("post::update: mentions error");
} }
let tags = form let tags = form
@ -406,7 +406,7 @@ pub fn create(
rockets: PlumeRocket, rockets: PlumeRocket,
) -> Result<RespondOrRedirect, ErrorPage> { ) -> Result<RespondOrRedirect, ErrorPage> {
let conn = &*rockets.conn; let conn = &*rockets.conn;
let blog = Blog::find_by_fqn(&rockets, &blog_name).expect("post::create: blog error");; let blog = Blog::find_by_fqn(&rockets, &blog_name).expect("post::create: blog error");
let slug = form.title.to_string().to_kebab_case(); let slug = form.title.to_string().to_kebab_case();
let user = rockets.user.clone().unwrap(); let user = rockets.user.clone().unwrap();