wai-middleware-clacks: GNU Terry Pratchett - Add the X-Clacks-Overhead Header to Wai Responses.

[ bsd3, library, wai, web ] [ Propose Tags ] [ Report a vulnerability ]

"You know they'll never really die while the Trunk is alive."

wai-middleware-clacks is a middleware that inserts an arbitrary X-Clacks-Overhead header into every Wai response. From GNU Terry Pratchett:

In Terry Pratchett's Discworld series, the clacks are a series of
semaphore towers loosely based on the concept of the telegraph. Invented
by an artificer named Robert Dearheart, the towers could send messages
"at the speed of light" using standardized codes. Three of these codes
are of particular import:

G: send the message on
N: do not log the message
U: turn the message around at the end of the line and send it back again

When Dearheart's son John died due to an accident while working on a
clacks tower, Dearheart inserted John's name into the overhead of the
clacks with a "GNU" in front of it as a way to memorialize his son forever
(or for at least as long as the clacks are standing.)


Keeping the legacy of Sir Terry Pratchett alive forever. For as long as
his name is still passed along the Clacks, Death can't have him.

Please see the README or module documentation for usage instructions.


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1
Change log CHANGELOG.md
Dependencies base (>=4.3 && <5), base-compat-batteries, bytestring (<1), case-insensitive (<2), http-types (<1), text (<3), wai (<4) [details]
License BSD-3-Clause
Copyright 2020 Pavan Rikhi
Author Pavan Rikhi
Maintainer pavan.rikhi@gmail.com
Revised Revision 1 made by lysergia at 2023-05-08T05:15:32Z
Category Web, Wai
Home page https://github.com/prikhi/wai-middleware-clacks#readme
Bug tracker https://github.com/prikhi/wai-middleware-clacks/issues
Source repo head: git clone https://github.com/prikhi/wai-middleware-clacks
Uploaded by lysergia at 2020-03-13T10:52:53Z
Distributions LTSHaskell:0.1.0.1, NixOS:0.1.0.1, Stackage:0.1.0.1
Downloads 685 total (13 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2020-03-13 [all 1 reports]

Readme for wai-middleware-clacks-0.1.0.1

[back to package description]

wai-middleware-clacks

wai-middleware-clacks Build Status

"You know they'll never really die while the Trunk is alive."

wai-middleware-clacks is a middleware that inserts an arbitrary X-Clacks-Overhead header into every Wai response. From GNU Terry Pratchett:

In Terry Pratchett's Discworld series, the clacks are a series of semaphore towers loosely based on the concept of the telegraph. Invented by an artificer named Robert Dearheart, the towers could send messages "at the speed of light" using standardized codes. Three of these codes are of particular import:

  • G: send the message on
  • N: do not log the message
  • U: turn the message around at the end of the line and send it back again

When Dearheart's son John died due to an accident while working on a clacks tower, Dearheart inserted John's name into the overhead of the clacks with a "GNU" in front of it as a way to memorialize his son forever (or for at least as long as the clacks are standing.)

Keeping the legacy of Sir Terry Pratchett alive forever. For as long as his name is still passed along the Clacks, Death can't have him.

Usage

To use this package to keep the legacy of Terry Pratchett alive, simply pass your wai application to clacks gnuTerryPratchett before passing it to the run function:

import Network.Wai.Handler.Warp (run)
import Network.Wai.Middleware.Clacks (clacks, gnuTerryPratchett)

import MyLib.App (myApp)

main :: IO ()
main = run 8080 $ clacks gnuTerryPratchett myApp

You can use the Clacks type to build a custom configuration for the clacks function, allowing you to pass anything into the header:

import Data.List.NonEmpty (NonEmpty(..))
import Network.Wai (Middleware)
import Network.Wai.Middleware.Clacks (Clacks(..), clacks)

myClacks :: Middleware
myClacks = clacks $ Clacks $ "GNU Ada Lovelace" :| ["GNU Hoban Washburne", "GNU Shephard Book"]

Build

You can build the project with stack:

stack build

For development, you can enable fast builds with file-watching, documentation-building, & test-running:

stack test --haddock --fast --file-watch --pedantic

To build & open the documentation, run

stack haddock --open wai-middleware-clacks

LICENSE

BSD-3