@@ -55,6 +55,9 @@ import qualified Data.UUID.Types as UUID
56import Data.Typeable (Typeable)
56import Data.Typeable (Typeable)
57import Data.Data (Data)
57import Data.Data (Data)
58+import qualified Data.ByteString.Builder as BS
59+import qualified Network.HTTP.Types as H
60-- >>> data BasicAuthToken = BasicAuthToken Text deriving (Show)
63-- >>> data BasicAuthToken = BasicAuthToken Text deriving (Show)
@@ -70,6 +73,10 @@ class ToHttpApiData a where
70 toUrlPiece :: a -> Text
73 toUrlPiece :: a -> Text
71 toUrlPiece = toQueryParam
74 toUrlPiece = toQueryParam
76+ -- | Convert to a URL path piece, making sure to encode any special chars
77+ toEncodedUrlPiece :: a -> BS.Builder
78+ toEncodedUrlPiece = H.encodePathSegmentsRelative . (:[]) . toUrlPiece
73 -- | Convert to HTTP header value.
80 -- | Convert to HTTP header value.
74 toHeader :: a -> ByteString
81 toHeader :: a -> ByteString
75 toHeader = encodeUtf8 . toUrlPiece
82 toHeader = encodeUtf8 . toUrlPiece