<feed xmlns='http://www.w3.org/2005/Atom'>
<title>weepinbell/src/weepinbell/processor/verifier.clj, branch master</title>
<subtitle>A Webmention receiver written in Clojure</subtitle>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/'/>
<entry>
<title>test: remove http request retries from tests</title>
<updated>2026-10-15T08:09:41+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-15T08:09:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=b02decd826ade91afc455081bf3359c912449a1b'/>
<id>b02decd826ade91afc455081bf3359c912449a1b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>verifier, http.client: retry timeout HTTP requests</title>
<updated>2026-10-09T03:17:48+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-09T02:54:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=f441b8b57e42aa328f16d672ae994f8ec88f3eb9'/>
<id>f441b8b57e42aa328f16d672ae994f8ec88f3eb9</id>
<content type='text'>
- add weepinbell.http.client/with-retry macro
  - retry only requests that returns :error with type TimeoutException
  - retry is done asynchronously
  - with-retry should return a Future
- retry verifier requesting source and target, 3 times with 5 seconds
backoff
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- add weepinbell.http.client/with-retry macro
  - retry only requests that returns :error with type TimeoutException
  - retry is done asynchronously
  - with-retry should return a Future
- retry verifier requesting source and target, 3 times with 5 seconds
backoff
</pre>
</div>
</content>
</entry>
<entry>
<title>test, verifier, utils: fix failed tests</title>
<updated>2026-10-07T09:18:06+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-07T09:18:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=ac5d88fae0f64609b522bd272587e9d98ca59a16'/>
<id>ac5d88fae0f64609b522bd272587e9d98ca59a16</id>
<content type='text'>
- some namespaces tests require did not get renamed
- url/extract might throw AssertionError if input contains non-HTTP(S)
urls. it should not check schemes.
- verifier doesn't need to filter non-HTTP(S) urls since they will
return false anyway, and plus it makes localhost urls in tests fail
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- some namespaces tests require did not get renamed
- url/extract might throw AssertionError if input contains non-HTTP(S)
urls. it should not check schemes.
- verifier doesn't need to filter non-HTTP(S) urls since they will
return false anyway, and plus it makes localhost urls in tests fail
</pre>
</div>
</content>
</entry>
<entry>
<title>processor, webserver: move two main subsystems to own dir and make facades</title>
<updated>2026-10-07T08:24:32+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-07T07:54:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=89d5bd3a26619e30dcf8b7382432180a399d25c9'/>
<id>89d5bd3a26619e30dcf8b7382432180a399d25c9</id>
<content type='text'>
add docstrings

format code
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
add docstrings

format code
</pre>
</div>
</content>
</entry>
<entry>
<title>verifier, utils: fix verification failure when page contains invalid URL</title>
<updated>2026-10-07T08:11:04+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-07T08:11:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=f356729a846da50c71d1fd3ce98db88fa3a3976b'/>
<id>f356729a846da50c71d1fd3ce98db88fa3a3976b</id>
<content type='text'>
- URISyntaxException was not caught in url/normalize, causing
normalization failure which leads to verification failure when there is
one invalid URL, even though valid URL exists
- skip non-HTTP(S) urls when verifying
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- URISyntaxException was not caught in url/normalize, causing
normalization failure which leads to verification failure when there is
one invalid URL, even though valid URL exists
- skip non-HTTP(S) urls when verifying
</pre>
</div>
</content>
</entry>
<entry>
<title>receiver, verifier, retriever, storage: URL normalization</title>
<updated>2026-10-07T07:30:20+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-06T12:36:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=87e57727ebfdb51d970f65a1d332aef1cab7c8c9'/>
<id>87e57727ebfdb51d970f65a1d332aef1cab7c8c9</id>
<content type='text'>
utils: add url utilities for accurate comparison

- add url/normalize taht reconstructs URL, strips unnecessary
components, reorders query string and ensures determinism
- add url/url= that uses url/normalize

receiver: normalize URLs before checking and putting in queue

- use url= and normalize from utils.url
- rename verify-request to check-request to avoid confusion with
verifier.clj

verifier: check if source includes target URL more accurately

- implement url/extract with robinst/autolink-java, which extracts a
vector a URLs from string
- check if source includes target by
  1. extracting all links from source body
  2. normalizing all links before comparing with target link (with url=
func)
- refactor verify-headers -&gt; match-content-types, with a higher order
function and clearer description

retriever, storage: use url= instead of = when comparing urls
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
utils: add url utilities for accurate comparison

- add url/normalize taht reconstructs URL, strips unnecessary
components, reorders query string and ensures determinism
- add url/url= that uses url/normalize

receiver: normalize URLs before checking and putting in queue

- use url= and normalize from utils.url
- rename verify-request to check-request to avoid confusion with
verifier.clj

verifier: check if source includes target URL more accurately

- implement url/extract with robinst/autolink-java, which extracts a
vector a URLs from string
- check if source includes target by
  1. extracting all links from source body
  2. normalizing all links before comparing with target link (with url=
func)
- refactor verify-headers -&gt; match-content-types, with a higher order
function and clearer description

retriever, storage: use url= instead of = when comparing urls
</pre>
</div>
</content>
</entry>
<entry>
<title>processor: refactor processor; replace mf2j with mf2clj</title>
<updated>2026-09-23T02:15:19+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-09-21T13:34:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=8e616731cd8ef5ace2bfaa3546a5a8bff6699ce0'/>
<id>8e616731cd8ef5ace2bfaa3546a5a8bff6699ce0</id>
<content type='text'>
- replace mf2j with mf2clj
- remove utils.clj completely
- refactored processor, use Chain of Responsibilities pattern and pass
around maps to reuse data (so we don't have to make a separate HTTP
request just to parse microformats, etc.)
- test: add more test cases to verifier test
- test: add basic test cases to all processing steps
- add more logging to each processing steps. good for debugging.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- replace mf2j with mf2clj
- remove utils.clj completely
- refactored processor, use Chain of Responsibilities pattern and pass
around maps to reuse data (so we don't have to make a separate HTTP
request just to parse microformats, etc.)
- test: add more test cases to verifier test
- test: add basic test cases to all processing steps
- add more logging to each processing steps. good for debugging.
</pre>
</div>
</content>
</entry>
</feed>
