sprinkles-0.6.0.0: JSON API to HTML website wrapper

Safe HaskellNone
LanguageHaskell2010

Web.Sprinkles.Backends.Spec

Contents

Description

Backend spec types and parser

Synopsis

Defining backends

data BackendSpec Source #

A specification of a backend query.

Constructors

BackendSpec 

Fields

Instances
Show BackendSpec Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Generic BackendSpec Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Associated Types

type Rep BackendSpec :: * -> * #

FromJSON BackendSpec Source #

The JSON shape of a backend spec is:

{
  // type: one of:
  // - "http" (fetch over HTTP)
  // - "https" (fetch over HTTPS)
  // - "file" (load an individual file)
  // - "glob" (resolve a glob and load all matching files)
  // - "dir" (get a directory listing)
  // - "sql" (query an SQL database)
  // - "subprocess" (execute a subprocess and read its stdout)
  // - "post" (get the request body; only for POST requests)
  // - "literal" (return literal value as specified)
  "type": type,

  // fetch mode. One of:
  - "one": Fetch exactly one item, as a scalar
  - "all": Fetch all items, as a list
  - n (numeric value): Fetch up to n items, as a list
  "fetch": fetchMode,

  // ordering. One of:
  // - "arbitrary": do not reorder, use whatever the backend produces
  // - "random": random-shuffle results
  // - "shuffle": same as "random"
  // - "name": order by name
  // - "mtime": order by modification time
  // The ordering can be preceded with a "+" or "-" sign to indicate
  // ascending or descending ordering.
  "order": ordering,

  // The rest of the structure depends on the type.

  // For "http" and "https":
  // The HTTP(S) URI to load from
  "uri": uri,

  // For "file", "glob", "dir":
  // The local file path or glob
  "path": path
}
Instance details

Defined in Web.Sprinkles.Backends.Spec

Serialize BackendSpec Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

HasCachePolicy BackendSpec Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

ExpandableM Text BackendSpec Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Methods

expandM :: Monad m => (Text -> m Text) -> BackendSpec -> m BackendSpec Source #

type Rep BackendSpec Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

backendSpecFromJSON :: Value -> Parser BackendSpec Source #

Read a backend spec from a JSON value.

data BackendType Source #

A type of backend.

Constructors

HttpBackend Text HttpBackendOptions

Fetch data over HTTP(S)

FileBackend Text

Read local files

SqlBackend DSN Text [Text]

Query an SQL database

SqlMultiBackend DSN ResultSetMode [(Text, [Text])]

Query an SQL database, multiple queries

SubprocessBackend Text [Text] MimeType

Run a command in a subprocess

RequestBodyBackend

Read the incoming request body

LiteralBackend Value

Return literal data from the spec itself

Instances
Show BackendType Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Generic BackendType Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Associated Types

type Rep BackendType :: * -> * #

Serialize BackendType Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

HasCachePolicy BackendType Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

ExpandableM Text BackendType Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Methods

expandM :: Monad m => (Text -> m Text) -> BackendType -> m BackendType Source #

type Rep BackendType Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep BackendType = D1 (MetaData "BackendType" "Web.Sprinkles.Backends.Spec" "sprinkles-0.6.0.0-EffGjOzp9OR7TO7a15Us7S" False) ((C1 (MetaCons "HttpBackend" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 HttpBackendOptions)) :+: (C1 (MetaCons "FileBackend" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) :+: C1 (MetaCons "SqlBackend" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 DSN) :*: (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Text]))))) :+: ((C1 (MetaCons "SqlMultiBackend" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 DSN) :*: (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ResultSetMode) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(Text, [Text])]))) :+: C1 (MetaCons "SubprocessBackend" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text) :*: (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Text]) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 MimeType)))) :+: (C1 (MetaCons "RequestBodyBackend" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "LiteralBackend" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Value)))))

data FetchOrderField Source #

By which field should we order results?

Constructors

ArbitraryOrder

Do not impose any ordering at all

RandomOrder

Shuffle randomly

OrderByName

Order by reported name

OrderByMTime

Order by modification time

Instances
Eq FetchOrderField Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Read FetchOrderField Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Show FetchOrderField Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Generic FetchOrderField Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Associated Types

type Rep FetchOrderField :: * -> * #

Serialize FetchOrderField Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Default FetchOrderField Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep FetchOrderField Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep FetchOrderField = D1 (MetaData "FetchOrderField" "Web.Sprinkles.Backends.Spec" "sprinkles-0.6.0.0-EffGjOzp9OR7TO7a15Us7S" False) ((C1 (MetaCons "ArbitraryOrder" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "RandomOrder" PrefixI False) (U1 :: * -> *)) :+: (C1 (MetaCons "OrderByName" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "OrderByMTime" PrefixI False) (U1 :: * -> *)))

