smith-client: API client for <https://smith.st/ Smith>.

[ bsd3, library, security ] [ Propose Tags ]

This is an API client library for interacting with Smith.


[Skip to Readme]
Versions [faq] 0.0.1
Change log ChangeLog.md
Dependencies aeson (>=1.0 && <1.5), base (>=4.10 && <5), bytestring (==0.*), directory (==1.*), filepath (==1.*), http-client (==0.5.*), http-client-tls (>=0.2 && <0.4), http-types (==0.*), jose (==0.7.*), oauth2-jwt-bearer (==0.0.*), text (==1.*), transformers (>=0.4 && <0.6), transformers-bifunctors (==0.*) [details]
License BSD-3-Clause
Copyright (c) 2019, HotelKilo
Author Mark Hibberd
Maintainer mth@smith.st
Category Security
Home page https://github.com/smith-security/smith-client
Bug tracker https://github.com/smith-security/smith-client/issues
Source repo head: git clone git@github.com:smith-security/smith-client.git
Uploaded by MarkHibberd at Fri Feb 8 08:29:19 UTC 2019
Distributions NixOS:0.0.1
Downloads 126 total (50 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2019-02-08 [all 1 reports]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for smith-client-0.0.1

[back to package description]

smith-client

This is a client-library for the Smith API.

The goal is to provide a convenient Haskell API for working with the API.

Configuration

The default 'configure' function will source credentials configuration as follows:

  • It will check for an environment provided API key in '$SMITH_JWK'.
  • It will fall-back to looking for '$SMITH_HOME/credentials.json' if '$SMITH_HOME' is set.
  • It will fall-back to looking for '$HOME/.smith/credentials.json'.

The default 'configure' function will source endpoint configuration as follows:

  • It will check for an environment provided endpoint in '$SMITH_ENDPOINT'.
  • It will fall-back to the public production endpoint 'https://api.smith.st'.

Stability

This library is new, and should have the disclaimers that normally comes with that. It is expected that most people will interact with smith-cli rather than directly with this library, however if you do use this library directly, please note that whilst compatibility won't be broken unless necessary there are a few parts of the library (for example error handling) that will be evolved and polished as an official release version of the API is available.

Example

A crude example:

import qualified Data.Text.IO as Text

import qualified Smith.Client as Smith
import           Smith.Client.Data.User
import           Smith.Client.Error (SmithError (..))

example :: IO (Either SmithError UserInfo)
example =
  Smith.configure >>= \c -> case c of
    Left err ->
       Text.putStrLn . Smith.renderSmithConfigureError $ err
    Right smith ->
      Smith.runRequest smith Smith.userinfo

Development

The simplest way to develop this library is working against the Pact stub server (depends on docker).

# Configures and starts a docker container with API stubs.
/bin/ghci-stub