handle method

  1. @override
Handler handle(
  1. Handler next
)
override

Implementation

@override
Handler handle(Handler next) {
  return (Request req, Response res) async {
    try {
      return await next(req, res);
    } on ValidationException catch (e) {
      return res.json({"status": false, "errors": e.errors}, status: 400);
    } on FormatException catch (e) {
      return res.json({"status": false, "message": e.message}, status: 500);
    } on TimeoutException catch (e) {
      return res.json({"status": false, "message": e.message}, status: 500);
    } on ArgumentError catch (e) {
      return res.json({"status": false, "message": e.message}, status: 500);
    } on PgException catch (e) {
      final msg = e.message.toLowerCase();

      if (msg.contains('does not exist') || msg.contains('42703')) {
        Log.debug('ℹ️ Ignoring internal column check error: $msg');
        return await next(req, res);
      }

      return res.json({"status": false, "message": e.message}, status: 500);
    } on MySQLClientException catch (e) {
      final msg = e.message.toLowerCase();

      if (msg.contains('unknown column') ||
          msg.contains('does not exist') ||
          msg.contains('42703')) {
        Log.debug('ℹ️ Ignoring internal column check error: $msg');
        return await next(req, res);
      }

      return res.json({"status": false, "message": e.message}, status: 500);
    } on MySQLException catch (e) {
      final msg = e.message.toLowerCase();

      if (msg.contains('unknown column') ||
          msg.contains('does not exist') ||
          msg.contains('42703')) {
        Log.debug('ℹ️ Ignoring internal column check error: $msg');
        return await next(req, res);
      }

      return res.json({"status": false, "message": e.message}, status: 500);
    } on ForbiddenErorr catch (e) {
      return res.json({"status": false, "message": e.message}, status: 500);
    } on AuthException catch (e) {
      return res.json(
        {
          "status": false,
          "error": "Unauthorized",
          "message": e.message,
        },
        status: 401,
      );
    } on Exception catch (e) {
      final msg = e.toString().toLowerCase();

      if (msg.contains('unknown column') ||
          msg.contains('does not exist') ||
          msg.contains('42703')) {
        Log.debug('ℹ️ Ignoring internal column check error: $msg');
        return await next(req, res);
      }

      return res.json(
        {
          "status": false,
          "message":
              e.toString().replaceAll("Exception:", "").trim().toString(),
        },
        status: 500,
      );
    } catch (e, stack) {
      Log.debug('[Flint] Unhandled error: $e\n$stack');
      return res
          .json({"status": false, "message": e.toString()}, status: 500);
    }
  };
}