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.

base_auth_interceptor #

A reusable auth interceptor base based on net_client package.

Installation #

From pub.dev

Add this to your pubspec.yaml

dependencies:
  base_auth_interceptor: ^1.0.0

Or, From Git repo

dependencies:
  base_auth_interceptor:
    git:
      url: https://github.com/Ragibn5/dart-flutter-packages.git
      path: base_auth_interceptor
      ref: base_auth_interceptor-1.0.0

🚀 Get started #

AuthDataProvider #

Supplies current and refreshed auth data.

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

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

AuthRefreshPolicy #

Decides when an auth error should trigger a refresh.

/// Demo implementation
class AuthRefreshPolicyImpl implements AuthRefreshPolicy<String> {
  @override
  bool didServerReportAuthError(RawResponse response) =>
      response.statusCode == HttpStatus.unauthorized;

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

AuthRequestTransformer #

Adds auth data to requests.

/// Demo implementation
class AuthRequestTransformerImpl implements AuthRequestTransformer<String> {
  @override
  Future<RequestSpec> transformRequestWithAuthData(RequestSpec request,
      String authData,) async =>
      request.copyWith(
        headers: {...request.headers, HttpHeaders.authorizationHeader: 'Bearer $authData'},
      );
}

RequestRetrier #

Replays a request with refreshed auth data.

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

Compose #

Compose the earlier dependencies to build the interceptor.

/// Demo implementation
class AppAuthInterceptor extends BaseAuthInterceptor<String> {
  AppAuthInterceptor() : super(
    AuthDataProviderImpl(),
    AuthRefreshPolicyImpl(),
    AuthRequestTransformerImpl(),
    RequestRetrierImpl(),
  );
}

Example #

See the example for a complete demonstration.

0
likes
160
points
113
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