package handlers import ( "encoding/json" "net/http" "github.com/scanner/backend/middleware" "github.com/scanner/backend/models" "github.com/scanner/backend/services" ) type FileHandler struct { fileConverter *services.FileConverter } func NewFileHandler(fileConverter *services.FileConverter) *FileHandler { return &FileHandler{fileConverter: fileConverter} } func (h *FileHandler) MergeFiles(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } middleware.ApplyCors(w, r) var mergeRequest models.MergeRequest err := json.NewDecoder(r.Body).Decode(&mergeRequest) if err != nil { http.Error(w, "Invalid request body", http.StatusBadRequest) return } if len(mergeRequest.Filenames) < 2 { http.Error(w, "At least two files are required for merging", http.StatusBadRequest) return } files := []string{} for _, filename := range mergeRequest.Filenames { files = append(files, "/home/backend/var/documents/"+filename) } mergedFilename, err := h.fileConverter.MergeFiles(files) if err != nil { http.Error(w, "Failed to merge files: "+err.Error(), http.StatusInternalServerError) return } response := map[string]string{ "mergedFile": "/files/" + mergedFilename, } w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(response) }