mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-21 01:26:59 +08:00
@@ -1,3 +1,4 @@
|
||||
import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/models/common/account_type.dart';
|
||||
import 'package:PiliPlus/utils/accounts.dart';
|
||||
import 'package:PiliPlus/utils/id_utils.dart';
|
||||
@@ -48,9 +49,11 @@ class LoginAccount implements Account {
|
||||
|
||||
@override
|
||||
late final Map<String, String> headers = {
|
||||
...Constants.baseHeaders,
|
||||
'x-bili-mid': _midStr,
|
||||
'x-bili-aurora-eid': IdUtils.genAuroraEid(mid),
|
||||
};
|
||||
|
||||
@override
|
||||
late String csrf =
|
||||
cookieJar.domainCookies['bilibili.com']!['/']!['bili_jct']!.cookie.value;
|
||||
@@ -120,7 +123,7 @@ class AnonymousAccount implements Account {
|
||||
@override
|
||||
String csrf = '';
|
||||
@override
|
||||
final Map<String, String> headers = const {};
|
||||
final Map<String, String> headers = Constants.baseHeaders;
|
||||
|
||||
@override
|
||||
bool activited = false;
|
||||
@@ -204,3 +207,53 @@ extension BiliCookieJar on DefaultCookieJar {
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
class NoAccount implements Account {
|
||||
@override
|
||||
String? accessKey;
|
||||
|
||||
@override
|
||||
bool activited = false;
|
||||
|
||||
@override
|
||||
DefaultCookieJar cookieJar = DefaultCookieJar();
|
||||
|
||||
@override
|
||||
String csrf = '';
|
||||
|
||||
@override
|
||||
String? refresh;
|
||||
|
||||
@override
|
||||
Set<AccountType> type = const {};
|
||||
|
||||
@override
|
||||
Future<void> delete() {
|
||||
return Future.value();
|
||||
}
|
||||
|
||||
@override
|
||||
final Map<String, String> headers = const {};
|
||||
|
||||
@override
|
||||
bool isLogin = false;
|
||||
|
||||
@override
|
||||
int mid = 0;
|
||||
|
||||
@override
|
||||
Future<void> onChange() {
|
||||
return Future.value();
|
||||
}
|
||||
|
||||
@override
|
||||
Map<String, dynamic>? toJson() {
|
||||
return null;
|
||||
}
|
||||
|
||||
NoAccount._();
|
||||
|
||||
static final _instance = NoAccount._();
|
||||
|
||||
factory NoAccount() => _instance;
|
||||
}
|
||||
|
||||
@@ -95,19 +95,19 @@ class AccountManager extends Interceptor {
|
||||
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
|
||||
final path = options.path;
|
||||
|
||||
if (_skipCookie(path)) return handler.next(options);
|
||||
late final Account account = options.extra['account'] ?? _findAccount(path);
|
||||
|
||||
final Account account = options.extra['account'] ?? _findAccount(path);
|
||||
if (_skipCookie(path) || account is NoAccount) return handler.next(options);
|
||||
|
||||
if (account.isLogin) {
|
||||
options.headers.addAll(account.headers);
|
||||
} else if (path == Api.heartBeat) {
|
||||
if (!account.isLogin && path == Api.heartBeat) {
|
||||
return handler.reject(
|
||||
DioException.requestCancelled(requestOptions: options, reason: null),
|
||||
false,
|
||||
);
|
||||
}
|
||||
|
||||
options.headers.addAll(account.headers);
|
||||
|
||||
// app端不需要管理cookie
|
||||
if (path.startsWith(HttpString.appBaseUrl)) {
|
||||
// if (kDebugMode) debugPrint('is app: ${options.path}');
|
||||
@@ -130,11 +130,6 @@ class AccountManager extends Interceptor {
|
||||
}
|
||||
return handler.next(options);
|
||||
} else {
|
||||
if (account is AnonymousAccount && options.extra['checkReply'] == true) {
|
||||
options.headers[HttpHeaders.cookieHeader] = '';
|
||||
handler.next(options);
|
||||
return;
|
||||
}
|
||||
account.cookieJar
|
||||
.loadForRequest(options.uri)
|
||||
.then((cookies) {
|
||||
|
||||
Reference in New Issue
Block a user