<feed xmlns='http://www.w3.org/2005/Atom'>
<title>weepinbell/src/weepinbell/webhook.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, webhook: tidy up webhook; add tests</title>
<updated>2026-10-30T03:46:40+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-10-30T03:46:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=a5f0d0dc9e73ba46a4ff974a256de770d70ac788'/>
<id>a5f0d0dc9e73ba46a4ff974a256de770d70ac788</id>
<content type='text'>
- (send-webhook) does not need to validate URLs; (trigger) already does
that; replace validation logic with :pre conditional
- (make-request) does not need to fallback to empty string when
event-key is nil. it should never be nil.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- (send-webhook) does not need to validate URLs; (trigger) already does
that; replace validation logic with :pre conditional
- (make-request) does not need to fallback to empty string when
event-key is nil. it should never be nil.
</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>webhook: fix AssertionError when event keys are not complete in user's config</title>
<updated>2026-09-27T13:48:52+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-09-27T13:48:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=a52b1c74af318b7550711d360d202a3cc4e02805'/>
<id>a52b1c74af318b7550711d360d202a3cc4e02805</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>webhook: fix not identifying custom functions as functions</title>
<updated>2026-09-23T07:06:18+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-09-23T07:05:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=6552465ebbcca3fa861176eedf12cdf65be29d15'/>
<id>6552465ebbcca3fa861176eedf12cdf65be29d15</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>processor, webhook: send webhooks with customizable payload</title>
<updated>2026-09-19T04:10:45+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-09-16T09:03:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=ef9ca471427b636c1fa42244923a04c548a04d82'/>
<id>ef9ca471427b636c1fa42244923a04c548a04d82</id>
<content type='text'>
- processor will call hook functions with webmention data
- refactor webhook.clj massively
- add dynamic parameter substitution for urls, e.g. {source} {target}
{event}......
- add config option :webhook-request, a function with parameters [hook,
data] that returns a map (resembling {:headers ... :body ...}).
webhook.clj uses this function to generate payload.
- allow map besids URL string in config option :webhook. if it's a URL,
sends webhook request to it with payload generated by :webhook-request;
if it's a map, it should be like {:url ... :request-fn ...}, which
specifies a payload generator.
- add request-fn preset :ntfy
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- processor will call hook functions with webmention data
- refactor webhook.clj massively
- add dynamic parameter substitution for urls, e.g. {source} {target}
{event}......
- add config option :webhook-request, a function with parameters [hook,
data] that returns a map (resembling {:headers ... :body ...}).
webhook.clj uses this function to generate payload.
- allow map besids URL string in config option :webhook. if it's a URL,
sends webhook request to it with payload generated by :webhook-request;
if it's a map, it should be like {:url ... :request-fn ...}, which
specifies a payload generator.
- add request-fn preset :ntfy
</pre>
</div>
</content>
</entry>
<entry>
<title>docs: add missing docstrings and mark certain components as deprecated</title>
<updated>2026-09-18T02:37:42+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-09-18T02:37:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=bcb0665fe74beb9dd660db7781fea6369216d3b6'/>
<id>bcb0665fe74beb9dd660db7781fea6369216d3b6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</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>
<entry>
<title>processor, verifier, webhook: tidy up log msg/level; improve code style</title>
<updated>2026-09-14T09:15:10+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-09-14T08:02:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=435e63927da0594e410f6100e3e2e0f5f64cfbf2'/>
<id>435e63927da0594e410f6100e3e2e0f5f64cfbf2</id>
<content type='text'>
processor: tidy up log msg and level; improve code style

- all messages start with a lower-case letter
- all webmention-related logging contains first 8-digit of its id
- use WARN level when something is deleted, not INFO
- use WARN level when exceptional cases happen, not ERROR
- get rid of emojis in log messages

utils: digest-short function for logging

verifier: tidy up log messages; improve code style

- use `cond` instead of nested `if`s
- same message format as processor's logs

webhook: tidy up log messages; send webhooks robustly

- use same logging formats as processor and verifier
- handle error, 4xx, 5xx status and log them
- move logging inside webhook module, away from core.clj
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
processor: tidy up log msg and level; improve code style

- all messages start with a lower-case letter
- all webmention-related logging contains first 8-digit of its id
- use WARN level when something is deleted, not INFO
- use WARN level when exceptional cases happen, not ERROR
- get rid of emojis in log messages

utils: digest-short function for logging

verifier: tidy up log messages; improve code style

- use `cond` instead of nested `if`s
- same message format as processor's logs

webhook: tidy up log messages; send webhooks robustly

- use same logging formats as processor and verifier
- handle error, 4xx, 5xx status and log them
- move logging inside webhook module, away from core.clj
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(receiver, webhook, utils): replace commons validator</title>
<updated>2026-09-11T09:11:55+00:00</updated>
<author>
<name>eltrac</name>
<email>hi@eltr.ac</email>
</author>
<published>2026-09-11T09:04:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.eltr.ac/weepinbell.git/commit/?id=4bb609fffc45aaf303e00f339cf635c4b529abf0'/>
<id>4bb609fffc45aaf303e00f339cf635c4b529abf0</id>
<content type='text'>
used java.net to create a small validator that passes the test

refactor: rename validator to url, and move other url funcs here
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
used java.net to create a small validator that passes the test

refactor: rename validator to url, and move other url funcs here
</pre>
</div>
</content>
</entry>
</feed>
