diff options
Diffstat (limited to 'rust/src')
| -rw-r--r-- | rust/src/auth.rs | 43 | ||||
| -rw-r--r-- | rust/src/bin/fatcat-export.rs | 7 | ||||
| -rw-r--r-- | rust/src/editing.rs | 8 | ||||
| -rw-r--r-- | rust/src/endpoints.rs | 11 | ||||
| -rw-r--r-- | rust/src/entity_crud.rs | 41 | ||||
| -rw-r--r-- | rust/src/identifiers.rs | 2 | ||||
| -rw-r--r-- | rust/src/lib.rs | 3 | 
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}; | 
