Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
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
50 changes: 44 additions & 6 deletions packages/talker_http_logger/lib/talker_http_logger.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,13 @@ class TalkerHttpLogger extends InterceptorContract {
required BaseResponse response,
}) async {
final message = '${response.request?.url}';
_talker.logCustom(HttpResponseLog(message, response: response));

if (response.statusCode >= 400 && response.statusCode < 600) {
_talker.logCustom(HttpErrorLog(message, response: response));
} else {
_talker.logCustom(HttpResponseLog(message, response: response));
}

return response;
}
}
Expand All @@ -48,8 +54,7 @@ class HttpRequestLog extends TalkerLog {
String get key => TalkerLogType.httpRequest.key;

@override
String generateTextMessage(
{TimeFormat timeFormat = TimeFormat.timeAndSeconds}) {
String generateTextMessage({TimeFormat timeFormat = TimeFormat.timeAndSeconds}) {
var msg = '[$title] [${request.method}] $message';

final headers = request.headers;
Expand Down Expand Up @@ -78,11 +83,44 @@ class HttpResponseLog extends TalkerLog {
AnsiPen get pen => (AnsiPen()..xterm(46));

@override
String get title => TalkerLogType.httpResponse.key;
String get key => TalkerLogType.httpResponse.key;

@override
String generateTextMessage({TimeFormat timeFormat = TimeFormat.timeAndSeconds}) {
var msg = '[$title] [${response.request?.method}] $message';

final headers = response.request?.headers;

msg += '\nStatus: ${response.statusCode}';

try {
if (headers?.isNotEmpty ?? false) {
final prettyHeaders = encoder.convert(headers);
msg += '\nHeaders: $prettyHeaders';
}
} catch (_) {
// TODO: add handling can`t convert
}
return msg;
}
}

class HttpErrorLog extends TalkerLog {
HttpErrorLog(
String title, {
required this.response,
}) : super(title);

final BaseResponse response;

@override
AnsiPen get pen => AnsiPen()..red();

@override
String get key => TalkerLogType.httpError.key;

@override
String generateTextMessage(
{TimeFormat timeFormat = TimeFormat.timeAndSeconds}) {
String generateTextMessage({TimeFormat timeFormat = TimeFormat.timeAndSeconds}) {
var msg = '[$title] [${response.request?.method}] $message';

final headers = response.request?.headers;
Expand Down