Documentation
¶
Overview ¶
internal/validation/middleware.go
Index ¶
- func ParseGenerationRequest() gin.HandlerFunc
- func ParseJSONRequest[T any]() gin.HandlerFunc
- func ValidateRequest(validators ...RequestValidator) gin.HandlerFunc
- type APIValidator
- func (av *APIValidator) ExtractFilePathFromMultipart(fileHeader *multipart.FileHeader) string
- func (av *APIValidator) SanitizeFilePath(filePath string) string
- func (av *APIValidator) SanitizeFilename(filename string) string
- func (av *APIValidator) ValidateContentSafety(content []byte, filename string) *ValidationResult
- func (av *APIValidator) ValidateCourseIDParam(courseIDStr string) (uuid.UUID, *ValidationResult)
- func (av *APIValidator) ValidateFilePath(filePath string) *ValidationResult
- func (av *APIValidator) ValidateFileUpload(files []*multipart.FileHeader) *ValidationResult
- func (av *APIValidator) ValidateFilenameParam(filename string) *ValidationResult
- func (av *APIValidator) ValidateGenerationRequest(req *models.GenerationRequest) *ValidationResult
- func (av *APIValidator) ValidateJobIDParam(jobIDStr string) (uuid.UUID, *ValidationResult)
- func (av *APIValidator) ValidateListJobsParams(statusParam, courseIDParam, limitParam, offsetParam string) (*ListJobsParams, *ValidationResult)
- func (av *APIValidator) ValidateListParams(status string, limit, offset int) *ValidationResult
- func (av *APIValidator) ValidatePaginationParams(limitStr, offsetStr string) (*PaginationParams, *ValidationResult)
- func (av *APIValidator) ValidateStatusParam(status string) *ValidationResult
- func (av *APIValidator) ValidateWorkspaceCleanupParams(maxAgeParam string) (*WorkspaceCleanupParams, *ValidationResult)
- func (av *APIValidator) ValidateWorkspaceListParams(statusParam, limitParam, offsetParam string) (*WorkspaceListParams, *ValidationResult)
- type ListJobsParams
- type PaginationParams
- type RequestValidator
- func CombineValidators(validators ...RequestValidator) RequestValidator
- func ValidateCourseIDParam(paramName string) RequestValidator
- func ValidateFilenameParam(paramName string) RequestValidator
- func ValidateJobIDParam(paramName string) RequestValidator
- func ValidateOptionalCourseIDParam(paramName string) RequestValidator
- func ValidateStatusParam(paramName string) RequestValidator
- type ValidationConfig
- type ValidationError
- type ValidationResult
- func ValidateFileListFormat(c *gin.Context, v *APIValidator) *ValidationResult
- func ValidateFileUpload(c *gin.Context, v *APIValidator) *ValidationResult
- func ValidateGenerationRequest(c *gin.Context, v *APIValidator) *ValidationResult
- func ValidateListJobsParams(c *gin.Context, v *APIValidator) *ValidationResult
- func ValidatePaginationParams(c *gin.Context, v *APIValidator) *ValidationResult
- func ValidateWorkspaceCleanupParams(c *gin.Context, v *APIValidator) *ValidationResult
- func ValidateWorkspaceListParams(c *gin.Context, v *APIValidator) *ValidationResult
- type ValidationService
- func (vs *ValidationService) ValidateCallbackURL(url string) *ValidationResult
- func (vs *ValidationService) ValidateCourseID(courseID string) *ValidationResult
- func (vs *ValidationService) ValidateFileHeader(header *multipart.FileHeader) *ValidationResult
- func (vs *ValidationService) ValidateFilename(filename string, directory bool) *ValidationResult
- func (vs *ValidationService) ValidateFiles(files []*multipart.FileHeader) *ValidationResult
- func (vs *ValidationService) ValidateJobID(jobID string) *ValidationResult
- func (vs *ValidationService) ValidateMetadata(metadata map[string]interface{}) *ValidationResult
- func (vs *ValidationService) ValidateSourcePath(path string) *ValidationResult
- type WorkspaceCleanupParams
- type WorkspaceListParams
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ParseGenerationRequest ¶
func ParseGenerationRequest() gin.HandlerFunc
Version spécialisée pour GenerationRequest
func ParseJSONRequest ¶
func ParseJSONRequest[T any]() gin.HandlerFunc
func ValidateRequest ¶
func ValidateRequest(validators ...RequestValidator) gin.HandlerFunc
ValidateRequest est le middleware principal qui exécute une liste de validators
Types ¶
type APIValidator ¶
type APIValidator struct {
// contains filtered or unexported fields
}
APIValidator gère la validation des requêtes API
func GetValidator ¶
func GetValidator(c *gin.Context) *APIValidator
GetValidator helper pour récupérer le validator du contexte (déjà existant dans middleware.go)
func NewAPIValidator ¶
func NewAPIValidator(config *ValidationConfig) *APIValidator
NewAPIValidator crée un nouveau validateur d'API
func (*APIValidator) ExtractFilePathFromMultipart ¶ added in v0.0.4
func (av *APIValidator) ExtractFilePathFromMultipart(fileHeader *multipart.FileHeader) string
ExtractFilePathFromMultipart extrait le chemin complet depuis un header multipart
func (*APIValidator) SanitizeFilePath ¶ added in v0.0.4
func (av *APIValidator) SanitizeFilePath(filePath string) string
SanitizeFilePath nettoie un chemin de fichier en préservant la structure de dossiers
func (*APIValidator) SanitizeFilename ¶
func (av *APIValidator) SanitizeFilename(filename string) string
SanitizeFilename nettoie un nom de fichier en supprimant les caractères dangereux
func (*APIValidator) ValidateContentSafety ¶
func (av *APIValidator) ValidateContentSafety(content []byte, filename string) *ValidationResult
ValidateContentSafety effectue une validation de sécurité du contenu
func (*APIValidator) ValidateCourseIDParam ¶
func (av *APIValidator) ValidateCourseIDParam(courseIDStr string) (uuid.UUID, *ValidationResult)
ValidateCourseIDParam valide un paramètre course_id depuis l'URL
func (*APIValidator) ValidateFilePath ¶ added in v0.0.4
func (av *APIValidator) ValidateFilePath(filePath string) *ValidationResult
ValidateFilePath valide un chemin de fichier complet
func (*APIValidator) ValidateFileUpload ¶
func (av *APIValidator) ValidateFileUpload(files []*multipart.FileHeader) *ValidationResult
ValidateFileUpload valide un upload de fichiers
func (*APIValidator) ValidateFilenameParam ¶
func (av *APIValidator) ValidateFilenameParam(filename string) *ValidationResult
ValidateFilenameParam valide un paramètre filename depuis l'URL
func (*APIValidator) ValidateGenerationRequest ¶
func (av *APIValidator) ValidateGenerationRequest(req *models.GenerationRequest) *ValidationResult
ValidateGenerationRequest valide une requête de génération
func (*APIValidator) ValidateJobIDParam ¶
func (av *APIValidator) ValidateJobIDParam(jobIDStr string) (uuid.UUID, *ValidationResult)
ValidateJobIDParam valide un paramètre job_id depuis l'URL
func (*APIValidator) ValidateListJobsParams ¶
func (av *APIValidator) ValidateListJobsParams(statusParam, courseIDParam, limitParam, offsetParam string) (*ListJobsParams, *ValidationResult)
ValidateListJobsParams valide tous les paramètres pour ListJobs
func (*APIValidator) ValidateListParams ¶
func (av *APIValidator) ValidateListParams(status string, limit, offset int) *ValidationResult
ValidateListParams valide les paramètres de listage (status, limit, offset)
func (*APIValidator) ValidatePaginationParams ¶
func (av *APIValidator) ValidatePaginationParams(limitStr, offsetStr string) (*PaginationParams, *ValidationResult)
ValidatePaginationParams valide les paramètres de pagination avec valeurs par défaut
func (*APIValidator) ValidateStatusParam ¶
func (av *APIValidator) ValidateStatusParam(status string) *ValidationResult
ValidateStatusParam valide un paramètre status de job (optionnel)
func (*APIValidator) ValidateWorkspaceCleanupParams ¶
func (av *APIValidator) ValidateWorkspaceCleanupParams(maxAgeParam string) (*WorkspaceCleanupParams, *ValidationResult)
ValidateWorkspaceCleanupParams valide les paramètres de nettoyage des workspaces
func (*APIValidator) ValidateWorkspaceListParams ¶
func (av *APIValidator) ValidateWorkspaceListParams(statusParam, limitParam, offsetParam string) (*WorkspaceListParams, *ValidationResult)
ValidateWorkspaceListParams valide les paramètres de listing des workspaces
type ListJobsParams ¶
type ListJobsParams struct { Status string `json:"status"` CourseID *uuid.UUID `json:"course_id,omitempty"` Pagination PaginationParams `json:"pagination"` }
type PaginationParams ¶
PaginationParams contient les paramètres de pagination validés
type RequestValidator ¶
type RequestValidator func(*gin.Context, *APIValidator) *ValidationResult
RequestValidator définit une fonction de validation pour une requête
func CombineValidators ¶
func CombineValidators(validators ...RequestValidator) RequestValidator
CombineValidators combine plusieurs validators (tous doivent passer)
func ValidateCourseIDParam ¶
func ValidateCourseIDParam(paramName string) RequestValidator
ValidateCourseIDParam valide un paramètre course_id depuis l'URL
func ValidateFilenameParam ¶
func ValidateFilenameParam(paramName string) RequestValidator
ValidateFilenameParam valide un nom de fichier depuis l'URL
func ValidateJobIDParam ¶
func ValidateJobIDParam(paramName string) RequestValidator
func ValidateOptionalCourseIDParam ¶
func ValidateOptionalCourseIDParam(paramName string) RequestValidator
ValidateOptionalCourseIDParam valide un paramètre course_id optionnel depuis les query params
func ValidateStatusParam ¶
func ValidateStatusParam(paramName string) RequestValidator
ValidateStatusParam valide un paramètre status depuis l'URL ou query
type ValidationConfig ¶
type ValidationConfig struct { MaxFileSize int64 // Taille max par fichier (bytes) MaxTotalSize int64 // Taille max totale (bytes) MaxFiles int // Nombre max de fichiers AllowedExtensions map[string]bool // Extensions autorisées MaxFilenameLength int // Longueur max du nom de fichier AllowedMimeTypes map[string]bool // Types MIME autorisés }
ValidationConfig contient la configuration de validation
func DefaultValidationConfig ¶
func DefaultValidationConfig() *ValidationConfig
DefaultValidationConfig retourne une configuration par défaut sécurisée
type ValidationError ¶
type ValidationError struct { Field string `json:"field"` Value string `json:"value"` Message string `json:"message"` Code string `json:"code"` }
ValidationError représente une erreur de validation avec détails
func (*ValidationError) Error ¶
func (e *ValidationError) Error() string
type ValidationResult ¶
type ValidationResult struct { Valid bool `json:"valid"` Errors []*ValidationError `json:"errors,omitempty"` }
ValidationResult contient le résultat de validation
func ValidateFileListFormat ¶ added in v0.0.4
func ValidateFileListFormat(c *gin.Context, v *APIValidator) *ValidationResult
Valide les paramètres de format
func ValidateFileUpload ¶
func ValidateFileUpload(c *gin.Context, v *APIValidator) *ValidationResult
ValidateFileUpload valide un upload de fichiers multipart
func ValidateGenerationRequest ¶
func ValidateGenerationRequest(c *gin.Context, v *APIValidator) *ValidationResult
func ValidateListJobsParams ¶
func ValidateListJobsParams(c *gin.Context, v *APIValidator) *ValidationResult
ValidateListJobsParams valide tous les paramètres pour l'endpoint ListJobs
func ValidatePaginationParams ¶
func ValidatePaginationParams(c *gin.Context, v *APIValidator) *ValidationResult
ValidatePaginationParams valide les paramètres de pagination depuis les query params
func ValidateWorkspaceCleanupParams ¶
func ValidateWorkspaceCleanupParams(c *gin.Context, v *APIValidator) *ValidationResult
ValidateWorkspaceCleanupParams valide les paramètres de nettoyage des workspaces
func ValidateWorkspaceListParams ¶
func ValidateWorkspaceListParams(c *gin.Context, v *APIValidator) *ValidationResult
ValidateWorkspaceListParams valide les paramètres de listing des workspaces
func (*ValidationResult) AddError ¶
func (vr *ValidationResult) AddError(field, value, message, code string)
AddError ajoute une erreur de validation
type ValidationService ¶
type ValidationService struct {
// contains filtered or unexported fields
}
ValidationService gère la validation des entrées
func NewValidationService ¶
func NewValidationService(config *ValidationConfig) *ValidationService
NewValidationService crée un nouveau service de validation
func (*ValidationService) ValidateCallbackURL ¶
func (vs *ValidationService) ValidateCallbackURL(url string) *ValidationResult
ValidateCallbackURL valide une URL de callback
func (*ValidationService) ValidateCourseID ¶
func (vs *ValidationService) ValidateCourseID(courseID string) *ValidationResult
ValidateCourseID valide un ID de cours
func (*ValidationService) ValidateFileHeader ¶
func (vs *ValidationService) ValidateFileHeader(header *multipart.FileHeader) *ValidationResult
ValidateFileHeader valide un header de fichier multipart
func (*ValidationService) ValidateFilename ¶
func (vs *ValidationService) ValidateFilename(filename string, directory bool) *ValidationResult
ValidateFilename valide un nom de fichier de manière robuste
func (*ValidationService) ValidateFiles ¶
func (vs *ValidationService) ValidateFiles(files []*multipart.FileHeader) *ValidationResult
ValidateFiles valide un ensemble de fichiers
func (*ValidationService) ValidateJobID ¶
func (vs *ValidationService) ValidateJobID(jobID string) *ValidationResult
ValidateJobID valide un ID de job
func (*ValidationService) ValidateMetadata ¶
func (vs *ValidationService) ValidateMetadata(metadata map[string]interface{}) *ValidationResult
ValidateMetadata valide les métadonnées
func (*ValidationService) ValidateSourcePath ¶
func (vs *ValidationService) ValidateSourcePath(path string) *ValidationResult
ValidateSourcePath valide un chemin source
type WorkspaceCleanupParams ¶
type WorkspaceCleanupParams struct {
MaxAgeHours int `json:"max_age_hours"`
}
WorkspaceCleanupParams contient les paramètres validés pour le nettoyage
type WorkspaceListParams ¶
type WorkspaceListParams struct { Status string `json:"status"` Pagination PaginationParams `json:"pagination"` }
WorkspaceListParams contient les paramètres validés pour lister les workspaces