Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions example/lib/home.dart
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class _MyHomePageState extends State<MyHomePage> {
},
onUnauthorizedRequestReceived: (response) {
final code = response?.statusCode;
debugPrint('onUnauthorizedRequestReceived code :$code');
debugPrint('onUnauthorizedRequestReceived code :$code');
});
super.initState();

Expand Down Expand Up @@ -191,20 +191,22 @@ class _MyHomePageState extends State<MyHomePage> {
fromJson: Cat.fromJson,
settings: settings.copyWith(
logSettings: const PlayxNetworkLoggerSettings(
printResponseData: false, ),
printResponseData: false,
),
));

debugPrint('Result isError : ${result.isError} isSuccess => ${result.isSuccess}');
debugPrint(
'Result isError : ${result.isError} isSuccess => ${result.isSuccess}');

result.when(success: (cats) {
result.when(success: (cats) {
setState(() {
_isLoading = false;
_cats = cats;
});

debugPrint('Cats are : ${cats.length}');
debugPrint('Cats are : ${cats.length}');
}, error: (error) {
debugPrint('Error is : ${error.message}');
debugPrint('Error is : ${error.message}');
//handle error here
_weatherMsg = "Error is : ${error.message}";
setState(() {
Expand Down
34 changes: 16 additions & 18 deletions lib/src/dio/dio_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class DioClient {
this.customHeaders,
this.customQuery,
required this.settings}) {
if(settings.logSettings.enabled) {
if (settings.logSettings.enabled) {
dio.interceptors.add(
settings.logSettings.buildTalkerDioLogger(),
);
Expand Down Expand Up @@ -78,22 +78,20 @@ class DioClient {
}

/// Download file from the given [url]
Future<Response> download<T>(
String path, {
required dynamic savePath,
Map<String, dynamic> headers = const {},
Map<String, dynamic> query = const {},
Options? options,
bool attachCustomHeaders = true,
bool attachCustomQuery = true,
CancelToken? cancelToken,
ProgressCallback? onReceiveProgress,
bool deleteOnError = true,
String lengthHeader = Headers.contentLengthHeader,
Object? data,
PlayxNetworkLoggerSettings? logSettings,
FileAccessMode fileAccessMode =FileAccessMode.write
}) async {
Future<Response> download<T>(String path,
{required dynamic savePath,
Map<String, dynamic> headers = const {},
Map<String, dynamic> query = const {},
Options? options,
bool attachCustomHeaders = true,
bool attachCustomQuery = true,
CancelToken? cancelToken,
ProgressCallback? onReceiveProgress,
bool deleteOnError = true,
String lengthHeader = Headers.contentLengthHeader,
Object? data,
PlayxNetworkLoggerSettings? logSettings,
FileAccessMode fileAccessMode = FileAccessMode.write}) async {
return _getDioInstance(logSettings: logSettings).download(
path,
savePath,
Expand All @@ -110,7 +108,7 @@ class DioClient {
...headers,
},
),
fileAccessMode:fileAccessMode,
fileAccessMode: fileAccessMode,
cancelToken: cancelToken,
onReceiveProgress: onReceiveProgress,
deleteOnError: deleteOnError,
Expand Down
24 changes: 12 additions & 12 deletions lib/src/handler/api_handler.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ class ApiHandler {
bool buildShouldShowApiErrors(PlayxNetworkClientSettings? settings) =>
(settings ?? this.settings).shouldShowApiErrors;

bool attachLogSettings(PlayxNetworkClientSettings? settings) => (settings ?? this.settings).logSettings.enabled ;
bool attachLogSettings(PlayxNetworkClientSettings? settings) =>
(settings ?? this.settings).logSettings.enabled;

List<int> buildUnauthorizedRequestCodes(
PlayxNetworkClientSettings? settings) =>
Expand Down Expand Up @@ -144,10 +145,9 @@ class ApiHandler {
response: response,
shouldHandleUnauthorizedRequest: shouldHandleUnauthorizedRequest);
_printError(
header: 'Playx Network Error :',
text: exception.errorMessage,
error: exception
);
header: 'Playx Network Error :',
text: exception.errorMessage,
error: exception);
return NetworkResult.error(exception);
} else {
if (isResponseBlank(response) ?? true) {
Expand Down Expand Up @@ -226,7 +226,7 @@ class ApiHandler {
} catch (e, s) {
_printError(
header: 'Playx Network Error :',
error: e,
error: e,
stackTrace: s,
);
return NetworkResult.error(UnexpectedErrorException(
Expand Down Expand Up @@ -427,23 +427,23 @@ class ApiHandler {
void _printError(
{String? header,
String? text,
Object? error,
dynamic stackTrace,
Object? error,
dynamic stackTrace,
PlayxNetworkClientSettings? settings}) {
final bool attachLogs = attachLogSettings(settings);
if(attachLogs){
logger.e(text,error: error,stackTrace: stackTrace );
if (attachLogs) {
logger.e(text, error: error, stackTrace: stackTrace);
}
}


static NetworkResult<T> unableToProcessException<T>({
dynamic e,
dynamic s,
required String exceptionMessage,
bool shouldShowApiErrors = false,
}) {
PlayxLogger.getLogger('Playx Network')?.e(exceptionMessage,error: e,stackTrace: s );
PlayxLogger.getLogger('Playx Network')
?.e(exceptionMessage, error: e, stackTrace: s);
return NetworkResult<T>.error(
UnableToProcessException(
errorMessage: exceptionMessage,
Expand Down
3 changes: 1 addition & 2 deletions lib/src/models/exceptions/network_exception.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@

import 'package:playx_network/playx_network.dart';

/// Base class for handling API errors and providing suitable error messages.
sealed class NetworkException implements Exception{
sealed class NetworkException implements Exception {
/// General error message.
final String errorMessage;

Expand Down
184 changes: 88 additions & 96 deletions lib/src/models/logger/logger_settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import 'package:playx_core/playx_core.dart';
import 'package:talker_dio_logger/talker_dio_logger.dart';

/// Logger settings used to customize what should be logged by the application when performing a request.
class PlayxNetworkLoggerSettings extends Equatable{

class PlayxNetworkLoggerSettings extends Equatable {
// Print Dio logger if true
final bool enabled;

Expand Down Expand Up @@ -42,7 +41,6 @@ class PlayxNetworkLoggerSettings extends Equatable{
/// Print [request.extra] if true
final bool printRequestExtra;


/// For request filtering.
/// You can add your custom logic to log only specific HTTP requests [RequestOptions].
final bool Function(RequestOptions requestOptions)? requestFilter;
Expand All @@ -59,110 +57,104 @@ class PlayxNetworkLoggerSettings extends Equatable{
/// Case insensitive
final Set<String> hiddenHeaders;

const PlayxNetworkLoggerSettings(
{
this.enabled = kDebugMode,
this.printResponseData = true,
this.printResponseHeaders = false,
this.printResponseMessage = true,
this.printResponseRedirects = false,
this.printResponseTime = false,
this.printErrorData = true,
this.printErrorHeaders = true,
this.printErrorMessage = true,
this.printRequestData = true,
this.printRequestHeaders = true,
this.printRequestExtra = false,
this.hiddenHeaders = const <String>{},
this.requestFilter,
this.responseFilter,
this.errorFilter,
});
const PlayxNetworkLoggerSettings({
this.enabled = kDebugMode,
this.printResponseData = true,
this.printResponseHeaders = false,
this.printResponseMessage = true,
this.printResponseRedirects = false,
this.printResponseTime = false,
this.printErrorData = true,
this.printErrorHeaders = true,
this.printErrorMessage = true,
this.printRequestData = true,
this.printRequestHeaders = true,
this.printRequestExtra = false,
this.hiddenHeaders = const <String>{},
this.requestFilter,
this.responseFilter,
this.errorFilter,
});

TalkerDioLogger buildTalkerDioLogger() {
return TalkerDioLogger(
settings: TalkerDioLoggerSettings(
enabled: enabled,
printResponseData: printResponseData,
printResponseHeaders: printResponseHeaders,
printResponseMessage: printResponseMessage,
printResponseRedirects: printResponseRedirects,
printResponseTime: printResponseTime,
printErrorData: printErrorData,
printErrorHeaders: printErrorHeaders,
printErrorMessage: printErrorMessage,
printRequestData: printRequestData,
printRequestHeaders: printRequestHeaders,
printRequestExtra: printRequestExtra,
requestFilter: requestFilter,
responseFilter: responseFilter,
errorFilter: errorFilter,
hiddenHeaders: hiddenHeaders,
)
);
settings: TalkerDioLoggerSettings(
enabled: enabled,
printResponseData: printResponseData,
printResponseHeaders: printResponseHeaders,
printResponseMessage: printResponseMessage,
printResponseRedirects: printResponseRedirects,
printResponseTime: printResponseTime,
printErrorData: printErrorData,
printErrorHeaders: printErrorHeaders,
printErrorMessage: printErrorMessage,
printRequestData: printRequestData,
printRequestHeaders: printRequestHeaders,
printRequestExtra: printRequestExtra,
requestFilter: requestFilter,
responseFilter: responseFilter,
errorFilter: errorFilter,
hiddenHeaders: hiddenHeaders,
));
}

PlayxNetworkLoggerSettings copyWith({
bool? enabled,
bool? printResponseData,
bool? printResponseHeaders,
bool? printResponseMessage,
bool? printResponseRedirects,
bool? printResponseTime,
bool? printErrorData,
bool? printErrorHeaders,
bool? printErrorMessage,
bool? printRequestData,
bool? printRequestHeaders,
bool? printRequestExtra,
bool Function(RequestOptions requestOptions)? requestFilter,
bool Function(Response response)? responseFilter,
bool Function(DioException response)? errorFilter,
Set<String>? hiddenHeaders
}) {
PlayxNetworkLoggerSettings copyWith(
{bool? enabled,
bool? printResponseData,
bool? printResponseHeaders,
bool? printResponseMessage,
bool? printResponseRedirects,
bool? printResponseTime,
bool? printErrorData,
bool? printErrorHeaders,
bool? printErrorMessage,
bool? printRequestData,
bool? printRequestHeaders,
bool? printRequestExtra,
bool Function(RequestOptions requestOptions)? requestFilter,
bool Function(Response response)? responseFilter,
bool Function(DioException response)? errorFilter,
Set<String>? hiddenHeaders}) {
return PlayxNetworkLoggerSettings(
enabled: enabled ?? this.enabled,
printResponseData: printResponseData ?? this.printResponseData,
printResponseHeaders: printResponseHeaders ?? this.printResponseHeaders,
printResponseMessage: printResponseMessage ?? this.printResponseMessage,
printResponseRedirects: printResponseRedirects ?? this.printResponseRedirects,
printResponseTime: printResponseTime ?? this.printResponseTime,
printErrorData: printErrorData ?? this.printErrorData,
printErrorHeaders: printErrorHeaders ?? this.printErrorHeaders,
printErrorMessage: printErrorMessage ?? this.printErrorMessage,
printRequestData: printRequestData ?? this.printRequestData,
printRequestHeaders: printRequestHeaders ?? this.printRequestHeaders,
printRequestExtra: printRequestExtra ?? this.printRequestExtra,
requestFilter: requestFilter ?? this.requestFilter,
responseFilter: responseFilter ?? this.responseFilter,
errorFilter: errorFilter ?? this.errorFilter,
hiddenHeaders: hiddenHeaders ?? this.hiddenHeaders
);
enabled: enabled ?? this.enabled,
printResponseData: printResponseData ?? this.printResponseData,
printResponseHeaders: printResponseHeaders ?? this.printResponseHeaders,
printResponseMessage: printResponseMessage ?? this.printResponseMessage,
printResponseRedirects:
printResponseRedirects ?? this.printResponseRedirects,
printResponseTime: printResponseTime ?? this.printResponseTime,
printErrorData: printErrorData ?? this.printErrorData,
printErrorHeaders: printErrorHeaders ?? this.printErrorHeaders,
printErrorMessage: printErrorMessage ?? this.printErrorMessage,
printRequestData: printRequestData ?? this.printRequestData,
printRequestHeaders: printRequestHeaders ?? this.printRequestHeaders,
printRequestExtra: printRequestExtra ?? this.printRequestExtra,
requestFilter: requestFilter ?? this.requestFilter,
responseFilter: responseFilter ?? this.responseFilter,
errorFilter: errorFilter ?? this.errorFilter,
hiddenHeaders: hiddenHeaders ?? this.hiddenHeaders);
}



@override
List<Object?> get props => [
enabled,
printResponseData,
printResponseHeaders,
printResponseMessage,
printResponseRedirects,
printResponseTime,
printErrorData,
printErrorHeaders,
printErrorMessage,
printRequestData,
printRequestHeaders,
printRequestExtra,
requestFilter,
responseFilter,
errorFilter,
hiddenHeaders
];
enabled,
printResponseData,
printResponseHeaders,
printResponseMessage,
printResponseRedirects,
printResponseTime,
printErrorData,
printErrorHeaders,
printErrorMessage,
printRequestData,
printRequestHeaders,
printRequestExtra,
requestFilter,
responseFilter,
errorFilter,
hiddenHeaders
];

@override
bool get stringify => true;

}
Loading
Loading