generateSaveApiKey method

FutureOr<PassedHttpEntity> generateSaveApiKey(
  1. RequestHolder request,
  2. ResponseHolder response,
  3. Map<String, dynamic> pathArgs
)

Implementation

FutureOr<PassedHttpEntity> generateSaveApiKey(
  RequestHolder request,
  ResponseHolder response,
  Map<String, dynamic> pathArgs,
) async {
  return _wrapper(request, response, pathArgs, () async {
    String name;
    int? expirySeconds;
    Duration? expireAfter;
    try {
      Map<String, dynamic> body = await request.readAsJson();
      name = body[BodyFields.name];
      expirySeconds = body[BodyFields.expirySeconds];
      expireAfter =
          expirySeconds == null ? null : Duration(seconds: expirySeconds);
    } catch (e) {
      throw RequestBodyError();
    }
    ApiHashModel apiKey = await _apiKeyInfoDatasource.generateApiKey(
      name,
      expireAfter: expireAfter,
    );
    await _apiKeyInfoDatasource.saveHashModel(apiKey);
    ApiKeyModel apiKeyModel =
        apiKey.toApiKey(_apiKeyInfoDatasource.encrypterSecretKey);
    ApiUserModel apiUserModel = ApiUserModel.fromModels(apiKeyModel, apiKey);
    return SendResponse.sendDataToUser(
      response,
      apiUserModel.toJson(),
    );
  });
}