# ol.busker.middleware

Ring middleware for common HTTP handling patterns.

## wrap-reject-early-data

```clojure
(wrap-reject-early-data handler)
(wrap-reject-early-data handler {:keys [methods on-reject] :or {methods (complement idempotent-methods)}})
```

Middleware that rejects non-idempotent requests arriving via 0-RTT.

0-RTT data can be replayed by attackers. This middleware returns
HTTP 425 Too Early for POST, PUT, DELETE, PATCH requests that
arrive before the TLS handshake completes.

Options:
  :methods - set of methods to reject (default: all except GET, HEAD, OPTIONS, TRACE)
  :on-reject - fn called with request when rejecting (for logging)

Example:
  (wrap-reject-early-data handler)
  (wrap-reject-early-data handler {:on-reject #(log/warn "Rejected early" %)})

[source,window=_blank](https://github.com/outskirtslabs/busker/blob/main/src/main/clojure/ol/busker/middleware.clj#L10-L38)
