@@ -55,6 +55,9 @@ import qualified Data.UUID.Types as UUID
5555
5656import Data.Typeable (Typeable)
5757import Data.Data (Data)
58+import qualified Data.ByteString.Builder as BS
59+import qualified Network.HTTP.Types as H
60+
5861
5962-- $setup
6063-- >>> data BasicAuthToken = BasicAuthToken Text deriving (Show)
@@ -70,6 +73,10 @@ class ToHttpApiData a where
7073 toUrlPiece :: a -> Text
7174 toUrlPiece = toQueryParam
7275
76+ -- | Convert to a URL path piece, making sure to encode any special chars
77+ toEncodedUrlPiece :: a -> BS.Builder
78+ toEncodedUrlPiece = H.encodePathSegmentsRelative . (:[]) . toUrlPiece
79+
7380 -- | Convert to HTTP header value.
7481 toHeader :: a -> ByteString
7582 toHeader = encodeUtf8 . toUrlPiece