aboutsummaryrefslogtreecommitdiffstats
path: root/rust/src
diff options
context:
space:
mode:
Diffstat (limited to 'rust/src')
-rw-r--r--rust/src/auth.rs43
-rw-r--r--rust/src/bin/fatcat-export.rs7
-rw-r--r--rust/src/editing.rs8
-rw-r--r--rust/src/endpoints.rs11
-rw-r--r--rust/src/entity_crud.rs41
-rw-r--r--rust/src/identifiers.rs2
-rw-r--r--rust/src/lib.rs3
7 files changed, 58 insertions, 57 deletions
diff --git a/rust/src/auth.rs b/rust/src/auth.rs
index 255da8dd..07dfb4f6 100644
--- a/rust/src/auth.rs
+++ b/rust/src/auth.rs
@@ -110,7 +110,7 @@ fn new_auth_ironerror(m: &str) -> iron::error::IronError {
)
}
-#[derive(Debug)]
+#[derive(Debug, Default)]
pub struct OpenAuthMiddleware;
impl OpenAuthMiddleware {
@@ -131,7 +131,7 @@ impl iron::middleware::BeforeMiddleware for OpenAuthMiddleware {
}
}
-#[derive(Debug)]
+#[derive(Debug, Default)]
pub struct MacaroonAuthMiddleware;
impl MacaroonAuthMiddleware {
@@ -183,17 +183,17 @@ impl AuthConfectionary {
pub fn new(
location: String,
identifier: String,
- key_base64: String,
+ key_base64: &str,
) -> Result<AuthConfectionary> {
macaroon::initialize().unwrap();
let key = BASE64.decode(key_base64.as_bytes())?;
let mut root_keys = HashMap::new();
root_keys.insert(identifier.clone(), key.clone());
Ok(AuthConfectionary {
- location: location,
- identifier: identifier,
- key: key,
- root_keys: root_keys,
+ location,
+ identifier,
+ key,
+ root_keys,
})
}
@@ -201,12 +201,12 @@ impl AuthConfectionary {
AuthConfectionary::new(
"test.fatcat.wiki".to_string(),
"dummy".to_string(),
- BASE64.encode(DUMMY_KEY),
+ &BASE64.encode(DUMMY_KEY),
)
.unwrap()
}
- pub fn add_keypair(&mut self, identifier: String, key_base64: String) -> Result<()> {
+ pub fn add_keypair(&mut self, identifier: String, key_base64: &str) -> Result<()> {
let key = BASE64.decode(key_base64.as_bytes())?;
self.root_keys.insert(identifier, key);
Ok(())
@@ -392,7 +392,7 @@ impl AuthConfectionary {
let editor_row = self.parse_macaroon_token(conn, &token, endpoint)?;
Ok(Some(AuthContext {
editor_id: FatCatId::from_uuid(&editor_row.id),
- editor_row: editor_row,
+ editor_row,
}))
}
@@ -476,20 +476,17 @@ pub fn env_confectionary() -> Result<AuthConfectionary> {
let auth_key = env::var("AUTH_SECRET_KEY").expect("AUTH_SECRET_KEY must be set");
let auth_key_ident = env::var("AUTH_KEY_IDENT").expect("AUTH_KEY_IDENT must be set");
info!("Loaded primary auth key: {}", auth_key_ident);
- let mut confectionary = AuthConfectionary::new(auth_location, auth_key_ident, auth_key)?;
- match env::var("AUTH_ALT_KEYS") {
- Ok(var) => {
- for pair in var.split(",") {
- let pair: Vec<&str> = pair.split(":").collect();
- if pair.len() != 2 {
- println!("{:#?}", pair);
- bail!("couldn't parse keypair from AUTH_ALT_KEYS (expected 'ident:key' pairs separated by commas)");
- }
- info!("Loading alt auth key: {}", pair[0]);
- confectionary.add_keypair(pair[0].to_string(), pair[1].to_string())?;
+ let mut confectionary = AuthConfectionary::new(auth_location, auth_key_ident, &auth_key)?;
+ if let Ok(var) = env::var("AUTH_ALT_KEYS") {
+ for pair in var.split(',') {
+ let pair: Vec<&str> = pair.split(':').collect();
+ if pair.len() != 2 {
+ println!("{:#?}", pair);
+ bail!("couldn't parse keypair from AUTH_ALT_KEYS (expected 'ident:key' pairs separated by commas)");
}
+ info!("Loading alt auth key: {}", pair[0]);
+ confectionary.add_keypair(pair[0].to_string(), pair[1])?;
}
- Err(_) => (),
- }
+ };
Ok(confectionary)
}
diff --git a/rust/src/bin/fatcat-export.rs b/rust/src/bin/fatcat-export.rs
index 889d7dff..157070e5 100644
--- a/rust/src/bin/fatcat-export.rs
+++ b/rust/src/bin/fatcat-export.rs
@@ -1,5 +1,8 @@
//! JSON Export Helper
+// using closures as a Result/? hack
+#![allow(clippy::redundant_closure_call)]
+
#[macro_use]
extern crate clap;
#[macro_use]
@@ -100,7 +103,7 @@ fn loop_printer(
let mut buf_output = BufWriter::new(output);
for line in output_receiver {
buf_output.write_all(&line.into_bytes())?;
- buf_output.write(b"\n")?;
+ buf_output.write_all(b"\n")?;
buf_output.flush()?;
}
drop(done_sender);
@@ -108,7 +111,7 @@ fn loop_printer(
}
fn parse_line(s: &str) -> Result<IdentRow> {
- let fields: Vec<String> = s.split("\t").map(|v| v.to_string()).collect();
+ let fields: Vec<String> = s.split('\t').map(|v| v.to_string()).collect();
if fields.len() != 3 {
bail!("Invalid input line");
}
diff --git a/rust/src/editing.rs b/rust/src/editing.rs
index e3777e24..b501a6cf 100644
--- a/rust/src/editing.rs
+++ b/rust/src/editing.rs
@@ -26,7 +26,7 @@ impl EditContext {
if count > 0 {
return Err(ErrorKind::EditgroupAlreadyAccepted(self.editgroup_id.to_string()).into());
}
- return Ok(());
+ Ok(())
}
}
@@ -48,10 +48,10 @@ pub fn make_edit_context(
(None, false) => FatCatId::from_uuid(&get_or_create_editgroup(editor_id.to_uuid(), conn)?),
};
Ok(EditContext {
- editor_id: editor_id,
- editgroup_id: editgroup_id,
+ editor_id,
+ editgroup_id,
extra_json: None,
- autoaccept: autoaccept,
+ autoaccept,
})
}
diff --git a/rust/src/endpoints.rs b/rust/src/endpoints.rs
index 91db1027..c1033bc7 100644
--- a/rust/src/endpoints.rs
+++ b/rust/src/endpoints.rs
@@ -4,6 +4,9 @@
//! response types (mapping to HTTP statuses. Some contain actual endpoint implementations, but
//! most implementation lives in the server module.
+// using closures as a Result/? hack
+#![allow(clippy::redundant_closure_call)]
+
use crate::auth::*;
use crate::database_models::EntityEditRow;
use crate::editing::*;
@@ -1075,10 +1078,10 @@ impl Api for Server {
let mut entity = entity.clone();
match entity.editor_id.clone() {
Some(editor_id) => {
- if !auth_context.has_role(FatcatRole::Admin) {
- if editor_id != auth_context.editor_id.to_string() {
- bail!("not authorized to create editgroups in others' names");
- }
+ if editor_id != auth_context.editor_id.to_string()
+ && !auth_context.has_role(FatcatRole::Admin)
+ {
+ bail!("not authorized to create editgroups in others' names");
}
}
None => {
diff --git a/rust/src/entity_crud.rs b/rust/src/entity_crud.rs
index d5c8081b..186ee20c 100644
--- a/rust/src/entity_crud.rs
+++ b/rust/src/entity_crud.rs
@@ -103,7 +103,7 @@ pub struct ExpandFlags {
impl FromStr for ExpandFlags {
type Err = Error;
fn from_str(param: &str) -> Result<ExpandFlags> {
- let list: Vec<&str> = param.split_terminator(",").collect();
+ let list: Vec<&str> = param.split_terminator(',').collect();
Ok(ExpandFlags::from_str_list(&list))
}
}
@@ -189,7 +189,7 @@ pub struct HideFlags {
impl FromStr for HideFlags {
type Err = Error;
fn from_str(param: &str) -> Result<HideFlags> {
- let list: Vec<&str> = param.split_terminator(",").collect();
+ let list: Vec<&str> = param.split_terminator(',').collect();
Ok(HideFlags::from_str_list(&list))
}
}
@@ -363,7 +363,7 @@ macro_rules! generic_db_create_batch {
.map(|(rev_id, ident_id)| Self::EditNewRow {
editgroup_id: edit_context.editgroup_id.to_uuid(),
rev_id: Some(rev_id),
- ident_id: ident_id,
+ ident_id,
redirect_id: None,
prev_rev: None,
extra_json: edit_context.extra_json.clone(),
@@ -809,7 +809,7 @@ impl EntityCrud for ContainerEntity {
name: Some(rev_row.name),
abbrev: rev_row.abbrev,
coden: rev_row.coden,
- state: state,
+ state,
ident: ident_id,
revision: Some(rev_row.id.to_string()),
redirect: redirect_id,
@@ -920,7 +920,7 @@ impl EntityCrud for CreatorEntity {
surname: rev_row.surname,
orcid: rev_row.orcid,
wikidata_qid: rev_row.wikidata_qid,
- state: state,
+ state,
ident: ident_id,
revision: Some(rev_row.id.to_string()),
redirect: redirect_id,
@@ -1052,7 +1052,7 @@ impl EntityCrud for FileEntity {
urls: Some(urls),
mimetype: rev_row.mimetype,
release_ids: Some(release_ids.iter().map(|fcid| fcid.to_string()).collect()),
- state: state,
+ state,
ident: ident_id,
revision: Some(rev_row.id.to_string()),
redirect: redirect_id,
@@ -1235,7 +1235,7 @@ impl EntityCrud for FilesetEntity {
manifest: Some(manifest),
urls: Some(urls),
release_ids: Some(release_ids.iter().map(|fcid| fcid.to_string()).collect()),
- state: state,
+ state,
ident: ident_id,
revision: Some(rev_row.id.to_string()),
redirect: redirect_id,
@@ -1448,7 +1448,7 @@ impl EntityCrud for WebcaptureEntity {
original_url: Some(rev_row.original_url),
timestamp: Some(chrono::DateTime::from_utc(rev_row.timestamp, chrono::Utc)),
release_ids: Some(release_ids.iter().map(|fcid| fcid.to_string()).collect()),
- state: state,
+ state,
ident: ident_id,
revision: Some(rev_row.id.to_string()),
redirect: redirect_id,
@@ -1762,7 +1762,7 @@ impl EntityCrud for ReleaseEntity {
.map(|(rev_id, ident_id)| Self::EditNewRow {
editgroup_id: edit_context.editgroup_id.to_uuid(),
rev_id: Some(rev_id),
- ident_id: ident_id,
+ ident_id,
redirect_id: None,
prev_rev: None,
extra_json: edit_context.extra_json.clone(),
@@ -1837,9 +1837,10 @@ impl EntityCrud for ReleaseEntity {
),
};
- let abstracts: Option<Vec<ReleaseEntityAbstracts>> = match hide.abstracts {
- true => None,
- false => Some(
+ let abstracts: Option<Vec<ReleaseEntityAbstracts>> = if hide.abstracts {
+ None
+ } else {
+ Some(
release_rev_abstract::table
.inner_join(abstracts::table)
.filter(release_rev_abstract::release_rev.eq(rev_row.id))
@@ -1854,7 +1855,7 @@ impl EntityCrud for ReleaseEntity {
},
)
.collect(),
- ),
+ )
};
Ok(ReleaseEntity {
@@ -1882,10 +1883,10 @@ impl EntityCrud for ReleaseEntity {
publisher: rev_row.publisher,
language: rev_row.language,
work_id: Some(FatCatId::from_uuid(&rev_row.work_ident_id).to_string()),
- refs: refs,
- contribs: contribs,
- abstracts: abstracts,
- state: state,
+ refs,
+ contribs,
+ abstracts,
+ state,
ident: ident_id,
revision: Some(rev_row.id.to_string()),
redirect: redirect_id,
@@ -1979,7 +1980,7 @@ impl EntityCrud for ReleaseEntity {
.iter()
.map(|r| {
Ok(ReleaseRefNewRow {
- release_rev: rev_id.clone(),
+ release_rev: *rev_id,
target_release_ident_id: match r.target_release_id.clone() {
None => None,
Some(v) => Some(FatCatId::from_str(&v)?.to_uuid()),
@@ -2005,7 +2006,7 @@ impl EntityCrud for ReleaseEntity {
.iter()
.map(|c| {
Ok(ReleaseContribNewRow {
- release_rev: rev_id.clone(),
+ release_rev: *rev_id,
creator_ident_id: match c.creator_id.clone() {
None => None,
Some(v) => Some(FatCatId::from_str(&v)?.to_uuid()),
@@ -2136,7 +2137,7 @@ impl EntityCrud for WorkEntity {
};
Ok(WorkEntity {
- state: state,
+ state,
ident: ident_id,
revision: Some(rev_row.id.to_string()),
redirect: redirect_id,
diff --git a/rust/src/identifiers.rs b/rust/src/identifiers.rs
index adb9f413..386570b9 100644
--- a/rust/src/identifiers.rs
+++ b/rust/src/identifiers.rs
@@ -17,7 +17,7 @@ impl ToString for FatCatId {
impl FromStr for FatCatId {
type Err = Error;
fn from_str(s: &str) -> Result<FatCatId> {
- fcid2uuid(s).map(|u| FatCatId(u))
+ fcid2uuid(s).map(FatCatId)
}
}
diff --git a/rust/src/lib.rs b/rust/src/lib.rs
index df3d6f51..90a1f250 100644
--- a/rust/src/lib.rs
+++ b/rust/src/lib.rs
@@ -20,6 +20,3 @@ pub mod entity_crud;
pub mod errors;
pub mod identifiers;
pub mod server;
-
-// TODO: will probably remove these as a public export?
-pub use crate::server::{create_server, create_test_server};