generate method

String generate({
  1. required String key,
  2. required String secret,
  3. int meetingId = 0,
  4. String role = "0",
})

Implementation

String generate(
    {required String key,
    required String secret,
    int meetingId = 0,
    String role = "0"}) {
  final payload = JwtPayload(
    sdkKey: key,
    appKey: key,
    iat: (DateTime.now().millisecondsSinceEpoch / 1000).floor() - 30,
    exp: (DateTime.now().millisecondsSinceEpoch / 1000).floor() + 60 * 60 * 2,
    role: role, // If role is 1, use 1; otherwise, use 0
    tokenExp:
        (DateTime.now().millisecondsSinceEpoch / 1000).floor() + 60 * 60 * 2,
    mn: meetingId, // Nullable Meeting ID
  );

  final header = json.encode({'alg': 'HS256', 'typ': 'JWT'});
  final encodedHeader = base64Url.encode(utf8.encode(header));
  final encodedPayload =
      base64Url.encode(utf8.encode(json.encode(payload.toJson())));

  final signature = Hmac(sha256, secret.codeUnits)
      .convert('$encodedHeader.$encodedPayload'.codeUnits);
  final encodedSignature = base64Url.encode(signature.bytes);

  return '$encodedHeader.$encodedPayload.$encodedSignature';
}