Okabe-Rintarou-0 / SJTU-Canvas-Helper

SJTU Canvas Helper——帮助您更快速便捷地使用上海交通大学课程平台。
92 stars 7 forks source link

fix: Json parse error: missing field `uuid` ... #1

Closed creeper12356 closed 8 months ago

creeper12356 commented 8 months ago

issue: 运行时报错 Json parse error: missing field uuid at line 1 column 26984,无法正常获取Canvas信息。 Screenshot from 2024-03-04 08-29-38 check: 检查发现,在请求课程信息时,服务器返回的JSON列表中,有一个课程对象没有uuid字段(我的Canvas是这样),

{"id":57184,"access_restricted_by_date":true}

这样导致list_items_with_page中反序列化失败,弹出以上的报错。 fix: 修改list_items_with_page,如果T为Course,反序列化自动忽略不含uuid的对象。

Okabe-Rintarou-0 commented 8 months ago

感谢您的贡献,可以考虑针对这种情况处理: https://mitt.uib.no/doc/api/courses.html image

增加一个 access_restricted_by_date: Option\<bool> 的字段处理这种情况

{"id":57184,"access_restricted_by_date":true}

这上面没有出现的字段可以用 #[serde(default)] 来给他默认值,同时list_items 调用之后可以把这种课程过滤掉。

serde 有很多 attributes 可以用, 可以参考:https://serde.rs/attributes.html。 修改 list_items_with_page 不是太好,会影响其他类型的解析。

如果可以的话,可以开个新的 pr,或者用 git push --force 来删除之前的提交,保证提交日志整洁;此外,为了避免 merge xxx from 这样的log,您应该使用 git pull --rebase 这样的方式来拉取远程分支。

建议给 Course 新增一个方法:pub fn is_access_restricted(&self) -> bool,然后筛选掉这种课程。