roster history fixes

This commit is contained in:
Robin Appelman 2025-04-15 22:25:46 +02:00
commit 59e41ba7a7
2 changed files with 7 additions and 12 deletions

View file

@ -7,11 +7,12 @@
let let
inherit (lib.sources) sourceByRegex; inherit (lib.sources) sourceByRegex;
inherit (builtins) fromTOML readFile; inherit (builtins) fromTOML readFile;
src = sourceByRegex ./archiver [ "Cargo.*" "(src)(/.*)?" "README.md" "(.sqlx)(/.*)?" ]; src = sourceByRegex ./. [ "Cargo.*" "((types|archiver|)/?(src)?)(/.*)?" "README.md" ];
version = (fromTOML (readFile archiver/Cargo.toml)).package.version; version = (fromTOML (readFile archiver/Cargo.toml)).package.version;
in in
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "ugc-api-archiver"; pname = "ugc-api-archiver";
sourceRoot = "${src.name}/archiver";
inherit src version; inherit src version;

View file

@ -1,5 +1,5 @@
use super::Parser; use super::Parser;
use crate::data::{RosterHistory, TeamRosterData, MembershipRole}; use crate::data::{MembershipRole, RosterHistory, TeamRosterData};
use crate::parser::{select_text, ROSTER_HISTORY_DATE_FORMAT}; use crate::parser::{select_text, ROSTER_HISTORY_DATE_FORMAT};
use crate::{ParseError, Result}; use crate::{ParseError, Result};
use scraper::{Html, Selector}; use scraper::{Html, Selector};
@ -60,11 +60,7 @@ impl Parser for TeamRosterHistoryParser {
let history = document let history = document
.select(&self.selector_item) .select(&self.selector_item)
.map(|item| { .map(|item| {
let name = let name = select_text(item, &self.selector_name).unwrap_or_default();
select_text(item, &self.selector_name).ok_or(ParseError::ElementNotFound {
selector: SELECTOR_ROSTER_NAME,
role: "member name",
})?;
let steam_id = let steam_id =
select_text(item, &self.selector_id).ok_or(ParseError::ElementNotFound { select_text(item, &self.selector_id).ok_or(ParseError::ElementNotFound {
selector: SELECTOR_ROSTER_ID, selector: SELECTOR_ROSTER_ID,
@ -78,12 +74,10 @@ impl Parser for TeamRosterHistoryParser {
)?; )?;
let left = select_text(item, &self.selector_left); let left = select_text(item, &self.selector_left);
let role = select_text(item, &self.selector_role) let role = select_text(item, &self.selector_role)
.ok_or(ParseError::ElementNotFound { .unwrap_or_default()
selector: SELECTOR_ROSTER_ROLE,
role: "member role",
})?
.trim_start_matches("Former ") .trim_start_matches("Former ")
.parse::<MembershipRole>().unwrap_or(MembershipRole::Member); .parse::<MembershipRole>()
.unwrap_or(MembershipRole::Member);
Ok(RosterHistory { Ok(RosterHistory {
name: name.to_string(), name: name.to_string(),