/*
* Copyright (C) 2024 Jonni Liljamo <jonni@liljamo.com>
*
* This file is licensed under GPL-3.0-or-later, see NOTICE and LICENSE for
* more information.
*/
// Package handlers provides route handlers.
package handlers
import (
"fmt"
"log/slog"
"net/http"
"github.com/gin-gonic/gin"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func handleClientError(c *gin.Context, err error) {
if status, ok := status.FromError(err); ok {
slog.Error("RPC error", slog.String("err", err.Error()))
if status.Code() == codes.Unavailable {
c.String(http.StatusInternalServerError, "RPC unavailable.")
return
}
c.String(http.StatusInternalServerError, fmt.Sprintf("RPC error: %s", status.String()))
return
}
slog.Error("Non-RPC error", slog.String("err", err.Error()))
c.String(http.StatusInternalServerError, "Non-RPC error, see server logs.")
}