urlpath-7.0.0: Painfully simple URL deployment.

Copyright(c) Athan L. Clark
LicenseMIT
MaintainerAthan L. Clark <athan.clark@gmail.com>
Stabilityexperimental
PortabilityGHC
Safe HaskellNone
LanguageHaskell2010

Data.Url

Contents

Description

This library helps us distinguish how we present URLs - we might show them relatively, absolutely (with the URI authority - scheme, port, hostname, etc.), or grounded - where the path begins with /.

We leverage Chris Done's path library to distinguish relative vs. grounded paths at compile time, and provide some additional features like a file extension and query parameters in path-extra.

Synopsis

Classes

class MonadUrl base type' m where Source #

Turns a Path or Location into a String, where the rendering behavior (relative, grounded and absolute) is encoded in the monad you use, much like LoggingT and NoLoggingT from monad-logger.

Minimal complete definition

pathUrl, locUrl

Methods

pathUrl :: Path base type' -> m URI Source #

locUrl :: Location base type' -> m URI Source #

Instances

MonadUrl b t IO Source # 

Methods

pathUrl :: Path b t -> IO URI Source #

locUrl :: Location b t -> IO URI Source #

(MonadUrl b t m, Monad m) => MonadUrl b t (NoLoggingT m) Source # 
(MonadUrl b t m, Monad m) => MonadUrl b t (LoggingT m) Source # 

Methods

pathUrl :: Path b t -> LoggingT m URI Source #

locUrl :: Location b t -> LoggingT m URI Source #

(MonadUrl b t m, Monad m) => MonadUrl b t (ResourceT m) Source # 
(MonadUrl b t m, Monad m) => MonadUrl b t (ListT m) Source # 

Methods

pathUrl :: Path b t -> ListT m URI Source #

locUrl :: Location b t -> ListT m URI Source #

(MonadUrl b t m, Monad m) => MonadUrl b t (MaybeT m) Source # 

Methods

pathUrl :: Path b t -> MaybeT m URI Source #

locUrl :: Location b t -> MaybeT m URI Source #

Applicative m => MonadUrl Abs File (AbsoluteUrlT m) Source # 
Applicative m => MonadUrl Abs File (GroundedUrlT m) Source # 
Applicative m => MonadUrl Abs Dir (GroundedUrlT m) Source # 
Applicative m => MonadUrl Rel File (RelativeUrlT m) Source # 
Applicative m => MonadUrl Rel Dir (RelativeUrlT m) Source # 
(MonadUrl b t m, Monad m) => MonadUrl b t (ExceptT e m) Source # 

Methods

pathUrl :: Path b t -> ExceptT e m URI Source #

locUrl :: Location b t -> ExceptT e m URI Source #

(MonadUrl b t m, Monad m, Error e) => MonadUrl b t (ErrorT e m) Source # 

Methods

pathUrl :: Path b t -> ErrorT e m URI Source #

locUrl :: Location b t -> ErrorT e m URI Source #

(MonadUrl b t m, Monad m) => MonadUrl b t (StateT s m) Source # 

Methods

pathUrl :: Path b t -> StateT s m URI Source #

locUrl :: Location b t -> StateT s m URI Source #

(MonadUrl b t m, Monad m, Monoid w) => MonadUrl b t (WriterT w m) Source # 

Methods

pathUrl :: Path b t -> WriterT w m URI Source #

locUrl :: Location b t -> WriterT w m URI Source #

(MonadUrl b t m, Monad m) => MonadUrl b t (IdentityT * m) Source # 
(MonadUrl b t m, Monad m) => MonadUrl b t (ContT * r m) Source # 

Methods

pathUrl :: Path b t -> ContT * r m URI Source #

locUrl :: Location b t -> ContT * r m URI Source #

(MonadUrl b t m, Monad m) => MonadUrl b t (ReaderT * r m) Source # 

Methods

pathUrl :: Path b t -> ReaderT * r m URI Source #

locUrl :: Location b t -> ReaderT * r m URI Source #

(MonadUrl b t m, Monad m, Monoid w) => MonadUrl b t (RWST r w s m) Source # 

Methods

pathUrl :: Path b t -> RWST r w s m URI Source #

locUrl :: Location b t -> RWST r w s m URI Source #

Types

