servant-0.20.3.0: A family of combinators for defining webservices APIs
Safe HaskellNone
LanguageHaskell2010

Servant.API.Range

Synopsis

Documentation

data Range (min :: Nat) (max :: Nat) Source #

A newtype wrapper around Natural that ensures the value is within a given range.

Example:

>>> :{
  let validRange = mkRange 5 :: Maybe (Range 1 10)
  in case validRange of
       Just r  -> "Valid range: " ++ show (unRange r)
       Nothing -> "Invalid range"
:}
"Valid range: 5"
>>> :{
  let invalidRange = mkRange 15 :: Maybe (Range 1 10)
  in case invalidRange of
       Just r  -> "Valid range: " ++ show (unRange r)
       Nothing -> "Invalid range"
:}
"Invalid range"
>>> decode "5" :: Maybe (Range 1 10)
Just (MkRange {unRange = 5})
>>> decode "15" :: Maybe (Range 1 10)
Nothing

Instances

Instances details
(KnownNat min, KnownNat max) => FromJSON (Range min max) Source # 
Instance details

Defined in Servant.API.Range

Methods

parseJSON :: Value -> Parser (Range min max) #

parseJSONList :: Value -> Parser [Range min max] #

omittedField :: Maybe (Range min max) #

ToJSON (Range min max) Source # 
Instance details

Defined in Servant.API.Range

Methods

toJSON :: Range min max -> Value #

toEncoding :: Range min max -> Encoding #

toJSONList :: [Range min max] -> Value #

toEncodingList :: [Range min max] -> Encoding #

omitField :: Range min max -> Bool #

(KnownNat min, KnownNat max) => Bounded (Range min max) Source # 
Instance details

Defined in Servant.API.Range

Methods

minBound :: Range min max #

maxBound :: Range min max #

Generic (Range min max) Source # 
Instance details

Defined in Servant.API.Range

Associated Types

type Rep (Range min max) 
Instance details

Defined in Servant.API.Range

type Rep (Range min max) = D1 ('MetaData "Range" "Servant.API.Range" "servant-0.20.3.0-Eif3EeqtRRgG8R20RsSfUn" 'True) (C1 ('MetaCons "MkRange" 'PrefixI 'True) (S1 ('MetaSel ('Just "unRange") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural)))

Methods

from :: Range min max -> Rep (Range min max) x #

to :: Rep (Range min max) x -> Range min max #

Ix (Range min max) Source # 
Instance details

Defined in Servant.API.Range

Methods

range :: (Range min max, Range min max) -> [Range min max] #

index :: (Range min max, Range min max) -> Range min max -> Int #

unsafeIndex :: (Range min max, Range min max) -> Range min max -> Int #

inRange :: (Range min max, Range min max) -> Range min max -> Bool #

rangeSize :: (Range min max, Range min max) -> Int #

unsafeRangeSize :: (Range min max, Range min max) -> Int #

Show (Range min max) Source # 
Instance details

Defined in Servant.API.Range

Methods

showsPrec :: Int -> Range min max -> ShowS #

show :: Range min max -> String #

showList :: [Range min max] -> ShowS #

Eq (Range min max) Source # 
Instance details

Defined in Servant.API.Range

Methods

(==) :: Range min max -> Range min max -> Bool #

(/=) :: Range min max -> Range min max -> Bool #

Ord (Range min max) Source # 
Instance details

Defined in Servant.API.Range

Methods

compare :: Range min max -> Range min max -> Ordering #

(<) :: Range min max -> Range min max -> Bool #

(<=) :: Range min max -> Range min max -> Bool #

(>) :: Range min max -> Range min max -> Bool #

(>=) :: Range min max -> Range min max -> Bool #

max :: Range min max -> Range min max -> Range min max #

min :: Range min max -> Range min max -> Range min max #

(KnownNat min, KnownNat max) => FromHttpApiData (Range min max) Source # 
Instance details

Defined in Servant.API.Range

Methods

parseUrlPiece :: Text -> Either Text (Range min max) #

parseHeader :: ByteString -> Either Text (Range min max) #

parseQueryParam :: Text -> Either Text (Range min max) #

ToHttpApiData (Range min max) Source # 
Instance details

Defined in Servant.API.Range

Methods

toUrlPiece :: Range min max -> Text #

toEncodedUrlPiece :: Range min max -> Builder #

toHeader :: Range min max -> ByteString #

toQueryParam :: Range min max -> Text #

toEncodedQueryParam :: Range min max -> Builder #

type Rep (Range min max) Source # 
Instance details

Defined in Servant.API.Range

type Rep (Range min max) = D1 ('MetaData "Range" "Servant.API.Range" "servant-0.20.3.0-Eif3EeqtRRgG8R20RsSfUn" 'True) (C1 ('MetaCons "MkRange" 'PrefixI 'True) (S1 ('MetaSel ('Just "unRange") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural)))

unsafeRange :: forall (min :: Nat) (max :: Nat). Natural -> Range min max Source #

mkRange :: forall (min :: Nat) (max :: Nat). (KnownNat min, KnownNat max) => Natural -> Maybe (Range min max) Source #