All files / postcardotp-backend/src/controllers apiKeyController.js

23.33% Statements 7/30
0% Branches 0/4
0% Functions 0/4
23.33% Lines 7/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 491x 1x 1x   1x                   1x                 1x                         1x                        
const crypto = require("crypto");
const successResponse = require("../utils/successResponse");
const apiKeyService = require("../services/apiKeyService");
 
exports.createApiKey = async (req, res, next) => {
  try {
    const key = crypto.randomBytes(32).toString("hex");
    const apiKeyData = await apiKeyService.saveApiKey(1, key);
    successResponse(res, apiKeyData, "API key created successfully", 201);
  } catch (err) {
    next(err);
  }
};
 
exports.getApiKeys = async (req, res, next) => {
  try {
    const keys = await apiKeyService.getUserApiKeys(req.userId);
    successResponse(res, keys, "API keys retrieved", 200);
  } catch (err) {
    next(err);
  }
};
 
exports.deleteApiKey = async (req, res, next) => {
  try {
    let id = req.params.id;
    if (id.startsWith(":")) {
      id = id.slice(1);
    }
    const key = await apiKeyService.revokeApiKey(req.userId, id);
    successResponse(res, key, "API key revoked", 200);
  } catch (err) {
    next(err);
  }
};
 
exports.getApiKeyUsage = async (req, res, next) => {
  try {
    let id = req.params.id;
    if (id.startsWith(":")) {
      id = id.slice(1);
    }
    const usageLogs = await apiKeyService.getApiKeyUsageLogs(id, req.userId);
    successResponse(res, usageLogs, "API key usage logs retrieved", 200);
  } catch (err) {
    next(err);
  }
};