feat: delete firmware
This commit is contained in:
@@ -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"}
|
||||
|
||||
Reference in New Issue
Block a user