Fix CourseBook term validation to accept uppercase semesters and reject partial matches

Abierto Apto para principiantes
#216 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
82/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
go
Área
cli

Línea de trabajo

Empieza por la declaración de termRegex y su llamada a MatchString en scrapers/coursebook.go, donde ScrapeCoursebook valida el término antes de la configuración. Lee el ejemplo del README que usa -term 24F para confirmar la entrada esperada. Está terminado cuando 24F, 24f, 26S y 26u se aceptan y se normalizan a minúsculas, y 4f, 124f, 24fextra, abc24f y 24X se rechazan con un error claro antes de que se inicie el navegador.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Description

CourseBook term validation uses the unanchored regex [0-9]{1,2}[sfu] in scrapers/coursebook.go.

This causes two problems:

  • Uppercase terms such as 24F, as documented in the README, are rejected.
  • Malformed terms such as 4f, 124f, and 24fextra pass validation because the regex accepts a matching substring.

Expected behavior:

  • Accept exactly two digits followed by S, U, or F, case-insensitively.
  • Normalize accepted terms to the lowercase format used by the CourseBook scraper before further processing.
  • Reject malformed terms with a clear error before initializing the browser or making requests.
Steps To Reproduce
  1. Build the executable with make build (or build.bat build on Windows).
  2. Run the documented command:
    ./api-tools -scrape -coursebook -term 24F
    
  3. Observe that validation rejects the uppercase semester.
  4. Inspect termRegex and its MatchString call in scrapers/coursebook.go: the pattern also accepts 4f, 124f, and 24fextra.

Malformed values that pass validation proceed toward browser initialization, so inspecting the regex is sufficient to confirm that behavior without starting a scrape.

Additional Context

Starting points:

Suggested manual checks:

  • Accept 24F, 24f, 26S, and 26u.
  • Reject 4f, 124f, 24fextra, abc24f, and 24X.
  • Confirm accepted terms reach scraper setup in the same normalized format.

Keep this task limited to term validation and normalization. Broader scraper error handling is covered by #192.

Environment

Identified by source inspection of commit 3f3585e; not reproduced by executing the scraper. The regex behavior is platform-independent.

Lenguaje dominante
Go
Estrellas
12
Forks
54
Merge medio
14 d 1 h
PR fusionados (30 d)
1

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de UTDNebula/api-tools

Todos los issues de UTDNebula/api-tools

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.