super_request 1.1.0 copy "super_request: ^1.1.0" to clipboard
super_request: ^1.1.0 copied to clipboard

Composable request orchestration for Dart with Dio, scopes, generations, retries, timeouts, and polling.

example/super_request_example.dart

import 'dart:convert';

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

Future<void> main() async {
  final client = SuperRequestClient(
    dio: Dio(BaseOptions(baseUrl: 'https://jsonplaceholder.typicode.com')),
  );
  final scope = RequestScope();
  final generations = RequestGenerationManager();

  final getTodo = client.request<Map<String, dynamic>>(
    '/todos/1',
    decoder: (data, _) => Map<String, dynamic>.from(data! as Map),
  );

  final pipeline = RequestPipeline(getTodo)
      .use(scope.wrapper())
      .use(generations.wrapper('todo-detail'))
      .use(requestTimeout(const Duration(seconds: 5)))
      .use(retry(const RetryPolicy(maxAttempts: 3)));

  final todo = await pipeline.run(
    const RequestContext(metadata: {'trace-id': 'example'}),
  );
  // ignore: avoid_print
  print(const JsonEncoder.withIndent('  ').convert(todo));

  final queue = RequestQueue(maxConcurrent: 2);
  final todoById = useRequest<Map<String, dynamic>, int>(
    serviceFromCall(
      (id) => client.request(
        '/todos/$id',
        decoder: (data, _) => Map<String, dynamic>.from(data! as Map),
      ),
    ),
    wrappers: [
      requestDebounce(const Duration(milliseconds: 200)),
      serviceRetry(const RetryPolicy(maxAttempts: 2)),
      queue.wrapper(),
    ],
  );
  await todoById.run(1);

  final result = await const RequestPoller().poll(
    request: getTodo,
    until: (value) => value['id'] == 1,
    options: const PollOptions(
      interval: Duration(seconds: 1),
      maxAttempts: 10,
      timeout: Duration(seconds: 30),
    ),
  );
  // ignore: avoid_print
  print('completed after ${result.attempts} attempts');

  todoById.dispose();
  queue.dispose();
  scope.dispose();
}
0
likes
160
points
110
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Composable request orchestration for Dart with Dio, scopes, generations, retries, timeouts, and polling.

Repository (GitHub)
View/report issues

Topics

#http #dio #request #polling #cancellation

License

MIT (license)

Dependencies

dio

More

Packages that depend on super_request