41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package importer
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// RegisterRoutes registers all import/export API endpoints
|
|
// Following the plan: POST /detect, POST /import, GET /adapters, GET /history, etc.
|
|
func RegisterRoutes(r *gin.RouterGroup) {
|
|
// Rate limiters per endpoint as specified in the plan
|
|
detectLimiter := NewRateLimiter(10, time.Minute) // 10/min
|
|
importLimiter := NewRateLimiter(5, time.Minute) // 5/min
|
|
exportLimiter := NewRateLimiter(20, time.Minute) // 20/min
|
|
|
|
// File size limit (10MB as per plan)
|
|
maxFileSize := int64(10 << 20)
|
|
|
|
importer := r.Group("/import")
|
|
importer.Use(ValidateFileSizeMiddleware(maxFileSize))
|
|
|
|
// Format detection endpoint
|
|
importer.POST("/detect", detectLimiter.Middleware(), DetectHandler)
|
|
|
|
// Import character from external format
|
|
importer.POST("/import", importLimiter.Middleware(), ImportHandler)
|
|
|
|
// List registered adapters
|
|
importer.GET("/adapters", ListAdaptersHandler)
|
|
|
|
// Get user's import history
|
|
importer.GET("/history", ImportHistoryHandler)
|
|
|
|
// Get details for specific import
|
|
importer.GET("/history/:id", ImportDetailsHandler)
|
|
|
|
// Export character to external format
|
|
importer.POST("/export/:id", exportLimiter.Middleware(), ExportHandler)
|
|
}
|