parse method

  1. @override
AuthBasicCredentials parse(
  1. String? authorizationHeader
)
override

Returns a AuthBasicCredentials containing the username and password base64 encoded in authorizationHeader. For example, if the input to this method was 'Basic base64String' it would decode the base64String and return the username and password by splitting that decoded string around the character ':'.

If authorizationHeader is malformed or null, throws an AuthorizationParserException.

Implementation

@override
AuthBasicCredentials parse(String? authorizationHeader) {
  if (authorizationHeader == null) {
    throw AuthorizationParserException(
        AuthorizationParserExceptionReason.missing);
  }

  final matcher = RegExp("Basic (.+)");
  final match = matcher.firstMatch(authorizationHeader);
  if (match == null) {
    throw AuthorizationParserException(
        AuthorizationParserExceptionReason.malformed);
  }

  final base64String = match[1];
  String decodedCredentials;
  try {
    decodedCredentials =
        String.fromCharCodes(const Base64Decoder().convert(base64String!));
  } catch (e) {
    throw AuthorizationParserException(
        AuthorizationParserExceptionReason.malformed);
  }

  final splitCredentials = decodedCredentials.split(":");
  if (splitCredentials.length != 2) {
    throw AuthorizationParserException(
        AuthorizationParserExceptionReason.malformed);
  }

  return AuthBasicCredentials()
    ..username = splitCredentials.first
    ..password = splitCredentials.last;
}