From 9042d597f36999ab0f3319830b4be94a32c9de0d Mon Sep 17 00:00:00 2001 From: Martin Haintz <28293035+martinhaintz@users.noreply.github.com> Date: Mon, 5 Aug 2024 13:23:44 +0200 Subject: [PATCH 1/6] add 'runWithClient' example to http-integration.mdx --- .../dart/integrations/http-integration.mdx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/platforms/dart/integrations/http-integration.mdx b/docs/platforms/dart/integrations/http-integration.mdx index 50001dce4548f..3363e04a705e2 100644 --- a/docs/platforms/dart/integrations/http-integration.mdx +++ b/docs/platforms/dart/integrations/http-integration.mdx @@ -92,3 +92,19 @@ var uriResponse = await client.post('https://example.com/whatsit/create', await transaction.finish(status: SpanStatus.ok()); ``` + +## Using the `runWithClient` function + +With [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html) you can define a global `SentryHttpClient` and run it in its own [`Zone`](https://api.dart.dev/stable/3.4.4/dart-async/Zone-class.html). + +```dart +import 'package:http/http.dart'; +import 'package:sentry/sentry.dart'; + +final sentryHttpClient = SentryHttpClient(); + +await runWithClient(() async { + var response = await get(Uri.https('www.example.com', '')); + print(response.body); +}, () => sentryHttpClient); +``` From f634125ba321bf056e9bc7412d5c0fb702b8566a Mon Sep 17 00:00:00 2001 From: Martin Haintz Date: Mon, 5 Aug 2024 16:52:49 +0200 Subject: [PATCH 2/6] move runWithClient to the top --- .../dart/integrations/http-integration.mdx | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/docs/platforms/dart/integrations/http-integration.mdx b/docs/platforms/dart/integrations/http-integration.mdx index 3363e04a705e2..aaff6ae7ce9a4 100644 --- a/docs/platforms/dart/integrations/http-integration.mdx +++ b/docs/platforms/dart/integrations/http-integration.mdx @@ -4,6 +4,24 @@ description: "Learn more about the Sentry HTTP integration for the Dart SDK." sidebar_order: 2 --- +## Using the `runWithClient` function (recommended) + +With [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html) you can define a global `SentryHttpClient` and run it in its own [`Zone`](https://api.dart.dev/stable/3.4.4/dart-async/Zone-class.html). + +### Usage + +```dart {filename:http_client.dart}{tabTitle: commonMain} +import 'package:http/http.dart'; +import 'package:sentry/sentry.dart'; + +final sentryHttpClient = SentryHttpClient(); + +await runWithClient(() async { + var response = await get(Uri.https('www.example.com', '')); + print(response.body); +}, () => sentryHttpClient); +``` + ## Reporting Bad HTTP Requests as Errors The `SentryHttpClient` can also catch exceptions that may occur during requests — for example [`SocketException`](https://api.dart.dev/stable/2.13.4/dart-io/SocketException-class.html). @@ -92,19 +110,3 @@ var uriResponse = await client.post('https://example.com/whatsit/create', await transaction.finish(status: SpanStatus.ok()); ``` - -## Using the `runWithClient` function - -With [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html) you can define a global `SentryHttpClient` and run it in its own [`Zone`](https://api.dart.dev/stable/3.4.4/dart-async/Zone-class.html). - -```dart -import 'package:http/http.dart'; -import 'package:sentry/sentry.dart'; - -final sentryHttpClient = SentryHttpClient(); - -await runWithClient(() async { - var response = await get(Uri.https('www.example.com', '')); - print(response.body); -}, () => sentryHttpClient); -``` From 4b90bce62da87f314a36c5a69a04bf3d0cbb0545 Mon Sep 17 00:00:00 2001 From: Martin Haintz Date: Mon, 5 Aug 2024 17:37:46 +0200 Subject: [PATCH 3/6] add default code snippet --- .../dart/integrations/http-integration.mdx | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/docs/platforms/dart/integrations/http-integration.mdx b/docs/platforms/dart/integrations/http-integration.mdx index aaff6ae7ce9a4..e255aa226c051 100644 --- a/docs/platforms/dart/integrations/http-integration.mdx +++ b/docs/platforms/dart/integrations/http-integration.mdx @@ -4,20 +4,33 @@ description: "Learn more about the Sentry HTTP integration for the Dart SDK." sidebar_order: 2 --- -## Using the `runWithClient` function (recommended) +## Using the `runWithClient` function With [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html) you can define a global `SentryHttpClient` and run it in its own [`Zone`](https://api.dart.dev/stable/3.4.4/dart-async/Zone-class.html). ### Usage -```dart {filename:http_client.dart}{tabTitle: commonMain} +```dart {filename:http_client.dart}{tabTitle: default} +import 'package:sentry/sentry.dart'; + +final client = SentryHttpClient(); + +try { + final response = await client.get(Uri.https('www.example.com', '')); + print(response.body); +} finally { + client.close(); +} +``` + +```dart {filename:http_client.dart}{tabTitle: runWithClient} import 'package:http/http.dart'; import 'package:sentry/sentry.dart'; final sentryHttpClient = SentryHttpClient(); await runWithClient(() async { - var response = await get(Uri.https('www.example.com', '')); + final response = await get(Uri.https('www.example.com', '')); print(response.body); }, () => sentryHttpClient); ``` @@ -31,11 +44,11 @@ import 'package:sentry/sentry.dart'; var client = SentryHttpClient(); try { -var uriResponse = await client.post('https://example.com/whatsit/create', - body: {'name': 'doodle', 'color': 'blue'}); - print(await client.get(uriResponse.bodyFields['uri'])); + var uriResponse = await client.post('https://example.com/whatsit/create', + body: {'name': 'doodle', 'color': 'blue'}); + print(await client.get(uriResponse.bodyFields['uri'])); } finally { - client.close(); + client.close(); } ``` @@ -72,11 +85,11 @@ var client = SentryHttpClient( ); try { -var uriResponse = await client.post('https://example.com/whatsit/create', - body: {'name': 'doodle', 'color': 'blue'}); - print(await client.get(uriResponse.bodyFields['uri'])); + var uriResponse = await client.post('https://example.com/whatsit/create', + body: {'name': 'doodle', 'color': 'blue'}); + print(await client.get(uriResponse.bodyFields['uri'])); } finally { - client.close(); + client.close(); } ``` @@ -101,11 +114,11 @@ final transaction = Sentry.startTransaction( var client = SentryHttpClient(); try { -var uriResponse = await client.post('https://example.com/whatsit/create', - body: {'name': 'doodle', 'color': 'blue'}); - print(await client.get(uriResponse.bodyFields['uri'])); + var uriResponse = await client.post('https://example.com/whatsit/create', + body: {'name': 'doodle', 'color': 'blue'}); + print(await client.get(uriResponse.bodyFields['uri'])); } finally { - client.close(); + client.close(); } await transaction.finish(status: SpanStatus.ok()); From b1604c214e9f47762914004dab97cb527db188a7 Mon Sep 17 00:00:00 2001 From: Martin Haintz Date: Wed, 14 Aug 2024 09:35:03 +0200 Subject: [PATCH 4/6] Update docs/platforms/dart/integrations/http-integration.mdx Co-authored-by: vivianyentran <20403606+vivianyentran@users.noreply.github.com> --- docs/platforms/dart/integrations/http-integration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/platforms/dart/integrations/http-integration.mdx b/docs/platforms/dart/integrations/http-integration.mdx index e255aa226c051..4ab9ed5a9469d 100644 --- a/docs/platforms/dart/integrations/http-integration.mdx +++ b/docs/platforms/dart/integrations/http-integration.mdx @@ -6,7 +6,7 @@ sidebar_order: 2 ## Using the `runWithClient` function -With [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html) you can define a global `SentryHttpClient` and run it in its own [`Zone`](https://api.dart.dev/stable/3.4.4/dart-async/Zone-class.html). +With [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html), you can define a global `SentryHttpClient` and run it in its own [`Zone`](https://api.dart.dev/stable/3.4.4/dart-async/Zone-class.html). ### Usage From c5df77052b6091bd7fcf83c8d6eed0f567078062 Mon Sep 17 00:00:00 2001 From: Martin Haintz Date: Wed, 14 Aug 2024 10:25:14 +0200 Subject: [PATCH 5/6] rephrased the `runWithClient` section in dart --- docs/platforms/dart/integrations/http-integration.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/platforms/dart/integrations/http-integration.mdx b/docs/platforms/dart/integrations/http-integration.mdx index 4ab9ed5a9469d..697e41a7bbcce 100644 --- a/docs/platforms/dart/integrations/http-integration.mdx +++ b/docs/platforms/dart/integrations/http-integration.mdx @@ -4,9 +4,9 @@ description: "Learn more about the Sentry HTTP integration for the Dart SDK." sidebar_order: 2 --- -## Using the `runWithClient` function +## Using the `SentryHttpClient` function -With [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html), you can define a global `SentryHttpClient` and run it in its own [`Zone`](https://api.dart.dev/stable/3.4.4/dart-async/Zone-class.html). +Depending on your use case, you can either use the `SentryHttpClient` directly and call its methods (see the `default` tab), or you can use the [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html) function (see the `runWithClient` tab). With [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html), a fresh instance of the `client` is used and the other instances are not affected. It also runs in a separate [`Zone`](https://api.dart.dev/stable/3.5.0/dart-async/Zone-class.html), allowing you to override the functionality of the existing [`Zone`](https://api.dart.dev/stable/3.5.0/dart-async/Zone-class.html). ### Usage From a4b634ade7f27f19577aeb4dbe9aaeddb7a36459 Mon Sep 17 00:00:00 2001 From: Martin Haintz Date: Tue, 27 Aug 2024 13:08:15 +0200 Subject: [PATCH 6/6] Update docs/platforms/dart/integrations/http-integration.mdx Co-authored-by: vivianyentran <20403606+vivianyentran@users.noreply.github.com> --- docs/platforms/dart/integrations/http-integration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/platforms/dart/integrations/http-integration.mdx b/docs/platforms/dart/integrations/http-integration.mdx index 697e41a7bbcce..95c22c495c4d5 100644 --- a/docs/platforms/dart/integrations/http-integration.mdx +++ b/docs/platforms/dart/integrations/http-integration.mdx @@ -6,7 +6,7 @@ sidebar_order: 2 ## Using the `SentryHttpClient` function -Depending on your use case, you can either use the `SentryHttpClient` directly and call its methods (see the `default` tab), or you can use the [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html) function (see the `runWithClient` tab). With [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html), a fresh instance of the `client` is used and the other instances are not affected. It also runs in a separate [`Zone`](https://api.dart.dev/stable/3.5.0/dart-async/Zone-class.html), allowing you to override the functionality of the existing [`Zone`](https://api.dart.dev/stable/3.5.0/dart-async/Zone-class.html). +You can use the `SentryHttpClient` and call its methods directly, or you can use it with the [`runWithClient`](https://pub.dev/documentation/http/latest/http/runWithClient.html) function. If you need to use a fresh instance of the `client` (so that other instances are not affected) or to run in a separate [`Zone`](https://api.dart.dev/stable/3.5.0/dart-async/Zone-class.html), which allows you to override the functionality of the existing [`Zone`](https://api.dart.dev/stable/3.5.0/dart-async/Zone-class.html), then use the `runWithClient` function (see the `runWithClient` tab). Otherwise, just use `SentryHttpClient` directly and call its methods (see the `default` tab). ### Usage