goggles-0.3: Extensible interface to Web APIs

Safe HaskellNone
LanguageHaskell2010

Network.Goggles

Contents

Description

 

Synopsis

Running WebApiM programs

createHandle :: HasCredentials c => Credentials c -> Options c -> IO (Handle c) Source #

Create a Handle with an empty token

evalWebApiIO :: Handle c -> WebApiM c a -> IO a Source #

Evaluate a WebApiM action, given a Handle.

NB : Assumes all exceptions are handled by throwM

Lifting IO programs into WebApiM

liftWebApiIO :: IO a -> WebApiM c a Source #

Lift an `IO a` action into the WebApiM monad, and catch synchronous exceptions, while rethrowing the asynchronous ones to IO

Types

newtype WebApiM c a Source #

The main type of the library. It can easily be re-used in libraries that interface with more than one cloud API provider because its type parameter c lets us be declare distinct behaviours for each.

Constructors

WebApiM 

Fields

Instances

Monad (WebApiM c) Source # 

Methods

(>>=) :: WebApiM c a -> (a -> WebApiM c b) -> WebApiM c b #

(>>) :: WebApiM c a -> WebApiM c b -> WebApiM c b #

return :: a -> WebApiM c a #

fail :: String -> WebApiM c a #

Functor (WebApiM c) Source # 

Methods

fmap :: (a -> b) -> WebApiM c a -> WebApiM c b #

(<$) :: a -> WebApiM c b -> WebApiM c a #

Applicative (WebApiM c) Source # 

Methods

pure :: a -> WebApiM c a #

(<*>) :: WebApiM c (a -> b) -> WebApiM c a -> WebApiM c b #

liftA2 :: (a -> b -> c) -> WebApiM c a -> WebApiM c b -> WebApiM c c #

(*>) :: WebApiM c a -> WebApiM c b -> WebApiM c b #

(<*) :: WebApiM c a -> WebApiM c b -> WebApiM c a #

HasCredentials c => Alternative (WebApiM c) Source # 

Methods

empty :: WebApiM c a #

(<|>) :: WebApiM c a -> WebApiM c a -> WebApiM c a #

some :: WebApiM c a -> WebApiM c [a] #

many :: WebApiM c a -> WebApiM c [a] #

MonadIO (WebApiM c) Source # 

Methods

liftIO :: IO a -> WebApiM c a #

MonadRandom (WebApiM c) Source #

the whole point of this parametrization is to have a distinct MonadHttp for each API provider/DSP

instance HasCredentials c => MonadHttp (Boo c) where handleHttpException = throwM

Methods

getRandomBytes :: ByteArray byteArray => Int -> WebApiM c byteArray #

MonadThrow (WebApiM c) Source # 

Methods

throwM :: Exception e => e -> WebApiM c a #

MonadCatch (WebApiM c) Source # 

Methods

catch :: Exception e => WebApiM c a -> (e -> WebApiM c a) -> WebApiM c a #

MonadReader (Handle c) (WebApiM c) Source # 

Methods

ask :: WebApiM c (Handle c) #

local :: (Handle c -> Handle c) -> WebApiM c a -> WebApiM c a #

reader :: (Handle c -> a) -> WebApiM c a #

Authentication

class HasCredentials c Source #

Associated Types

type Credentials c Source #

class HasToken c where Source #

Minimal complete definition

tokenFetch

Associated Types

type TokenContent c Source #

type Options c Source #

Methods

tokenFetch :: WebApiM c (Token c) Source #

data Token c Source #

An authentication Token with an expiry date

Constructors

Token 

Fields

accessToken :: HasToken c => WebApiM c (TokenContent c) Source #

Extract the token content (needed to authenticate subsequent requests). The token will be valid for at least 60 seconds

data Handle c Source #

A Handle contains all information necessary to communicating with a cloud API provider:

  • Authentication credentials (e.g. username/password)
  • Authentication token (used to authenticate every API call)
  • Options (e.g. GCP authentication scopes)

Constructors

Handle 

Instances

MonadReader (Handle c) (WebApiM c) Source # 

Methods

ask :: WebApiM c (Handle c) #

local :: (Handle c -> Handle c) -> WebApiM c a -> WebApiM c a #

reader :: (Handle c -> a) -> WebApiM c a #

Private key

parseRSAPrivateKey :: MonadThrow m => Text -> m PrivateKey Source #

Parse a chunk of text into an RSA private key. For Google Cloud Platform , this is the private key associated with the user's "service account" (for server-to-server API use)

https://console.cloud.google.com/apis/credentials

Note: do not supply the RSA header and footer or any newlines (they will be inserted by this function).

OAuth2 related

Exceptions

Utilities