validation

package
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 4, 2025 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Overview

internal/validation/middleware.go

Index

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

type PaginationParams struct {
	Limit  int `json:"limit"`
	Offset int `json:"offset"`
}

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL