# Go Middleware - FikoYT

## 🔧 Middleware Chain

**Execution order:**
```go
app.Use(recoverer.New())                    // Error recovery
app.Use(fikoyt_json.AraIsleyici())           // JSON parsing
app.Use(FikoYTDosya.AraIsleyici())           // File handling
app.Use(requestid.New())                    // Request tracking
app.Use(araIsleyici())                      // Context creation
```

## 📝 JSON Middleware

**FikoYT JSON handler:**
```go
func AraIsleyici() fiber.Handler {
    return func(c fiber.Ctx) error {
        // Auto-convert JSON strings to Go types
        if stringVal, ok := value.(string); ok {
            // Try to convert to ObjectID
            if len(stringVal) == 24 {
                if oid, err := primitive.ObjectIDFromHex(stringVal); err == nil {
                    c.Locals("json", oid)
                }
            }
        }
    }
}
```

## 📁 File Middleware

**FikoYTDosya handler:**
- **Multi-part form** support
- **File validation** (type, size)
- **Event system** for processing
- **Background** processing

## 🔐 Session Middleware

**MongoDB-backed sessions:**
```go
SessionConfig = session.Config{
    Storage: MongoStore,
    CookieSecure: true,
    CookieHTTPOnly: true,
    CookieSameSite: "lax",
    Expiration: 24 * time.Hour,
    KeyLookup: "cookie:sid",
}
```

## 🛡️ Security Features

- **CORS:** Configured domains
- **CSRF:** Request ID tracking
- **Rate limiting:** Per IP
- **Input sanitization:** Type safety

---
2025-11-06