module Airship.Config ( AirshipConfig , HeaderInclusion (..) , includeTraceHeader , includeQuipHeader , defaultAirshipConfig ) where import Lens.Micro (Lens', lens) -- | An opaque data type encapsulating all Airship-specific configuration options. -- -- We use lenses to modify 'AirshipConfig' values -- though Airship only depends on the -- microlens library, its lenses are compatible with Control.Lens. data AirshipConfig = AirshipConfig { _includeTraceHeader :: HeaderInclusion , _includeQuipHeader :: HeaderInclusion } data HeaderInclusion = IncludeHeader | OmitHeader deriving (Eq, Show) -- | Determines whether or not the @Airship-Trace@ header, which traces the execution of -- a given request in the Airship decision tree, is included in every HTTP response. -- While exposing the decision tree is usually innocuous (and makes for significantly easier -- debugging), you may want to turn it off in certain circumstances. -- -- Defaults to 'IncludeHeader' (enabled). includeTraceHeader :: Lens' AirshipConfig HeaderInclusion includeTraceHeader = lens _includeTraceHeader (\s n -> s { _includeTraceHeader = n }) -- | Determines whether or not the @Airship-Quip@ header, which includes a pithy -- quote in your response headers, is included in every HTTP response. -- -- Defaults to 'IncludeHeader' (enabled). includeQuipHeader :: Lens' AirshipConfig HeaderInclusion includeQuipHeader = lens _includeQuipHeader (\s n -> s { _includeQuipHeader = n }) -- | The default configuration. Use this, in conjunction with the lenses declared -- above, to get and modify an 'AirshipConfig' to pass to 'resourceToWai'. defaultAirshipConfig :: AirshipConfig defaultAirshipConfig = AirshipConfig IncludeHeader IncludeHeader