diff --git a/internal/handlers/reader.go b/internal/handlers/reader.go index e8ffe73e..e59effff 100644 --- a/internal/handlers/reader.go +++ b/internal/handlers/reader.go @@ -590,57 +590,6 @@ func (h *ReaderHandler) generatePDFThumbnail(fullPath string, page int, width, h return []byte{}, nil } -func (h *ReaderHandler) ParseEbook(c *echo.Context) error { - mediaItemID := c.Param("mediaItemId") - parsedUUID, err := uuid.Parse(mediaItemID) - if err != nil { - return c.JSON(400, map[string]string{"error": "Invalid media item ID"}) - } - - // Fetch media item - mediaItem, err := h.db.GetMediaItem(c.Request().Context(), pgtype.UUID{Bytes: parsedUUID, Valid: true}) - if err != nil { - if errors.Is(err, pgx.ErrNoRows) { - return c.JSON(404, map[string]string{"error": "Media item not found"}) - } - return c.JSON(500, map[string]string{"error": "Failed to fetch media item"}) - } - - // Check if format requires server-side parsing - requiresServerParsing := false - formatName := "" - switch mediaItem.MimeType.String { - case "application/x-mobipocket-ebook": - requiresServerParsing = true - formatName = "MOBI" - case "application/vnd.amazon.mobi8-ebook": - requiresServerParsing = true - formatName = "AZW3/KF8" - case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": - requiresServerParsing = true - formatName = "DOCX" - case "application/rtf": - requiresServerParsing = true - formatName = "RTF" - } - - if requiresServerParsing { - // Phase 1: Return 501 for server-side formats - return c.JSON(501, map[string]interface{}{ - "error": fmt.Sprintf("Server-side %s parsing is not yet implemented", formatName), - "message": fmt.Sprintf("%s format support is planned for Phase 2.5", formatName), - "suggestion": "Please convert your ebook to EPUB format for now", - "format": formatName, - "phase": "2.5", - }) - } - - // Client-side format - should not call this endpoint - return c.JSON(400, map[string]string{ - "error": "This format should be parsed client-side, not on the server", - }) -} - // ShouldTreatAsComic reports whether a fixed-layout item that lives in a // comics or manga library should get comic reader treatment: bookmarks // only — no text-selection highlights, no annotations, no in-book search.