Add custom pretty formatter and strip quotes option #2#465
Add custom pretty formatter and strip quotes option #2#465westito wants to merge 3 commits intoFrezyx:masterfrom
Conversation
Reviewer's GuideIntroduces a reusable TalkerJsonFormatter utility that supports default pretty JSON, quote-stripping, and custom formatting callbacks, and wires it into the Dio, HTTP, and Chopper loggers via new jsonFormatter settings while updating logs/tests to exercise the new behaviors and precedence with existing responseDataConverter logic. Sequence diagram for Dio response logging with custom formatter and stripQuotessequenceDiagram
participant Caller
participant DioResponseLog
participant TalkerDioLoggerSettings
participant TalkerJsonFormatter
Caller->>DioResponseLog: generateTextMessage()
DioResponseLog->>TalkerDioLoggerSettings: access responseDataConverter
alt responseDataConverter is not null
DioResponseLog->>TalkerDioLoggerSettings: responseDataConverter(response)
DioResponseLog-->>Caller: message with converted data
else responseDataConverter is null
DioResponseLog->>TalkerDioLoggerSettings: access jsonFormatter
DioResponseLog->>TalkerJsonFormatter: format(data)
TalkerJsonFormatter-->>DioResponseLog: formattedJson
DioResponseLog-->>Caller: message with formattedJson
end
Class diagram for TalkerJsonFormatter integration into logger settingsclassDiagram
class TalkerJsonFormatter {
+bool stripQuotes
-String Function(dynamic data) _customFormatter
+TalkerJsonFormatter(stripQuotes bool stripQuotes)
+TalkerJsonFormatter.custom(String Function(dynamic data) customFormatter)
+String format(dynamic data)
}
class TalkerDioLoggerSettings {
+TalkerDioLoggerSettings(...)
+TalkerDioLoggerSettings copyWith(..., TalkerJsonFormatter jsonFormatter, ...)
+TalkerJsonFormatter jsonFormatter
+String Function(Response response) responseDataConverter
}
class TalkerHttpLoggerSettings {
+TalkerHttpLoggerSettings(...)
+TalkerHttpLoggerSettings copyWith(..., TalkerJsonFormatter jsonFormatter, ...)
+TalkerJsonFormatter jsonFormatter
}
class TalkerChopperLoggerSettings {
+TalkerChopperLoggerSettings(...)
+TalkerChopperLoggerSettings copyWith(..., TalkerJsonFormatter jsonFormatter, ...)
+TalkerJsonFormatter jsonFormatter
}
class DioRequestLog {
+RequestOptions requestOptions
+TalkerDioLoggerSettings settings
+String generateTextMessage(...)
+String Function(dynamic data) _format
}
class DioResponseLog {
+Response response
+TalkerDioLoggerSettings settings
+int responseTime
+String generateTextMessage(...)
+String Function(dynamic data) _format
}
class DioErrorLog {
+DioException error
+TalkerDioLoggerSettings settings
+int responseTime
+String generateTextMessage(...)
+String Function(dynamic data) _format
}
class HttpRequestLog {
+BaseRequest request
+TalkerHttpLoggerSettings settings
+String generateTextMessage(...)
+String convert(Object object)
}
class HttpResponseLog {
+BaseResponse response
+TalkerHttpLoggerSettings settings
+String generateTextMessage(...)
+String convert(Object object)
}
class HttpErrorLog {
+BaseResponse response
+TalkerHttpLoggerSettings settings
+String generateTextMessage(...)
+String convert(Object object)
}
class ChopperRequestLog {
+Request request
+TalkerChopperLoggerSettings settings
+String generateTextMessage(...)
+String convert(Object object)
}
class ChopperResponseLog {
+Response response
+TalkerChopperLoggerSettings settings
+int responseTime
+String generateTextMessage(...)
+String convert(Object object)
}
class ChopperErrorLog {
+Request request
+TalkerChopperLoggerSettings settings
+int responseTime
+String generateTextMessage(...)
+String convert(Object object)
}
TalkerDioLoggerSettings --> TalkerJsonFormatter : uses
TalkerHttpLoggerSettings --> TalkerJsonFormatter : uses
TalkerChopperLoggerSettings --> TalkerJsonFormatter : uses
DioRequestLog --> TalkerDioLoggerSettings : has
DioResponseLog --> TalkerDioLoggerSettings : has
DioErrorLog --> TalkerDioLoggerSettings : has
HttpRequestLog --> TalkerHttpLoggerSettings : has
HttpResponseLog --> TalkerHttpLoggerSettings : has
HttpErrorLog --> TalkerHttpLoggerSettings : has
ChopperRequestLog --> TalkerChopperLoggerSettings : has
ChopperResponseLog --> TalkerChopperLoggerSettings : has
ChopperErrorLog --> TalkerChopperLoggerSettings : has
DioRequestLog ..> TalkerJsonFormatter : calls format via settings.jsonFormatter
DioResponseLog ..> TalkerJsonFormatter : calls format via settings.jsonFormatter
DioErrorLog ..> TalkerJsonFormatter : calls format via settings.jsonFormatter
HttpRequestLog ..> TalkerJsonFormatter : calls format via settings.jsonFormatter
HttpResponseLog ..> TalkerJsonFormatter : calls format via settings.jsonFormatter
HttpErrorLog ..> TalkerJsonFormatter : calls format via settings.jsonFormatter
ChopperRequestLog ..> TalkerJsonFormatter : calls format via settings.jsonFormatter
ChopperResponseLog ..> TalkerJsonFormatter : calls format via settings.jsonFormatter
ChopperErrorLog ..> TalkerJsonFormatter : calls format via settings.jsonFormatter
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #465 +/- ##
==========================================
- Coverage 98.63% 97.09% -1.54%
==========================================
Files 3 30 +27
Lines 146 896 +750
==========================================
+ Hits 144 870 +726
- Misses 2 26 +24 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Summary
Example
Summary by Sourcery
Introduce a configurable JSON formatting utility and integrate it into HTTP/Dio/Chopper loggers to support custom pretty-printing and optional quote stripping.
New Features:
Enhancements:
Tests: