#api-wrapper #ucsd #enrollment #webreg

webweg

UCSD WebReg课程报名系统的异步API包装器

9个不稳定版本 (3个破坏性更新)

0.9.1 2023年12月4日
0.9.0 2023年9月13日
0.8.0 2023年8月8日
0.7.4 2023年3月31日
0.6.1 2022年11月9日

#309 in Web编程

Download history 3/week @ 2024-03-08 13/week @ 2024-03-15 33/week @ 2024-03-29 1/week @ 2024-04-05 1/week @ 2024-04-12 19/week @ 2024-04-19 92/week @ 2024-04-26

每月74次下载

MIT许可协议

370KB
3K SLoC

Project Banner

webweg | webreg_scraper | UCSDHistEnrollmentData

UCSD(加州大学圣地亚哥分校)WebReg课程报名系统的异步API包装器。

用法

要使用此包,请运行以下命令

cargo add webweg

或者,您也可以将以下行放入您的 Cargo.toml

webweg = { version = "0.9", features = ["multi"] }

有关更多信息,请参阅相应的 crates.io 页面。

包装器功能

您可以在WebReg上完成的许多操作都可以使用此包装器完成。例如,您可以

  • 获取季度中所有可能的课程。
  • 根据某些条件搜索课程(即高级搜索)。
  • 获取特定课程的详细信息(例如,已报名学生人数,讲师等)
  • 获取您当前的课程表。

您还可以执行以下操作

  • 更改评分选项。
  • 报名或取消报名课程。
  • 计划或取消计划课程。
  • 加入或取消等待名单。
  • 创建、删除或重命名您的课程表。
  • 向您自己发送确认电子邮件。

要查看一些示例,请查看 examples 文件夹。

多线程

默认情况下,包装器会假设它在一个线程或任务中使用。因此,如果您想要在多个线程或任务之间共享包装器的实例,您必须使用 Mutex。使用 Mutex 的问题是,如果请求耗时较长(这并不罕见),则整个包装器会锁定,直到请求完成,这意味着使用此包装器实例的其他线程必须等待。

通过启用 multi 功能,包装器可以在多个线程或任务中 无需 使用 Mutex 使用。

要添加具有 multi 功能的此包,您可以选择以下任一操作:

cargo add webweg --features multi

webweg = { version = "0.9", features = ["multi"] }

将其放入您的 Cargo.toml 中。

身份验证

点击此处

为此包装器提供授权的方式是提供活动WebReg会话的cookie(即您的身份验证cookie)。

要获取您的身份验证cookie,您需要进行以下操作

  • 登录WebReg。
  • 在WebReg主菜单中选择一个学期。
  • 打开开发者工具(使用谷歌浏览器,点击三个点,选择“更多工具”,然后“开发者工具。”)
  • 转到开发者工具的“网络”标签页。然后,您可以
    • 通过文本 https://act.ucsd.edu/webreg2/svc/wradapter 过滤
    • 或者,通过 Fetch/XHR 过滤。
  • 在WebReg上发起某种请求(例如,搜索课程)。
  • 查找WebReg发起的请求。
    • 在请求头下,复制cookie。

请注意,您的cookie将在以下任一情况下失效:

  • 10分钟的无操作(即,您在10分钟内没有发出使用cookie的请求),或者
  • 当WebReg进入维护模式时;这通常在太平洋时间每天凌晨4:15左右发生。

因此,如果您想执行连续请求,您需要找到一种方法来保持24/7登录到WebReg。

定义文件

这个包包含两个定义文件

  • raw_types
  • types

大多数包装方法将使用可在 types 中找到的返回类型。您很少需要使用 raw_types;唯一需要使用 raw_types 的情况是您正在使用 search_courses 方法。

测试

这里的许多测试都关注包装的 解析 方面,而不是本身发出请求。假设发出请求应该是相对无错误的。

版本控制

此包使用一种基于 语义版本控制 的版本控制方案。对于一个版本

MAJOR.MINOR.PATCH
  • 当添加了非常重大的功能、或者 许多 不向后兼容的更改、或者 添加了(一个或多个)重大的不向后兼容更改时,将增加 MAJOR 版本。
  • 当添加了次要功能、或者 少量(如果有的话)的次要不向后兼容更改时,将增加 MINOR 版本。
  • 当添加了次要增强/功能或修复了错误时,将增加 PATCH 版本。

免责声明

我对因使用此包装引起的任何损害或其他问题不承担责任。换句话说,通过使用此包装,我对您可能遇到麻烦或其他问题不承担责任。

许可证

此存储库中的所有内容均受MIT许可证的许可。

依赖关系

~3–16MB
~236K SLoC