feat: release undergraduate integration 0.7.0
This commit is contained in:
@@ -82,32 +82,37 @@ class UndergraduatePageEvidence {
|
||||
!UndergraduateNavigationPolicy.canNavigate(
|
||||
current,
|
||||
isMainFrame: true,
|
||||
))
|
||||
)) {
|
||||
throw const FormatException('页面证据无效');
|
||||
}
|
||||
final pages = value['pages'];
|
||||
if (pages is! List || pages.length > 32)
|
||||
if (pages is! List || pages.length > 32) {
|
||||
throw const FormatException('页面片段过多');
|
||||
}
|
||||
var bytes = 0;
|
||||
final result = <UndergraduateFragment>[];
|
||||
for (final page in pages) {
|
||||
if (page is! Map ||
|
||||
page['url'] is! String ||
|
||||
page['html'] is! String ||
|
||||
!const ['timetable', 'exams'].contains(page['kind']))
|
||||
!const ['timetable', 'exams'].contains(page['kind'])) {
|
||||
throw const FormatException('页面片段无效');
|
||||
}
|
||||
final uri = Uri.parse(page['url'] as String),
|
||||
body = page['html'] as String;
|
||||
bytes += utf8.encode(body).length;
|
||||
if (bytes > 2 * 1024 * 1024 ||
|
||||
!UndergraduateNavigationPolicy.isDataPage(current) ||
|
||||
!UndergraduateNavigationPolicy.isDataPage(uri) ||
|
||||
current.origin != uri.origin)
|
||||
current.origin != uri.origin) {
|
||||
throw const FormatException('页面来源或大小无效');
|
||||
}
|
||||
result.add(UndergraduateFragment(page['kind'] as String, uri, body));
|
||||
}
|
||||
if (!UndergraduateNavigationPolicy.isDataPage(current) &&
|
||||
(value['authenticated'] == true || result.isNotEmpty))
|
||||
(value['authenticated'] == true || result.isNotEmpty)) {
|
||||
throw const FormatException('认证页面不能作为数据来源');
|
||||
}
|
||||
return UndergraduatePageEvidence(
|
||||
value['authenticated'] == true,
|
||||
List.unmodifiable(result),
|
||||
|
||||
Reference in New Issue
Block a user