enhancement: 测试

This commit is contained in:
rang 2025-12-23 17:54:46 +08:00
parent 6efa41e035
commit 7d3e22afb7
9 changed files with 95 additions and 48 deletions

View file

@ -1,5 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
import 'package:shelfsdk/audiobookshelf_api.dart' as shelfsdk;
import 'package:vaani/features/settings/models/api_settings.dart';
import 'package:vaani/features/settings/models/audiobookshelf_server.dart';
@ -98,32 +97,80 @@ extension ObfuscateApiSettings on ApiSettings {
}
}
extension ObfuscateRequest on http.BaseRequest {
http.BaseRequest obfuscate() {
// extension ObfuscateRequest on http.BaseRequest {
// http.BaseRequest obfuscate() {
// if (!kReleaseMode) {
// return this;
// }
// return http.Request(
// method,
// url.obfuscate(),
// );
// }
// }
// extension ObfuscateResponse on http.Response {
// http.Response obfuscate() {
// if (!kReleaseMode) {
// return this;
// }
// return http.Response(
// obfuscateBody(),
// statusCode,
// headers: headers,
// request: request?.obfuscate(),
// );
// }
// String obfuscateBody() {
// if (!kReleaseMode) {
// return body;
// }
// // replace any email addresses with emailObfuscated
// // replace any phone numbers with phoneObfuscated
// // replace any urls with urlObfuscated
// // replace any tokens with tokenObfuscated
// // token regex is `"token": "..."`
// return body
// .replaceAll(
// RegExp(r'(\b\w+@\w+\.\w+\b)|'
// r'(\b\d{3}-\d{3}-\d{4}\b)|'
// r'(\bhttps?://\S+\b)'),
// 'obfuscated',
// )
// .replaceAll(
// RegExp(r'"?token"?:?\s*"[^"]+"'),
// '"token": "tokenObfuscated"',
// );
// }
// }
extension ObfuscateRequest on shelfsdk.ApiRequest {
shelfsdk.ApiRequest obfuscate() {
if (!kReleaseMode) {
return this;
}
return http.Request(
method,
url.obfuscate(),
return shelfsdk.ApiRequest(
method: method,
url: url,
);
}
}
extension ObfuscateResponse on http.Response {
http.Response obfuscate() {
extension ObfuscateResponse on shelfsdk.ApiResponse {
shelfsdk.ApiResponse obfuscate() {
if (!kReleaseMode) {
return this;
}
return http.Response(
obfuscateBody(),
return shelfsdk.BaseResponse(
statusCode,
obfuscateBody(),
headers: headers,
request: request?.obfuscate(),
request: request.obfuscate(),
);
}
String obfuscateBody() {
dynamic obfuscateBody() {
if (!kReleaseMode) {
return body;
}

View file

@ -1,26 +1,26 @@
import 'package:http/http.dart' as http;
import 'package:logging/logging.dart';
import 'package:shelfsdk/audiobookshelf_api.dart';
import 'package:vaani/shared/extensions/obfuscation.dart';
final _logger = Logger('ErrorResponse');
class ErrorResponseHandler {
String? name;
http.Response _response;
ApiResponse _response;
bool logRawResponse;
ErrorResponseHandler({
this.name,
http.Response? response,
dynamic response,
this.logRawResponse = false,
}) : _response = response ?? http.Response('', 418);
}) : _response = response ?? BaseResponse(418, '');
void storeError(http.Response response, [Object? error]) {
void storeError(ApiResponse response, [Object? error]) {
if (logRawResponse) {
_logger.fine('for $name got response: ${response.obfuscate()}');
_logger.severe('for $name got response: ${response.obfuscate()}');
}
_response = response;
}
http.Response get response => _response;
ApiResponse get response => _response;
}