Relative Urls

newtype RelativeUrlT m a Source #

Constructors

RelativeUrlT 

Fields

Instances

MMonad RelativeUrlT Source # 

Methods

embed :: Monad n => (forall a. m a -> RelativeUrlT n a) -> RelativeUrlT m b -> RelativeUrlT n b #

MonadTrans RelativeUrlT Source # 

Methods

lift :: Monad m => m a -> RelativeUrlT m a #

MonadTransControl RelativeUrlT Source # 

Associated Types

type StT (RelativeUrlT :: (* -> *) -> * -> *) a :: * #

Methods

liftWith :: Monad m => (Run RelativeUrlT -> m a) -> RelativeUrlT m a #

restoreT :: Monad m => m (StT RelativeUrlT a) -> RelativeUrlT m a #

MonadTransControl RelativeUrlT Identity Source # 

Methods

liftWith :: Monad m => (Run RelativeUrlT Identity -> m a) -> RelativeUrlT m a #

restoreT :: Monad m => m (Identity a) -> RelativeUrlT m a #

MonadRWS r w s m => MonadRWS r w s (RelativeUrlT m) Source # 
Applicative m => MonadUrl Rel File (RelativeUrlT m) Source # 
Applicative m => MonadUrl Rel Dir (RelativeUrlT m) Source # 
MonadBaseControl b m => MonadBaseControl b (RelativeUrlT m) Source # 

Associated Types

type StM (RelativeUrlT m :: * -> *) a :: * #

Methods

liftBaseWith :: (RunInBase (RelativeUrlT m) b -> b a) -> RelativeUrlT m a #

restoreM :: StM (RelativeUrlT m) a -> RelativeUrlT m a #

MonadBase b m => MonadBase b (RelativeUrlT m) Source # 

Methods

liftBase :: b α -> RelativeUrlT m α #

MonadError e m => MonadError e (RelativeUrlT m) Source # 

Methods

throwError :: e -> RelativeUrlT m a #

catchError :: RelativeUrlT m a -> (e -> RelativeUrlT m a) -> RelativeUrlT m a #

MonadReader r m => MonadReader r (RelativeUrlT m) Source # 

Methods

ask :: RelativeUrlT m r #

local :: (r -> r) -> RelativeUrlT m a -> RelativeUrlT m a #

reader :: (r -> a) -> RelativeUrlT m a #

MonadState s m => MonadState s (RelativeUrlT m) Source # 

Methods

get :: RelativeUrlT m s #

put :: s -> RelativeUrlT m () #

state :: (s -> (a, s)) -> RelativeUrlT m a #

MonadWriter w m => MonadWriter w (RelativeUrlT m) Source # 

Methods

writer :: (a, w) -> RelativeUrlT m a #

tell :: w -> RelativeUrlT m () #

listen :: RelativeUrlT m a -> RelativeUrlT m (a, w) #

pass :: RelativeUrlT m (a, w -> w) -> RelativeUrlT m a #

MonadBaseControl b m stM => MonadBaseControl b (RelativeUrlT m) (Compose * * stM Identity) Source # 

Methods

liftBaseWith :: (RunInBase (RelativeUrlT m) b (Compose * * stM Identity) -> b a) -> RelativeUrlT m a #

restoreM :: Compose * * stM Identity a -> RelativeUrlT m a #

Monad m => Monad (RelativeUrlT m) Source # 

Methods

(>>=) :: RelativeUrlT m a -> (a -> RelativeUrlT m b) -> RelativeUrlT m b #

(>>) :: RelativeUrlT m a -> RelativeUrlT m b -> RelativeUrlT m b #

return :: a -> RelativeUrlT m a #

fail :: String -> RelativeUrlT m a #

Functor m => Functor (RelativeUrlT m) Source # 

Methods

fmap :: (a -> b) -> RelativeUrlT m a -> RelativeUrlT m b #

(<$) :: a -> RelativeUrlT m b -> RelativeUrlT m a #

MonadFix m => MonadFix (RelativeUrlT m) Source # 

Methods

mfix :: (a -> RelativeUrlT m a) -> RelativeUrlT m a #

Applicative m => Applicative (RelativeUrlT m) Source # 

Methods

pure :: a -> RelativeUrlT m a #

