homepage: https://github.com/bsima/urbit-airlock
changelog-type: ''
hash: 05768c1271f9b95f16b7f936888ec7cdd5f2a9d05911ddae724eecd9c6049b24
test-bench-deps: {}
maintainer: bsima@me.com
synopsis: Talk to Urbit from Haskell
changelog: ''
basic-deps:
  http-client: -any
  modern-uri: -any
  bytestring: -any
  base: '>=4.7 && <5'
  text: -any
  uuid: -any
  req: -any
  conduit: -any
  conduit-extra: -any
  req-conduit: -any
  aeson: -any
all-versions:
- 0.1.0.0
author: Ben Sima
latest: 0.1.0.0
description-type: markdown
description: |
  # Haskell Urbit API

  This library helps you talk to your Urbit from Haskell, via HTTP.

  The "Urbit Airlock" API is a command-query API that lets you hook into apps
  running on your Urbit. You can submit commands (called "pokes") and subscribe to
  responses.

  See the `test.hs` file for some example usages.

  ## Design

  The Urbit vane `eyre` is responsible for defining the API interface. The path to
  the API is `/~/channel/...`, where we send messages to the global log (called
  `poke`s) which are then dispatched to the appropriate apps. To receive
  responses, we stream messages from a path associated with the app, such as
  `/mailbox/~/~zod/mc`. Internally, I believe Urbit calls these `wire`s.

  `urbit-airlock` handles most of the path, session, and HTTP request stuff
  automatically. See the haddocks for more details.

  This library is built on req, conduit, and aeson, all of which are very stable
  and usable libraries for working with HTTP requests and web data.

  ## TODO

  - fix test suite on travis (OOM when trying to compile urbit)
  - more sophisticated test cases, also use cabal test instead of homegrown thing
  - add an exe that wraps the library with a cli
  - port to ghcjs
  - put some examples in the docs
license-name: BSD-3-Clause

Update from Hackage at 2020-10-23T14:15:58Z
Update from Hackage at 2020-10-23T14:15:58Z