data FetchMode Source #

How many items to fetch, and in what shape.

Constructors

FetchOne

Fetch only the first result

FetchAll

Fetch all results

FetchN Int

Fetch at most n results, starting from the top

Instances
Eq FetchMode Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Read FetchMode Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Show FetchMode Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Generic FetchMode Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Associated Types

type Rep FetchMode :: * -> * #

FromJSON FetchMode Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Serialize FetchMode Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep FetchMode Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep FetchMode = D1 (MetaData "FetchMode" "Web.Sprinkles.Backends.Spec" "sprinkles-0.6.0.0-EffGjOzp9OR7TO7a15Us7S" False) (C1 (MetaCons "FetchOne" PrefixI False) (U1 :: * -> *) :+: (C1 (MetaCons "FetchAll" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "FetchN" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))))

data AscDesc Source #

Constructors

Ascending 
Descending 
Instances
Eq AscDesc Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Methods

(==) :: AscDesc -> AscDesc -> Bool #

(/=) :: AscDesc -> AscDesc -> Bool #

Read AscDesc Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Show AscDesc Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Generic AscDesc Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Associated Types

type Rep AscDesc :: * -> * #

Methods

from :: AscDesc -> Rep AscDesc x #

to :: Rep AscDesc x -> AscDesc #

Serialize AscDesc Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Default AscDesc Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Methods

def :: AscDesc #

type Rep AscDesc Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep AscDesc = D1 (MetaData "AscDesc" "Web.Sprinkles.Backends.Spec" "sprinkles-0.6.0.0-EffGjOzp9OR7TO7a15Us7S" False) (C1 (MetaCons "Ascending" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "Descending" PrefixI False) (U1 :: * -> *))

data FetchOrder Source #

How to order results.

Constructors

FetchOrder 

Fields

Instances
Eq FetchOrder Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Read FetchOrder Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Show FetchOrder Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Generic FetchOrder Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Associated Types

type Rep FetchOrder :: * -> * #

FromJSON FetchOrder Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Serialize FetchOrder Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Default FetchOrder Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Methods

def :: FetchOrder #

type Rep FetchOrder Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep FetchOrder = D1 (MetaData "FetchOrder" "Web.Sprinkles.Backends.Spec" "sprinkles-0.6.0.0-EffGjOzp9OR7TO7a15Us7S" False) (C1 (MetaCons "FetchOrder" PrefixI True) (S1 (MetaSel (Just "fetchField") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FetchOrderField) :*: S1 (MetaSel (Just "fetchAscDesc") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 AscDesc)))

data Credentials Source #

Credentials to pass to an external backend data source. Currently stubbed, supporting only anonymous access.

Constructors

AnonymousCredentials 
Instances
Show Credentials Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Generic Credentials Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Associated Types

type Rep Credentials :: * -> * #

FromJSON Credentials Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Serialize Credentials Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep Credentials Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep Credentials = D1 (MetaData "Credentials" "Web.Sprinkles.Backends.Spec" "sprinkles-0.6.0.0-EffGjOzp9OR7TO7a15Us7S" False) (C1 (MetaCons "AnonymousCredentials" PrefixI False) (U1 :: * -> *))

data HttpMethod Source #

Constructors

GET 
POST 
Instances
Show HttpMethod Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Generic HttpMethod Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Associated Types

type Rep HttpMethod :: * -> * #

FromJSON HttpMethod Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Serialize HttpMethod Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep HttpMethod Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep HttpMethod = D1 (MetaData "HttpMethod" "Web.Sprinkles.Backends.Spec" "sprinkles-0.6.0.0-EffGjOzp9OR7TO7a15Us7S" False) (C1 (MetaCons "GET" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "POST" PrefixI False) (U1 :: * -> *))

data HttpBackendOptions Source #

Instances
Show HttpBackendOptions Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Generic HttpBackendOptions Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Associated Types

type Rep HttpBackendOptions :: * -> * #

FromJSON HttpBackendOptions Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Serialize HttpBackendOptions Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

Default HttpBackendOptions Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep HttpBackendOptions Source # 
Instance details

Defined in Web.Sprinkles.Backends.Spec

type Rep HttpBackendOptions = D1 (MetaData "HttpBackendOptions" "Web.Sprinkles.Backends.Spec" "sprinkles-0.6.0.0-EffGjOzp9OR7TO7a15Us7S" False) (C1 (MetaCons "HttpBackendOptions" PrefixI True) (S1 (MetaSel (Just "httpCredentials") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Credentials) :*: (S1 (MetaSel (Just "httpHttpMethods") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 HttpMethod) :*: S1 (MetaSel (Just "httpAcceptedContentTypes") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [MimeType]))))

parserTypes :: [([MimeType], ParserType)] Source #

The parsers we know, by mime types.