MCPcopy Create free account
hub / github.com/BohemiaInteractive/CWR / parse_metadata

Method parse_metadata

mserver/MasterService/src/mods.rs:491–516  ·  view source on GitHub ↗
(&self, dir_id: &str, bytes: &[u8])

Source from the content-addressed store, hash-verified

489 let slug = slugify(&meta.name);
490 if slug.is_empty() || size == 0 {
491 let _ = self.store.delete(&temp).await;
492 if slug.is_empty() {
493 bail!(
494 "mod name '{}' has no usable characters for an id",
495 meta.name
496 );
497 }
498 bail!("mod artifact is empty");
499 }
500
501 if self.get_mod(&slug).await?.is_some() {
502 let _ = self.store.delete(&temp).await;
503 bail!("mod id '{slug}' already exists");
504 }
505
506 let digest = hasher.finalize();
507 let version = match meta.version.as_deref() {
508 Some(value) => match sanitize_version(value) {
509 Some(version) => version,
510 None => {
511 let _ = self.store.delete(&temp).await;
512 bail!("invalid version '{value}'");
513 }
514 },
515 None => digest.iter().take(4).map(|b| format!("{b:02x}")).collect(),
516 };
517
518 let artifact_path = self.store_path(Self::revision_artifact_path(&slug, 1));
519 self.place_temp_if_absent(&temp, &artifact_path)

Callers 1

get_modMethod · 0.80

Calls 1

store_pathMethod · 0.80

Tested by

no test coverage detected