discussion and development of piem
 help / color / mirror / code / Atom feed
* [PATCH] piem-inboxes: Allow :url values without a trailing slash
@ 2023-06-03  4:11 Kyle Meyer
  2023-06-06  1:41 ` Kyle Meyer
  0 siblings, 1 reply; 2+ messages in thread
From: Kyle Meyer @ 2023-06-03  4:11 UTC (permalink / raw)
  To: piem; +Cc: Jelle Licht

The piem-inboxes documentation says that the :url value must end in a
slash, which is confusing because 1) public-inbox does not require
this and has examples in its docs without a slash and 2) some spots in
piem already append a slash if needed.

Add a piem-inbox-get wrapper that ensures the returned URL ends with a
slash, and use it in all spots that retrieve an inbox's URL.

Reported-by: Jelle Licht <jlicht@fsfe.org>
Link: https://inbox.kyleam.com/piem/87y1l9ualg.fsf@fsfe.org
---
 piem-b4.el          |  2 +-
 piem-elfeed.el      |  2 +-
 piem-eww.el         |  2 +-
 piem.el             | 16 +++++++++++-----
 tests/piem-tests.el |  6 +++---
 5 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/piem-b4.el b/piem-b4.el
index cd19ebb3..8a381c69 100644
--- a/piem-b4.el
+++ b/piem-b4.el
@@ -73,7 +73,7 @@ (defun piem-b4--get-am-files (mid coderepo args)
     ;; b4's configuration.
     (unless local-mbox-p
       (when-let ((url (and (equal mid (piem-mid))
-                           (piem-inbox-get :url))))
+                           (piem-inbox-url))))
         (ignore-errors
           (piem-with-url-contents
               (concat url (piem-escape-mid mid) "/t.mbox.gz")
diff --git a/piem-elfeed.el b/piem-elfeed.el
index ce9c75ce..eef61e85 100644
--- a/piem-elfeed.el
+++ b/piem-elfeed.el
@@ -44,7 +44,7 @@ (defun piem-elfeed-get-inbox ()
 (defun piem-elfeed-get-mid ()
   "Return the message ID of an `elfeed-show-mode' buffer."
   (when-let ((inbox (piem-elfeed-get-inbox))
-             (inbox-url (piem-inbox-get :url inbox))
+             (inbox-url (piem-inbox-url inbox))
              (link (elfeed-entry-link elfeed-show-entry)))
     (and (string-match (piem-message-link-re inbox-url) link)
          (url-unhex-string (match-string 1 link)))))
diff --git a/piem-eww.el b/piem-eww.el
index 01a9f9de..57690602 100644
--- a/piem-eww.el
+++ b/piem-eww.el
@@ -43,7 +43,7 @@ (defun piem-eww-get-inbox ()
 (defun piem-eww-get-mid ()
   "Return the message ID of an EWW buffer."
   (when-let ((inbox (piem-eww-get-inbox))
-             (inbox-url (piem-inbox-get :url inbox))
+             (inbox-url (piem-inbox-url inbox))
              (url (plist-get eww-data :url)))
     (and (string-match (piem-message-link-re inbox-url) url)
          (url-unhex-string (match-string 1 url)))))
diff --git a/piem.el b/piem.el
index a933a6cc..568e91b7 100644
--- a/piem.el
+++ b/piem.el
@@ -80,7 +80,7 @@ (defcustom piem-inboxes nil
       repository, with the first value in this list offered as
       the default.
   :url
-      A URL hosting HTTPS archives.  This value must end with a slash.
+      A URL hosting HTTPS archives.
   :maildir
       A Maildir directory to inject messages into.
 
@@ -522,6 +522,13 @@ (defun piem-inbox-get (key &optional inbox)
   (when-let ((p (or inbox (piem-inbox))))
     (plist-get (cdr (assoc p (piem-merged-inboxes))) key)))
 
+(defun piem-inbox-url (&optional inbox)
+  "Return URL associated with INBOX.
+If INBOX is nil, use the inbox returned by `piem-inbox'."
+  (when-let ((inbox (or inbox (piem-inbox)))
+             (url (piem-inbox-get :url inbox)))
+    (piem--ensure-trailing-slash url)))
+
 (defun piem-inbox-coderepo (&optional inbox)
   "Return the code repository of current buffer's inbox."
   (when-let ((inbox (or inbox (piem-inbox)))
@@ -665,10 +672,9 @@ (defun piem-mid-url (mid &optional inbox)
 public-inbox's configuration.  If INBOX is nil, use the inbox
 returned by `piem-inbox'."
   (concat
-   (piem--ensure-trailing-slash
-    (or (piem-inbox-get :url inbox)
-        (user-error "Couldn't find URL for %s"
-                    (or inbox "current buffer"))))
+   (or (piem-inbox-url inbox)
+       (user-error "Couldn't find URL for %s"
+                   (or inbox "current buffer")))
    (piem-escape-mid mid)))
 
 ;;;###autoload
diff --git a/tests/piem-tests.el b/tests/piem-tests.el
index 7f9f30f3..b612b964 100644
--- a/tests/piem-tests.el
+++ b/tests/piem-tests.el
@@ -74,7 +74,7 @@ (ert-deftest piem-merged-inboxes:from-config-disabled ()
                   (piem-merged-inboxes))))
   (let ((piem-get-inboxes-from-config nil)
         (piem-inboxes '(("inbox" :url "inbox-url"))))
-    (should (equal (piem-inbox-get :url "inbox") "inbox-url"))))
+    (should (equal (piem-inbox-url "inbox") "inbox-url/"))))
 
 (ert-deftest piem-merged-inboxes:from-config ()
   (piem-clear-merged-inboxes)
@@ -83,8 +83,8 @@ (ert-deftest piem-merged-inboxes:from-config ()
     (piem-tests-with-pi-config piem-tests-sample-pi-config
       (should (equal (piem-inbox-get :address "foo")
                      "foo@example.com"))
-      (should (equal (piem-inbox-get :url "foo")
-                     "https://example.com/foo"))
+      (should (equal (piem-inbox-url "foo")
+                     "https://example.com/foo/"))
       (should (equal (piem-inbox-coderepo "foo")
                      "/code/foo/")))
     (piem-tests-with-pi-config ""

base-commit: 880413af62393d932ca8838d3023399064d72013
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] piem-inboxes: Allow :url values without a trailing slash
  2023-06-03  4:11 [PATCH] piem-inboxes: Allow :url values without a trailing slash Kyle Meyer
@ 2023-06-06  1:41 ` Kyle Meyer
  0 siblings, 0 replies; 2+ messages in thread
From: Kyle Meyer @ 2023-06-06  1:41 UTC (permalink / raw)
  To: piem; +Cc: Jelle Licht

pushed (adb5b4a8)

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-06-06  1:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-03  4:11 [PATCH] piem-inboxes: Allow :url values without a trailing slash Kyle Meyer
2023-06-06  1:41 ` Kyle Meyer

Code repositories for project(s) associated with this public inbox

	https://git.kyleam.com/piem/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).