sturdy_http 0.3.1 copy "sturdy_http: ^0.3.1" to clipboard
sturdy_http: ^0.3.1 copied to clipboard

A strongly typed, event-based, reliable HTTP client that wraps `Dio`.

example/main.dart

import 'package:charlatan/charlatan.dart';
import 'package:sturdy_http/src/network_request.dart';
import 'package:sturdy_http/src/sturdy_http.dart';
import 'package:sturdy_http/src/sturdy_http_event_listener.dart';

void main(List<String> args) async {
  // Set up some fake HTTP responses using Charlatan
  final charlatan = Charlatan()
    ..whenGet(
      '/foo',
      (request) => CharlatanHttpResponse(
        body: 'Hello World!',
      ),
    )
    ..whenPost(
      '/foo',
      (request) => CharlatanHttpResponse(statusCode: 204),
    );

  // Create your client
  final client = SturdyHttp(
    baseUrl: 'api/v1/',
    customAdapter: charlatan.toFakeHttpClientAdapter(),
    eventListener: ExampleEventListener(),
  );

  // A GetRequest. Prints 'Hello World!'.
  await client.execute<String, void>(
    GetRequest('/foo'),
    onResponse: (r) {
      r.maybeWhen(
        ok: (message) => print(message),
        orElse: () => print('GET /foo failed: $r'),
      );
    },
  );

  // A PostRequest.
  //
  // Prints:
  // 'mutative request success' <-- From ExampleEventListener
  // 'success!'
  await client.execute<String, void>(
    PostRequest('/foo', data: NetworkRequestBody.empty()),
    onResponse: (r) {
      r.maybeWhen(
        okNoContent: () => print('success!'),
        orElse: () => print('POST /foo failed: $r'),
      );
    },
  );
}

class ExampleEventListener implements SturdyHttpEventListener {
  @override
  Future<void> onEvent(SturdyHttpEvent event) {
    return event.when(
      decodingError: (_, __, ___) async => print('decoding error'),
      authFailure: (_) async => print('auth failure'),
      mutativeRequestSuccess: (_) async => print('mutative request success'),
    );
  }
}
5
likes
140
pub points
62%
popularity

Publisher

verified publisherbetterment.dev

A strongly typed, event-based, reliable HTTP client that wraps `Dio`.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

collection, dio, freezed_annotation, uuid

More

Packages that depend on sturdy_http