<feed xmlns='http://www.w3.org/2005/Atom'>
<title>weepinbell/src/weepinbell/http, 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, downloader: tidy up downloader and add tests</title>
<updated>2026-10-30T03:35:45+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-30T03:35:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=dd4c7ca7850f166af4997912a3ded5639bd14a56'/>
<id>dd4c7ca7850f166af4997912a3ded5639bd14a56</id>
<content type='text'>
- simplify (.mkdirs parent-dir) and with (io/make-parents file)
- should return false when HTTP request fails, not nil
- check if corrputed file exitsts before deleting it
- add tests
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- simplify (.mkdirs parent-dir) and with (io/make-parents file)
- should return false when HTTP request fails, not nil
- check if corrputed file exitsts before deleting it
- add tests
</pre>
</div>
</content>
</entry>
<entry>
<title>test: improve coverage #28</title>
<updated>2026-10-16T02:36:54+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-16T02:36:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=214d521e59d636c30249ab724542d5f80077835f'/>
<id>214d521e59d636c30249ab724542d5f80077835f</id>
<content type='text'>
- storage-test: worker should handle other storage operations if some of
them throws Exception
- storage-test: microformats and proxied-photo should be stored as is
- microformats-test: use-prop shuold handle both string and keyword
typed keys
- comment unused http client functions
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- storage-test: worker should handle other storage operations if some of
them throws Exception
- storage-test: microformats and proxied-photo should be stored as is
- microformats-test: use-prop shuold handle both string and keyword
typed keys
- comment unused http client functions
</pre>
</div>
</content>
</entry>
<entry>
<title>style: cljfmt everything</title>
<updated>2026-10-13T13:27:29+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-13T13:27:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=3989bf6fbbb242ad5bd6a1d1f91f70a6a222f8e2'/>
<id>3989bf6fbbb242ad5bd6a1d1f91f70a6a222f8e2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>proceesor, storage: better error handling; no interrupting pipeline</title>
<updated>2026-10-11T10:00:32+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-11T10:00:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=b3c915d33a67f8063ffb4ef8895523de47c9305c'/>
<id>b3c915d33a67f8063ffb4ef8895523de47c9305c</id>
<content type='text'>
- print clear stack trace using timbre when capturing exceptions
- don't pass nil to url/normalize; if url/normalize gets a nil, instead
of NPE, it now returns an empty string
- capture exceptions in processor pipeline to keep it from dying
- http.downloader now checks response status instead of blindly
downloading anything
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- print clear stack trace using timbre when capturing exceptions
- don't pass nil to url/normalize; if url/normalize gets a nil, instead
of NPE, it now returns an empty string
- capture exceptions in processor pipeline to keep it from dying
- http.downloader now checks response status instead of blindly
downloading anything
</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>http.downloader: report file size on disk, not via http header Content-Length</title>
<updated>2026-09-23T10:17:48+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-09-23T10:17:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=10715340fb8cab4d1024a3e83a218e06a7a2f295'/>
<id>10715340fb8cab4d1024a3e83a218e06a7a2f295</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>http.downloader: fix corrupted/empty file not deleted after download failed</title>
<updated>2026-09-23T10:07:52+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-09-23T10:07:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=dbf0ff643bee01b4327a4f835d2d3bb656d72bba'/>
<id>dbf0ff643bee01b4327a4f835d2d3bb656d72bba</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</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>
<entry>
<title>style: format the codebase</title>
<updated>2026-09-16T02:11:07+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-09-16T02:11:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=d54b08ee4139de3bf373b21be5e662970e18e586'/>
<id>d54b08ee4139de3bf373b21be5e662970e18e586</id>
<content type='text'>
starting from now, every commit should be cljfmt-fixed
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
starting from now, every commit should be cljfmt-fixed
</pre>
</div>
</content>
</entry>
<entry>
<title>httpclient, webhook, verifier: add weepinbell.http.client to wrap org.httpkit.client</title>
<updated>2026-09-15T03:30:50+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-09-14T10:12:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=9d30e52d4fd7c921683fd8a55c818ff7fd3ef7fe'/>
<id>9d30e52d4fd7c921683fd8a55c818ff7fd3ef7fe</id>
<content type='text'>
comment
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
comment
</pre>
</div>
</content>
</entry>
</feed>
