base_auth_interceptor 1.0.0 copy "base_auth_interceptor: ^1.0.0" to clipboard
base_auth_interceptor: ^1.0.0 copied to clipboard

A reusable auth interceptor base based on `net_client` package.

example/example.dart

import 'package:base_auth_interceptor/base_auth_interceptor.dart';
import 'package:dart_functionals/dart_functionals.dart';
import 'package:net_client/net_client.dart';

class _AuthDataProvider implements AuthDataProvider<String> {
  @override
  Future<String?> getAuthData() async => 'my-token';

  @override
  Future<String?> requestAuthDataRefresh(String oldAuthData) async => null;
}

class _RequestRetrier implements RequestRetrier<String> {
  @override
  Future<ApiCallResult> retryRequest(
    RequestSpec request,
    String refreshedAuthData,
  ) async =>
      Success(
        NetClientResponse(
          isError: false,
          statusCode: 200,
          data: '',
          headers: {},
          requestSpec: request,
        ),
      );
}

class _AuthRefreshPolicy implements AuthRefreshPolicy<String> {
  @override
  bool didServerReportAuthError(RawResponse response) =>
      response.statusCode == 401;

  @override
  bool shouldRefreshAuthData(RequestSpec request, String authData) => false;
}

class _AuthRequestTransformer implements AuthRequestTransformer<String> {
  @override
  Future<RequestSpec> transformRequestWithAuthData(
    RequestSpec request,
    String authData,
  ) async {
    request.headers.addAll({'Authorization': 'Bearer $authData'});
    return request;
  }
}

class AppAuthInterceptor extends BaseAuthInterceptor<String> {
  AppAuthInterceptor()
      : super(
          _AuthDataProvider(),
          _AuthRefreshPolicy(),
          _AuthRequestTransformer(),
          _RequestRetrier(),
        );
}
0
likes
160
points
120
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A reusable auth interceptor base based on `net_client` package.

Homepage
Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

Dependencies

net_client

More

Packages that depend on base_auth_interceptor