(<*>) :: RelativeUrlT m (a -> b) -> RelativeUrlT m a -> RelativeUrlT m b #

(*>) :: RelativeUrlT m a -> RelativeUrlT m b -> RelativeUrlT m b #

(<*) :: RelativeUrlT m a -> RelativeUrlT m b -> RelativeUrlT m a #

Alternative m => Alternative (RelativeUrlT m) Source # 

Methods

empty :: RelativeUrlT m a #

(<|>) :: RelativeUrlT m a -> RelativeUrlT m a -> RelativeUrlT m a #

some :: RelativeUrlT m a -> RelativeUrlT m [a] #

many :: RelativeUrlT m a -> RelativeUrlT m [a] #

MonadPlus m => MonadPlus (RelativeUrlT m) Source # 

Methods

mzero :: RelativeUrlT m a #

mplus :: RelativeUrlT m a -> RelativeUrlT m a -> RelativeUrlT m a #

MonadIO m => MonadIO (RelativeUrlT m) Source # 

Methods

liftIO :: IO a -> RelativeUrlT m a #

MonadThrow m => MonadThrow (RelativeUrlT m) Source # 

Methods

throwM :: Exception e => e -> RelativeUrlT m a #

MonadCatch m => MonadCatch (RelativeUrlT m) Source # 

Methods

catch :: Exception e => RelativeUrlT m a -> (e -> RelativeUrlT m a) -> RelativeUrlT m a #

MonadMask m => MonadMask (RelativeUrlT m) Source # 

Methods

mask :: ((forall a. RelativeUrlT m a -> RelativeUrlT m a) -> RelativeUrlT m b) -> RelativeUrlT m b #

uninterruptibleMask :: ((forall a. RelativeUrlT m a -> RelativeUrlT m a) -> RelativeUrlT m b) -> RelativeUrlT m b #

MonadLogger m => MonadLogger (RelativeUrlT m) Source # 

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> RelativeUrlT m () #

MonadCont m => MonadCont (RelativeUrlT m) Source # 

Methods

callCC :: ((a -> RelativeUrlT m b) -> RelativeUrlT m a) -> RelativeUrlT m a #

(MonadResource m, MonadBase IO m) => MonadResource (RelativeUrlT m) Source # 
MFunctor * RelativeUrlT Source # 

Methods

hoist :: Monad m => (forall a. m a -> n a) -> t m b -> t n b #

Eq (m a) => Eq (RelativeUrlT m a) Source # 

Methods

(==) :: RelativeUrlT m a -> RelativeUrlT m a -> Bool #

(/=) :: RelativeUrlT m a -> RelativeUrlT m a -> Bool #

Ord (m a) => Ord (RelativeUrlT m a) Source # 
Show (m a) => Show (RelativeUrlT m a) Source # 
type StT RelativeUrlT a Source # 
type StT RelativeUrlT a = a
type StM (RelativeUrlT m) a Source # 

Grounded Urls

newtype GroundedUrlT m a Source #

Constructors

GroundedUrlT 

Fields

Instances

MMonad GroundedUrlT Source # 

Methods

embed :: Monad n => (forall a. m a -> GroundedUrlT n a) -> GroundedUrlT m b -> GroundedUrlT n b #

MonadTrans GroundedUrlT Source # 

Methods

lift :: Monad m => m a -> GroundedUrlT m a #

MonadTransControl GroundedUrlT Source # 

Associated Types

type StT (GroundedUrlT :: (* -> *) -> * -> *) a :: * #

Methods

liftWith :: Monad m => (Run GroundedUrlT -> m a) -> GroundedUrlT m a #

restoreT :: Monad m => m (StT GroundedUrlT a) -> GroundedUrlT m a #

MonadTransControl GroundedUrlT Identity Source # 

Methods

liftWith :: Monad m => (Run GroundedUrlT Identity -> m a) -> GroundedUrlT m a #

restoreT :: Monad m => m (Identity a) -> GroundedUrlT m a #

MonadRWS r w s m => MonadRWS r w s (GroundedUrlT m) Source # 
Applicative m => MonadUrl Abs File (GroundedUrlT m) Source # 
Applicative m => MonadUrl Abs Dir (GroundedUrlT m) Source # 
MonadBaseControl b m => MonadBaseControl b (GroundedUrlT m) Source # 

