Package edu.ucsb.cs.scaffold.services
package edu.ucsb.cs.scaffold.services
-
ClassDescriptionWraps calls to an external REST API (GitHub, PrairieLearn) with three defenses: Pacing: consecutive calls are kept at least
paceMsapart, to stay under rate limits in the first place.Thrown when the API is still failing after all retries; carries a clean one-line message.Graph algorithms for the prerequisite structure of a course's top-level concepts (subconcepts have no position in this graph).Exports and imports a course's entire concept-graph content (concepts, subconcepts, prerequisite edges, and practice problems) as a human-editable YAML document.Thin wrapper around the GitHub REST API, authenticated per call with a user's personal access token.One entry of a directory listing:typeis"dir","file", etc.Bridge between the lib-jobs library and this app's notion of "current user"; lib-jobs uses it to stamp createdById/createdByEmail on Job records.Cleans user-supplied Markdown before it is stored.Encrypts and decrypts users' GitHub personal access tokens (PATs) with AES-256-GCM so the database only ever sees ciphertext.Result of encrypting a PAT: the base64 ciphertext and the key version that produced it.Thin wrapper around the PrairieLearn REST API (see https://docs.prairielearn.com/api/), authenticated per call with a user's PrairieLearn personal access token.One assessment from the/course_instances/{id}/assessmentsresponse — the fields PlAssessment stores (issue #71).The parts of a course instance response this app uses; the numeric id is the crucial one, since it cannot be obtained from the GitHub repo.