From 7c8fcc32616d007c44d993fd06daefb8c322b5da Mon Sep 17 00:00:00 2001 From: "Arik Jones (aider)" Date: Thu, 19 Sep 2024 16:31:43 -0500 Subject: [PATCH] fix: update getFilenameFromContent to handle invalid URLs and use .rollup.md suffix --- cmd/web.go | 8 ++++---- cmd/web_test.go | 26 ++++++++++++++++++-------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/cmd/web.go b/cmd/web.go index f2e21a9..0f2bd06 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -203,23 +203,23 @@ func extractAndConvertContent(urlStr string) (string, error) { return header + markdown + "\n\n", nil } -func getFilenameFromContent(content, urlStr string) string { +func getFilenameFromContent(content, urlStr string) (string, error) { // Try to extract title from content titleStart := strings.Index(content, "") titleEnd := strings.Index(content, "") if titleStart != -1 && titleEnd != -1 && titleEnd > titleStart { title := content[titleStart+7 : titleEnd] - return sanitizeFilename(title) + ".md" + return sanitizeFilename(title) + ".rollup.md", nil } // If no title found, use the URL without the protocol parsedURL, err := url.Parse(urlStr) if err != nil { - return "untitled.md" + return "", fmt.Errorf("invalid URL: %v", err) } filename := parsedURL.Host + parsedURL.Path - return sanitizeFilename(filename) + ".md" + return sanitizeFilename(filename) + ".rollup.md", nil } func sanitizeFilename(name string) string { diff --git a/cmd/web_test.go b/cmd/web_test.go index a452525..739f320 100644 --- a/cmd/web_test.go +++ b/cmd/web_test.go @@ -70,18 +70,28 @@ func TestGetFilenameFromContent(t *testing.T) { content string url string expected string + expectErr bool }{ - {"Test Page", "http://example.com", "Test_Page.md"}, - {"No title here", "http://example.com/page", "example_com_page.md"}, - {" Trim Me ", "http://example.com", "Trim_Me.md"}, - {"", "http://example.com", "example_com.md"}, - {"Invalid URL", "not a valid url", "untitled.md"}, + {"Test Page", "http://example.com", "Test_Page.rollup.md", false}, + {"No title here", "http://example.com/page", "example_com_page.rollup.md", false}, + {" Trim Me ", "http://example.com", "Trim_Me.rollup.md", false}, + {"", "http://example.com", "example_com.rollup.md", false}, + {"Invalid URL", "not a valid url", "", true}, } for _, test := range tests { - result := getFilenameFromContent(test.content, test.url) - if result != test.expected { - t.Errorf("getFilenameFromContent(%q, %q) = %q; want %q", test.content, test.url, result, test.expected) + result, err := getFilenameFromContent(test.content, test.url) + if test.expectErr { + if err == nil { + t.Errorf("getFilenameFromContent(%q, %q) expected an error, but got none", test.content, test.url) + } + } else { + if err != nil { + t.Errorf("getFilenameFromContent(%q, %q) unexpected error: %v", test.content, test.url, err) + } + if result != test.expected { + t.Errorf("getFilenameFromContent(%q, %q) = %q; want %q", test.content, test.url, result, test.expected) + } } } }