* [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).