Associated Types

type StM (GroundedUrlT m :: * -> *) a :: * #

Methods

liftBaseWith :: (RunInBase (GroundedUrlT m) b -> b a) -> GroundedUrlT m a #

restoreM :: StM (GroundedUrlT m) a -> GroundedUrlT m a #

MonadBase b m => MonadBase b (GroundedUrlT m) Source # 

Methods

liftBase :: b α -> GroundedUrlT m α #

MonadError e m => MonadError e (GroundedUrlT m) Source # 

Methods

throwError :: e -> GroundedUrlT m a #

catchError :: GroundedUrlT m a -> (e -> GroundedUrlT m a) -> GroundedUrlT m a #

MonadReader r m => MonadReader r (GroundedUrlT m) Source # 

Methods

ask :: GroundedUrlT m r #

local :: (r -> r) -> GroundedUrlT m a -> GroundedUrlT m a #

reader :: (r -> a) -> GroundedUrlT m a #

MonadState s m => MonadState s (GroundedUrlT m) Source # 

Methods

get :: GroundedUrlT m s #

put :: s -> GroundedUrlT m () #

state :: (s -> (a, s)) -> GroundedUrlT m a #

MonadWriter w m => MonadWriter w (GroundedUrlT m) Source # 

Methods

writer :: (a, w) -> GroundedUrlT m a #

tell :: w -> GroundedUrlT m () #

listen :: GroundedUrlT m a -> GroundedUrlT m (a, w) #

pass :: GroundedUrlT m (a, w -> w) -> GroundedUrlT m a #

MonadBaseControl b m stM => MonadBaseControl b (GroundedUrlT m) (Compose * * stM Identity) Source # 

Methods

liftBaseWith :: (RunInBase (GroundedUrlT m) b (Compose * * stM Identity) -> b a) -> GroundedUrlT m a #

restoreM :: Compose * * stM Identity a -> GroundedUrlT m a #

Monad m => Monad (GroundedUrlT m) Source # 

Methods

(>>=) :: GroundedUrlT m a -> (a -> GroundedUrlT m b) -> GroundedUrlT m b #

(>>) :: GroundedUrlT m a -> GroundedUrlT m b -> GroundedUrlT m b #

return :: a -> GroundedUrlT m a #

fail :: String -> GroundedUrlT m a #

Functor m => Functor (GroundedUrlT m) Source # 

Methods

fmap :: (a -> b) -> GroundedUrlT m a -> GroundedUrlT m b #

(<$) :: a -> GroundedUrlT m b -> GroundedUrlT m a #

MonadFix m => MonadFix (GroundedUrlT m) Source # 

Methods

mfix :: (a -> GroundedUrlT m a) -> GroundedUrlT m a #

Applicative m => Applicative (GroundedUrlT m) Source # 

Methods

pure :: a -> GroundedUrlT m a #

(<*>) :: GroundedUrlT m (a -> b) -> GroundedUrlT m a -> GroundedUrlT m b #

(*>) :: GroundedUrlT m a -> GroundedUrlT m b -> GroundedUrlT m b #

(<*) :: GroundedUrlT m a -> GroundedUrlT m b -> GroundedUrlT m a #

Alternative m => Alternative (GroundedUrlT m) Source # 

Methods

empty :: GroundedUrlT m a #

(<|>) :: GroundedUrlT m a -> GroundedUrlT m a -> GroundedUrlT m a #

some :: GroundedUrlT m a -> GroundedUrlT m [a] #

many :: GroundedUrlT m a -> GroundedUrlT m [a] #

MonadPlus m => MonadPlus (GroundedUrlT m) Source # 

Methods

mzero :: GroundedUrlT m a #

mplus :: GroundedUrlT m a -> GroundedUrlT m a -> GroundedUrlT m a #

MonadIO m => MonadIO (GroundedUrlT m) Source # 

Methods

liftIO :: IO a -> GroundedUrlT m a #

MonadThrow m => MonadThrow (GroundedUrlT m) Source # 

Methods

throwM :: Exception e => e -> GroundedUrlT m a #

MonadCatch m => MonadCatch (GroundedUrlT m) Source # 

Methods

