The DigitalOcean package

[Tags:agpl, library, test]

[Skip to Readme]

Properties

Versions 0.1.0.0, 0.1.1.0
Dependencies aeson, base (==4.7.*), bytestring, containers, exceptions, lens, mtl, text (>=1.2.0.3 && <1.3), transformers, unordered-containers, vector, wreq [details]
License AGPL-3
Author Laurie Clark-Michalek
Maintainer lclarkmichalek@gmail.com
Stability Unknown
Category Network
Uploaded Sat Dec 27 14:01:24 UTC 2014 by lclarkmichalek
Distributions NixOS:0.1.1.0
Downloads 522 total (8 in the last 30 days)
Votes
0 []
Status Docs available [build log]
Last success reported on 2014-12-27 [all 1 reports]

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for DigitalOcean

Readme for DigitalOcean-0.1.1.0

DigitalOcean

A Haskell Digital Ocean API.

Exposes a lens based interface onto the Digital Ocean API. Fairly feature complete.

Error Handling & IO Monads

Instead of enforcing a monad to return, all functions that do IO and stuff have a type something along the lines of:

getSSHKeys :: (Error e, MonadError e m, MonadIO m) => Config -> m [SSHKey]

Translated to human, this just means that the monad m that is returned can

  1. encapsulate IO, and 2) represent an error, of type e. This is useful if you want to use ExceptT or something similarly fun to represent your errors. However, for simple use, you will be relived to hear that m may be the plain old IO monad, which will represent its errors by throwing IOException exceptions.

This means, despite the confusing type signature, we may write things such as:

main = do
  auth <- fmap head getArgs -- Get the auth from the cmd line
  keys <- getSSHKeys . Config . pack $ auth -- Get the ssh keys
  putStrLn . show $ keys -- And display them

See the ./examples directory for further usage

TODO:

  • Pagination
  • Tests
  • HTTP session reuse