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
1 change: 0 additions & 1 deletion melos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ scripts:
flutter: true
dependsOn: pana
private: false
scope: instabug_flutter
pods:
run: cd ios && pod install --repo-update
description: running pod install
Expand Down
23 changes: 17 additions & 6 deletions packages/instabug_dio_interceptor/.gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# Generated files
*.mocks.dart
*.g.dart
android/**/generated/
ios/**/Generated/

# Miscellaneous
*.class
*.lock
*.log
*.pyc
*.swp
Expand All @@ -19,25 +21,32 @@
*.iws
.idea/

# Visual Studio Code related
.vscode/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.packages
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/pubspec.lock
build/
coverage/

# Node related
node_modules

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
android/gradlew
android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java

Expand All @@ -60,10 +69,12 @@ build/
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Flutter.podspec
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

Expand Down
83 changes: 83 additions & 0 deletions packages/instabug_dio_interceptor/.pubignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Generated files
*.mocks.dart

# E2E tests
e2e/

# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
pubspec.lock
build/
coverage/

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
android/gradlew
android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Flutter.podspec
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
6 changes: 6 additions & 0 deletions packages/instabug_dio_interceptor/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## [2.6.1] (2025-09-09)

### Fixed

- Obfuscation of network body encoding issue ([#636](https://github.com/Instabug/Instabug-Flutter/pull/636))

## [2.6.0] (2025-08-29)

### Added
Expand Down
44 changes: 44 additions & 0 deletions packages/instabug_dio_interceptor/example/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/

# Web related
lib/generated_plugin_registrant.dart

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Android related
/android/app/.cxx/
4 changes: 2 additions & 2 deletions packages/instabug_dio_interceptor/example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,14 @@ packages:
path: ".."
relative: true
source: path
version: "2.6.0"
version: "2.6.1"
instabug_flutter:
dependency: "direct overridden"
description:
path: "../../instabug_flutter"
relative: true
source: path
version: "16.0.2"
version: "16.0.3"
leak_tracker:
dependency: transitive
description:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import 'dart:convert';

import 'package:dio/dio.dart';
import 'package:instabug_flutter/instabug_flutter.dart';

Expand Down Expand Up @@ -78,31 +80,60 @@ class InstabugDioInterceptor extends Interceptor {
requestBodySize =
int.parse(response.requestOptions.headers['content-length'] ?? '0');
} else if (response.requestOptions.data != null) {
requestBodySize = response.requestOptions.data.toString().length;
// Calculate actual byte size for more accurate size estimation
requestBodySize = _calculateBodySize(response.requestOptions.data);
}

var responseBodySize = 0;
if (responseHeaders.containsKey('content-length')) {
// ignore: avoid_dynamic_calls
responseBodySize = int.parse(responseHeaders['content-length'][0] ?? '0');
} else if (response.data != null) {
responseBodySize = response.data.toString().length;
// Calculate actual byte size for more accurate size estimation
responseBodySize = _calculateBodySize(response.data);
}

return data.copyWith(
endTime: endTime,
duration: endTime.difference(data.startTime).inMicroseconds,
url: response.requestOptions.uri.toString(),
method: response.requestOptions.method,
requestBody: response.requestOptions.data.toString(),
requestBody: parseBody(response.requestOptions.data),
requestHeaders: response.requestOptions.headers,
requestContentType: response.requestOptions.contentType,
requestBodySize: requestBodySize,
status: response.statusCode,
responseBody: response.data.toString(),
responseBody: parseBody(response.data),
responseHeaders: responseHeaders,
responseContentType: responseContentType,
responseBodySize: responseBodySize,
);
}

String parseBody(dynamic data) {
try {
return jsonEncode(data);
} catch (e) {
return data.toString();
}
}

/// Calculates the actual byte size of the body data
int _calculateBodySize(dynamic data) {
if (data == null) return 0;

try {
// For string data, get UTF-8 byte length
if (data is String) {
return data.codeUnits.length;
}

// For other types, try to encode as JSON and get byte length
final jsonString = jsonEncode(data);
return jsonString.codeUnits.length;
} catch (e) {
// Fallback to string conversion if JSON encoding fails
return data.toString().codeUnits.length;
}
}
}
Loading