feat: delete firmware

This commit is contained in:
2025-10-22 21:14:07 +02:00
parent 4a11bad7dd
commit 6ed905b9f3
6 changed files with 163 additions and 0 deletions

View File

@@ -199,6 +199,52 @@ func (h *FirmwareHandler) DownloadFirmware(w http.ResponseWriter, r *http.Reques
http.ServeFile(w, r, filePath)
}
// DeleteFirmware handles DELETE /firmware/{name}/{version} endpoint
func (h *FirmwareHandler) DeleteFirmware(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodDelete {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
// Extract path parameters
path := strings.TrimPrefix(r.URL.Path, "/firmware/")
parts := strings.Split(path, "/")
if len(parts) != 2 {
log.Printf("Invalid firmware path for delete: %s", r.URL.Path)
http.Error(w, "Invalid firmware path", http.StatusBadRequest)
return
}
name := parts[0]
version := parts[1]
log.Printf("DELETE /firmware/%s/%s - %s", name, version, r.RemoteAddr)
// Delete firmware using service
if err := h.service.DeleteFirmware(name, version); err != nil {
if strings.Contains(err.Error(), "not found") {
log.Printf("Firmware not found for deletion: %s/%s", name, version)
http.Error(w, "Firmware not found", http.StatusNotFound)
} else {
log.Printf("Failed to delete firmware: %v", err)
http.Error(w, "Failed to delete firmware: "+err.Error(), http.StatusInternalServerError)
}
return
}
log.Printf("Successfully deleted firmware: %s/%s", name, version)
// Return success response
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(map[string]interface{}{
"success": true,
"message": "Firmware deleted successfully",
"name": name,
"version": version,
})
}
// HealthCheck provides a simple health check endpoint
func (h *FirmwareHandler) HealthCheck(w http.ResponseWriter, r *http.Request) {
response := models.HealthResponse{Status: "healthy"}