catch :: Exception e => GroundedUrlT m a -> (e -> GroundedUrlT m a) -> GroundedUrlT m a #

MonadMask m => MonadMask (GroundedUrlT m) Source # 

Methods

mask :: ((forall a. GroundedUrlT m a -> GroundedUrlT m a) -> GroundedUrlT m b) -> GroundedUrlT m b #

uninterruptibleMask :: ((forall a. GroundedUrlT m a -> GroundedUrlT m a) -> GroundedUrlT m b) -> GroundedUrlT m b #

MonadLogger m => MonadLogger (GroundedUrlT m) Source # 

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> GroundedUrlT m () #

MonadCont m => MonadCont (GroundedUrlT m) Source # 

Methods

callCC :: ((a -> GroundedUrlT m b) -> GroundedUrlT m a) -> GroundedUrlT m a #

(MonadResource m, MonadBase IO m) => MonadResource (GroundedUrlT m) Source # 
MFunctor * GroundedUrlT Source # 

Methods

hoist :: Monad m => (forall a. m a -> n a) -> t m b -> t n b #

Eq (m a) => Eq (GroundedUrlT m a) Source # 

Methods

(==) :: GroundedUrlT m a -> GroundedUrlT m a -> Bool #

(/=) :: GroundedUrlT m a -> GroundedUrlT m a -> Bool #

Ord (m a) => Ord (GroundedUrlT m a) Source # 
Show (m a) => Show (GroundedUrlT m a) Source # 
type StT GroundedUrlT a Source # 
type StT GroundedUrlT a = a
type StM (GroundedUrlT m) a Source # 

Absolute Urls

newtype AbsoluteUrlT m a Source #

Constructors

AbsoluteUrlT 

Fields

Instances

MMonad AbsoluteUrlT Source # 

Methods

embed :: Monad n => (forall a. m a -> AbsoluteUrlT n a) -> AbsoluteUrlT m b -> AbsoluteUrlT n b #

MonadTrans AbsoluteUrlT Source # 

Methods

lift :: Monad m => m a -> AbsoluteUrlT m a #

MonadTransControl AbsoluteUrlT Source # 

Associated Types

type StT (AbsoluteUrlT :: (* -> *) -> * -> *) a :: * #

Methods

liftWith :: Monad m => (Run AbsoluteUrlT -> m a) -> AbsoluteUrlT m a #

restoreT :: Monad m => m (StT AbsoluteUrlT a) -> AbsoluteUrlT m a #

MonadTransControl AbsoluteUrlT Identity Source # 

Methods

liftWith :: Monad m => (Run AbsoluteUrlT Identity -> m a) -> AbsoluteUrlT m a #

restoreT :: Monad m => m (Identity a) -> AbsoluteUrlT m a #

MonadRWS r w s m => MonadRWS r w s (AbsoluteUrlT m) Source # 
Applicative m => MonadUrl Abs File (AbsoluteUrlT m) Source # 
MonadBaseControl b m => MonadBaseControl b (AbsoluteUrlT m) Source # 

Associated Types

type StM (AbsoluteUrlT m :: * -> *) a :: * #

Methods

liftBaseWith :: (RunInBase (AbsoluteUrlT m) b -> b a) -> AbsoluteUrlT m a #

restoreM :: StM (AbsoluteUrlT m) a -> AbsoluteUrlT m a #

MonadBase b m => MonadBase b (AbsoluteUrlT m) Source # 

Methods

liftBase :: b α -> AbsoluteUrlT m α #

MonadError e m => MonadError e (AbsoluteUrlT m) Source # 

Methods

throwError :: e -> AbsoluteUrlT m a #

catchError :: AbsoluteUrlT m a -> (e -> AbsoluteUrlT m a) -> AbsoluteUrlT m a #

MonadReader r m => MonadReader r (AbsoluteUrlT m) Source # 

Methods

ask :: AbsoluteUrlT m r #

local :: (r -> r) -> AbsoluteUrlT m a -> AbsoluteUrlT m a #

reader :: (r -> a) -> AbsoluteUrlT m a #

MonadState s m => MonadState s (AbsoluteUrlT m) Source # 

Methods

get :: AbsoluteUrlT m s #

put :: s -> AbsoluteUrlT m () #

state :: (s -> (a, s)) -> AbsoluteUrlT m a #

