connected-to-google

This commit is contained in:
mario
2025-04-07 15:46:07 +07:00
parent f340bc5916
commit 9b8e0260f3
15 changed files with 282 additions and 286 deletions

View File

@@ -1,36 +1,44 @@
package api
import (
"net/http"
"devone.aplikasi.web.id/gitea/mario/go-ohif-proxy/config"
"devone.aplikasi.web.id/gitea/mario/go-ohif-proxy/internal/api/handlers"
"devone.aplikasi.web.id/gitea/mario/go-ohif-proxy/internal/api/middleware"
apiMiddleware "devone.aplikasi.web.id/gitea/mario/go-ohif-proxy/internal/api/middleware"
"devone.aplikasi.web.id/gitea/mario/go-ohif-proxy/internal/auth"
"devone.aplikasi.web.id/gitea/mario/go-ohif-proxy/internal/proxy"
"github.com/gin-gonic/gin"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"github.com/go-chi/cors"
"go.uber.org/zap"
)
// TODO: Refactor dari gin dengan chi
// SetupRouter configures and returns the API router
func SetupRouter(cfg *config.Config, logger *zap.Logger) *gin.Engine {
// Set Gin mode
if cfg.LogLevel == "debug" {
gin.SetMode(gin.DebugMode)
} else {
gin.SetMode(gin.ReleaseMode)
}
func SetupRouter(cfg *config.Config, logger *zap.Logger) http.Handler {
r := chi.NewRouter()
// Initialize the router
r := gin.New()
// Built-in Chi middleware
r.Use(middleware.RequestID)
r.Use(middleware.RealIP)
r.Use(middleware.Recoverer)
r.Use(middleware.StripSlashes)
// Add middleware
r.Use(gin.Recovery())
r.Use(middleware.Logger(logger))
r.Use(middleware.CORS(cfg.AllowedOrigins))
// Custom middleware
r.Use(apiMiddleware.Logger(logger))
// CORS middleware
r.Use(cors.Handler(cors.Options{
AllowedOrigins: cfg.AllowedOrigins,
AllowedMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
AllowedHeaders: []string{"Accept", "Authorization", "Content-Type", "X-CSRF-Token"},
ExposedHeaders: []string{"Link"},
AllowCredentials: true,
MaxAge: 300,
}))
// Setup health check
r.GET("/health", handlers.HealthCheck)
r.Get("/health", handlers.HealthCheck)
// Initialize Google auth client
googleAuth, err := auth.NewGoogleClient(cfg.Google.CredentialsPath)
@@ -41,32 +49,24 @@ func SetupRouter(cfg *config.Config, logger *zap.Logger) *gin.Engine {
// Initialize Healthcare API client
healthcareClient := proxy.NewClient(googleAuth, cfg.Google)
// DICOM Web routes
dicomGroup := r.Group("/dicomWeb")
{
// DICOM Web routes - simplified approach
r.Route("/dicomWeb", func(r chi.Router) {
// Add audit logging middleware to DICOM routes
r.Use(apiMiddleware.AuditLog(logger))
// Create single handler for all DICOM requests
dicomHandler := handlers.NewDicomHandler(healthcareClient, logger)
// Add audit logging middleware to DICOM routes
dicomGroup.Use(middleware.AuditLog(logger))
// WADO routes
dicomGroup.Any("/wado/*path", dicomHandler.ForwardRequest)
// QIDO routes
dicomGroup.Any("/qido/*path", dicomHandler.ForwardRequest)
// STOW routes
dicomGroup.Any("/stow/*path", dicomHandler.ForwardRequest)
}
// Catch all routes under /dicomWeb and forward them
r.HandleFunc("/*", dicomHandler.ForwardRequest)
})
// Future auth routes for doctors
authGroup := r.Group("/auth")
{
// Auth handlers will be implemented later
r.Route("/auth", func(r chi.Router) {
authHandler := handlers.NewAuthHandler(logger)
authGroup.POST("/login", authHandler.Login)
authGroup.POST("/logout", authHandler.Logout)
}
r.Post("/login", authHandler.Login)
r.Post("/logout", authHandler.Logout)
})
return r
}