parseToken static method

TokenInfo parseToken(
  1. String token
)

解析 token 信息。

从 Token 字符串中解析 accessKeyPutPolicy 信息

Implementation

static TokenInfo parseToken(String token) {
  assert(token != '');

  final segments = token.split(':');
  if (segments.length < 2) {
    throw ArgumentError('invalid token');
  }

  PutPolicy? putPolicy;
  final accessKey = segments.first;

  /// 具体的 token 信息可以参考这里。
  /// [内部文档](https://github.com/qbox/product/blob/master/kodo/auths/UpToken.md#admin-uptoken-authorization)
  if (segments.length >= 3) {
    if (segments.last == '') {
      throw ArgumentError('invalid token');
    }

    putPolicy = PutPolicy.fromJson(
      jsonDecode(
        String.fromCharCodes(
          base64Url.decode(
            segments.last,
          ),
        ),
      ) as Map<String, dynamic>,
    );
  }

  return TokenInfo(accessKey, putPolicy);
}