atatus_dio 1.0.3 copy "atatus_dio: ^1.0.3" to clipboard
atatus_dio: ^1.0.3 copied to clipboard

[pending analysis]

Support tracking and distributed tracing of Dio network requests in Atatus.

example/lib/main.dart

// Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
// This product includes software developed at Atatus (https://www.atatus.com/).
// Copyright 2025-Present Atatus, Inc.
import 'dart:io';

import 'package:atatus_common_test/atatus_common_test.dart';
import 'package:atatus_dio/atatus_dio.dart';
import 'package:atatus_flutter_plugin/atatus_flutter_plugin.dart';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';

import 'screens/instrumentation_scenario.dart';

// import 'scenario_config.dart';
// import 'scenario_select_screen.dart';

// This file sets up a different application for testing auto instrumentation
// Using the widgets in this library by themselves won't send any RUM events
// but, by utilizing this entry point instead, we can test that
// auto-instrumentation added to an existing app gives us the expected results.
TestingConfiguration? testingConfiguration;

Future<void> main() async {
  final merge = kIsWeb ? <String, String>{} : Platform.environment;
  await dotenv.load(mergeWith: merge);

  var licenseKey = dotenv.get('ATATUS_CLIENT_TOKEN', fallback: '');
  
  String? customEndpoint = dotenv.maybeGet('ATATUS_CUSTOM_ENDPOINT');

  if (testingConfiguration != null) {
    if (testingConfiguration!.customEndpoint != null) {
      customEndpoint = testingConfiguration!.customEndpoint;
    }
    if (testingConfiguration!.licenseKey != null) {
      licenseKey = testingConfiguration!.licenseKey!;
    }
  }

  final firstPartyHosts = ['atatus.com'];
  if (testingConfiguration != null) {
    firstPartyHosts.addAll(testingConfiguration!.firstPartyHosts);
  }
  AtatusSdk.instance.sdkVerbosity = CoreLoggerLevel.debug;
  final configuration = AtatusConfiguration( 
    licenseKey: dotenv.get('ATATUS_LICENSE_KEY', fallback: ''),
    env: dotenv.get('ATATUS_ENV', fallback: ''),
    appName: 'atatus_dio_example',
    site: AtatusSite.ATATUS, 
    uploadFrequency: UploadFrequency.frequent,
    batchSize: BatchSize.small,
    nativeCrashReportEnabled: true,
    firstPartyHosts: firstPartyHosts,
    loggingConfiguration: AtatusLoggingConfiguration( 
      customEndpoint: customEndpoint,
    ),
    rumConfiguration: AtatusRumConfiguration( 
            detectLongTasks: false,
            traceSampleRate: 100,
            customEndpoint: customEndpoint,
          ),
  );
  if (testingConfiguration != null) {
    // Add clear text if we're running an actual test.

    configuration.additionalConfig['_atatus.needsClearTextHttp'] = true;
  }
  await AtatusSdk.runApp(configuration, TrackingConsent.granted, () async { 
    final dio = Dio(BaseOptions(
      validateStatus: (status) => status != null && status < 300,
    ))
      ..addAtatusInterceptor(
        AtatusSdk.instance,
      );
    // User for testing baggage headers
    AtatusSdk.instance.setUserInfo(id: 'integration_test_user'); 
    AtatusSdk.instance.setAccountInfo(id: 'integration_test_account'); 

    runApp(AtatusAutoIntegrationTestApp(dio: dio));
  });
}

class AtatusAutoIntegrationTestApp extends StatelessWidget {
  final Dio dio;

  const AtatusAutoIntegrationTestApp({super.key, required this.dio});

  @override
  Widget build(BuildContext context) {
    final navObserver =
        AtatusNavigationObserver(atatusSdk: AtatusSdk.instance); 
    return AtatusNavigationObserverProvider(
      navObserver: navObserver,
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        navigatorObservers: [
          navObserver,
        ],
        home: InstrumentationScenario(dio: dio),
      ),
    );
  }
}
1
likes
0
points
149
downloads

Publisher

unverified uploader

Weekly Downloads

Support tracking and distributed tracing of Dio network requests in Atatus.

Homepage
Repository (GitHub)
View/report issues

License

(pending) (license)

Dependencies

atatus_flutter_plugin, dio, flutter, uuid

More

Packages that depend on atatus_dio