{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} module Cachix.Types.ContentTypes ( XNixNar, XNixNarInfo, XNixCacheInfo, ) where import qualified Cachix.Types.ByteStringStreaming as ByteStringStreaming import qualified Cachix.Types.NarInfo as NarInfo import qualified Cachix.Types.NixCacheInfo as NixCacheInfo import qualified Data.ByteString.Lazy as BSL import Data.Coerce (coerce) import qualified Network.HTTP.Media as M import Protolude import Servant.API data XNixNar deriving (Typeable) data XNixNarInfo deriving (Typeable) data XNixCacheInfo deriving (Typeable) instance Accept XNixCacheInfo where contentType :: Proxy XNixCacheInfo -> MediaType contentType _ = "application" ByteString -> ByteString -> MediaType M.// "octet-stream" instance Accept XNixNarInfo where contentType :: Proxy XNixNarInfo -> MediaType contentType _ = "text" ByteString -> ByteString -> MediaType M.// "x-nix-narinfo" instance Accept XNixNar where contentType :: Proxy XNixNar -> MediaType contentType _ = "application" ByteString -> ByteString -> MediaType M.// "octet-stream" instance MimeUnrender XNixCacheInfo NixCacheInfo.NixCacheInfo where mimeUnrender :: Proxy XNixCacheInfo -> ByteString -> Either String NixCacheInfo mimeUnrender _ _ = String -> Either String NixCacheInfo forall a b. a -> Either a b Left "TODO" instance MimeUnrender XNixNarInfo NarInfo.CachixNarInfo where mimeUnrender :: Proxy XNixNarInfo -> ByteString -> Either String CachixNarInfo mimeUnrender _ _ = String -> Either String CachixNarInfo forall a b. a -> Either a b Left "TODO" instance MimeRender XNixNar ByteStringStreaming.ByteStringStreaming where mimeRender :: Proxy XNixNar -> ByteStringStreaming -> ByteString mimeRender _ = ByteString -> ByteString BSL.fromStrict (ByteString -> ByteString) -> (ByteStringStreaming -> ByteString) -> ByteStringStreaming -> ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteStringStreaming -> ByteString forall a b. Coercible a b => a -> b coerce instance MimeUnrender XNixNar ByteStringStreaming.ByteStringStreaming where mimeUnrender :: Proxy XNixNar -> ByteString -> Either String ByteStringStreaming mimeUnrender _ = ByteStringStreaming -> Either String ByteStringStreaming forall a b. b -> Either a b Right (ByteStringStreaming -> Either String ByteStringStreaming) -> (ByteString -> ByteStringStreaming) -> ByteString -> Either String ByteStringStreaming forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteString -> ByteStringStreaming forall a b. Coercible a b => a -> b coerce (ByteString -> ByteStringStreaming) -> (ByteString -> ByteString) -> ByteString -> ByteStringStreaming forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteString -> ByteString BSL.toStrict instance MimeUnrender XNixNar ByteStringStreaming.LazyByteStringStreaming where mimeUnrender :: Proxy XNixNar -> ByteString -> Either String LazyByteStringStreaming mimeUnrender _ = LazyByteStringStreaming -> Either String LazyByteStringStreaming forall a b. b -> Either a b Right (LazyByteStringStreaming -> Either String LazyByteStringStreaming) -> (ByteString -> LazyByteStringStreaming) -> ByteString -> Either String LazyByteStringStreaming forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteString -> LazyByteStringStreaming forall a b. Coercible a b => a -> b coerce instance MimeRender XNixNar ByteStringStreaming.LazyByteStringStreaming where mimeRender :: Proxy XNixNar -> LazyByteStringStreaming -> ByteString mimeRender _ = LazyByteStringStreaming -> ByteString forall a b. Coercible a b => a -> b coerce