diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e8e5c3587..77d5e01f67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ - Ref: execute before send callback - Feat: add lastEventId to the Sentry static API - Feat: addBreadcrumb on Static API +- Fix: NoOp encode for Web - Fix: Breadcrumb data should accept serializable types and not only String values # `package:sentry` changelog diff --git a/dart/lib/src/transport/body_encoder.dart b/dart/lib/src/transport/body_encoder.dart deleted file mode 100644 index eb46bfc16d..0000000000 --- a/dart/lib/src/transport/body_encoder.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'dart:convert'; -import 'dart:io'; - -List bodyEncoder( - Map data, - Map headers, { - bool compressPayload, -}) { - // [SentryIOClient] implement gzip compression - // gzip compression is not available on browser - var body = utf8.encode(json.encode(data)); - if (compressPayload) { - headers['Content-Encoding'] = 'gzip'; - body = gzip.encode(body); - } - return body; -} diff --git a/dart/lib/src/transport/body_encoder_browser.dart b/dart/lib/src/transport/body_encoder_browser.dart deleted file mode 100644 index 5e587c8bf6..0000000000 --- a/dart/lib/src/transport/body_encoder_browser.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'dart:convert'; - -List bodyEncoder( - Map data, - Map headers, { - bool compressPayload, -}) { - // [SentryIOClient] implement gzip compression - // gzip compression is not available on browser - var body = utf8.encode(json.encode(data)); - return body; -} diff --git a/dart/lib/src/transport/encode.dart b/dart/lib/src/transport/encode.dart new file mode 100644 index 0000000000..03256130f9 --- /dev/null +++ b/dart/lib/src/transport/encode.dart @@ -0,0 +1,7 @@ +import 'dart:io'; + +/// Encodes the body using Gzip compression +List compressBody(List body, Map headers) { + headers['Content-Encoding'] = 'gzip'; + return gzip.encode(body); +} diff --git a/dart/lib/src/transport/noop_encode.dart b/dart/lib/src/transport/noop_encode.dart new file mode 100644 index 0000000000..73f92b2fa0 --- /dev/null +++ b/dart/lib/src/transport/noop_encode.dart @@ -0,0 +1,2 @@ +/// gzip compression is not available on browser +List compressBody(List body, Map headers) => body; diff --git a/dart/lib/src/transport/transport.dart b/dart/lib/src/transport/transport.dart index 3fcb51f62b..c0bf81641a 100644 --- a/dart/lib/src/transport/transport.dart +++ b/dart/lib/src/transport/transport.dart @@ -6,13 +6,7 @@ import 'package:sentry/src/utils.dart'; import '../protocol.dart'; import '../sentry_options.dart'; -import 'body_encoder_browser.dart' if (dart.library.io) 'body_encoder.dart'; - -typedef BodyEncoder = List Function( - Map data, - Map headers, { - bool compressPayload, -}); +import 'noop_encode.dart' if (dart.library.io) 'encode.dart'; /// A transport is in charge of sending the event to the Sentry server. class Transport { @@ -43,7 +37,7 @@ class Transport { Future send(SentryEvent event) async { final data = event.toJson(origin: _origin); - final body = bodyEncoder( + final body = _bodyEncoder( data, _headers, compressPayload: _options.compressPayload, @@ -62,6 +56,20 @@ class Transport { final eventId = json.decode(response.body)['id']; return eventId != null ? SentryId.fromId(eventId) : SentryId.empty(); } + + List _bodyEncoder( + Map data, + Map headers, { + bool compressPayload, + }) { + // [SentryIOClient] implement gzip compression + // gzip compression is not available on browser + var body = utf8.encode(json.encode(data)); + if (compressPayload) { + body = compressBody(body, headers); + } + return body; + } } class CredentialBuilder {