MonadWriter w m => MonadWriter w (AbsoluteUrlT m) Source # 

Methods

writer :: (a, w) -> AbsoluteUrlT m a #

tell :: w -> AbsoluteUrlT m () #

listen :: AbsoluteUrlT m a -> AbsoluteUrlT m (a, w) #

pass :: AbsoluteUrlT m (a, w -> w) -> AbsoluteUrlT m a #

MonadBaseControl b m stM => MonadBaseControl b (AbsoluteUrlT m) (Compose * * stM Identity) Source # 

Methods

liftBaseWith :: (RunInBase (AbsoluteUrlT m) b (Compose * * stM Identity) -> b a) -> AbsoluteUrlT m a #

restoreM :: Compose * * stM Identity a -> AbsoluteUrlT m a #

Monad m => Monad (AbsoluteUrlT m) Source # 

Methods

(>>=) :: AbsoluteUrlT m a -> (a -> AbsoluteUrlT m b) -> AbsoluteUrlT m b #

(>>) :: AbsoluteUrlT m a -> AbsoluteUrlT m b -> AbsoluteUrlT m b #

return :: a -> AbsoluteUrlT m a #

fail :: String -> AbsoluteUrlT m a #

Functor m => Functor (AbsoluteUrlT m) Source # 

Methods

fmap :: (a -> b) -> AbsoluteUrlT m a -> AbsoluteUrlT m b #

(<$) :: a -> AbsoluteUrlT m b -> AbsoluteUrlT m a #

Applicative m => Applicative (AbsoluteUrlT m) Source # 

Methods

pure :: a -> AbsoluteUrlT m a #

(<*>) :: AbsoluteUrlT m (a -> b) -> AbsoluteUrlT m a -> AbsoluteUrlT m b #

(*>) :: AbsoluteUrlT m a -> AbsoluteUrlT m b -> AbsoluteUrlT m b #

(<*) :: AbsoluteUrlT m a -> AbsoluteUrlT m b -> AbsoluteUrlT m a #

Alternative m => Alternative (AbsoluteUrlT m) Source # 

Methods

empty :: AbsoluteUrlT m a #

(<|>) :: AbsoluteUrlT m a -> AbsoluteUrlT m a -> AbsoluteUrlT m a #

some :: AbsoluteUrlT m a -> AbsoluteUrlT m [a] #

many :: AbsoluteUrlT m a -> AbsoluteUrlT m [a] #

MonadIO m => MonadIO (AbsoluteUrlT m) Source # 

Methods

liftIO :: IO a -> AbsoluteUrlT m a #

MonadThrow m => MonadThrow (AbsoluteUrlT m) Source # 

Methods

throwM :: Exception e => e -> AbsoluteUrlT m a #

MonadCatch m => MonadCatch (AbsoluteUrlT m) Source # 

Methods

catch :: Exception e => AbsoluteUrlT m a -> (e -> AbsoluteUrlT m a) -> AbsoluteUrlT m a #

MonadMask m => MonadMask (AbsoluteUrlT m) Source # 

Methods

mask :: ((forall a. AbsoluteUrlT m a -> AbsoluteUrlT m a) -> AbsoluteUrlT m b) -> AbsoluteUrlT m b #

uninterruptibleMask :: ((forall a. AbsoluteUrlT m a -> AbsoluteUrlT m a) -> AbsoluteUrlT m b) -> AbsoluteUrlT m b #

MonadLogger m => MonadLogger (AbsoluteUrlT m) Source # 

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> AbsoluteUrlT m () #

MonadCont m => MonadCont (AbsoluteUrlT m) Source # 

Methods

callCC :: ((a -> AbsoluteUrlT m b) -> AbsoluteUrlT m a) -> AbsoluteUrlT m a #

MonadResource m => MonadResource (AbsoluteUrlT m) Source # 
MFunctor * AbsoluteUrlT Source # 

Methods

hoist :: Monad m => (forall a. m a -> n a) -> t m b -> t n b #

type StT AbsoluteUrlT a Source # 
type StT AbsoluteUrlT a = a
type StM (AbsoluteUrlT m) a Source # 

mkUriPathEmpty :: Path base type' -> URI Source #

mkUriLocEmpty :: Location base type' -> URI Source #