module Network.IPFS.Peer.Types (Peer (..)) where import RIO import Control.Lens import Data.Aeson import Data.Swagger import Servant import qualified Network.IPFS.Internal.UTF8 as UTF8 newtype Peer = Peer { Peer -> Text peer :: Text } deriving ( Peer -> Peer -> Bool (Peer -> Peer -> Bool) -> (Peer -> Peer -> Bool) -> Eq Peer forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Peer -> Peer -> Bool $c/= :: Peer -> Peer -> Bool == :: Peer -> Peer -> Bool $c== :: Peer -> Peer -> Bool Eq , Int -> Peer -> ShowS [Peer] -> ShowS Peer -> String (Int -> Peer -> ShowS) -> (Peer -> String) -> ([Peer] -> ShowS) -> Show Peer forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Peer] -> ShowS $cshowList :: [Peer] -> ShowS show :: Peer -> String $cshow :: Peer -> String showsPrec :: Int -> Peer -> ShowS $cshowsPrec :: Int -> Peer -> ShowS Show ) deriving newtype ( Peer -> Text Peer -> Utf8Builder (Peer -> Utf8Builder) -> (Peer -> Text) -> Display Peer forall a. (a -> Utf8Builder) -> (a -> Text) -> Display a textDisplay :: Peer -> Text $ctextDisplay :: Peer -> Text display :: Peer -> Utf8Builder $cdisplay :: Peer -> Utf8Builder Display , String -> Peer (String -> Peer) -> IsString Peer forall a. (String -> a) -> IsString a fromString :: String -> Peer $cfromString :: String -> Peer IsString , Value -> Parser [Peer] Value -> Parser Peer (Value -> Parser Peer) -> (Value -> Parser [Peer]) -> FromJSON Peer forall a. (Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a parseJSONList :: Value -> Parser [Peer] $cparseJSONList :: Value -> Parser [Peer] parseJSON :: Value -> Parser Peer $cparseJSON :: Value -> Parser Peer FromJSON ) instance ToJSON Peer where toJSON :: Peer -> Value toJSON = Text -> Value String (Text -> Value) -> (Peer -> Text) -> Peer -> Value forall b c a. (b -> c) -> (a -> b) -> a -> c . Peer -> Text peer instance ToSchema Peer where declareNamedSchema :: Proxy Peer -> Declare (Definitions Schema) NamedSchema declareNamedSchema Proxy Peer _ = NamedSchema -> Declare (Definitions Schema) NamedSchema forall (m :: * -> *) a. Monad m => a -> m a return (NamedSchema -> Declare (Definitions Schema) NamedSchema) -> NamedSchema -> Declare (Definitions Schema) NamedSchema forall a b. (a -> b) -> a -> b $ Maybe Text -> Schema -> NamedSchema NamedSchema (Text -> Maybe Text forall a. a -> Maybe a Just Text "IPFSPeer") (Schema -> NamedSchema) -> Schema -> NamedSchema forall a b. (a -> b) -> a -> b $ Schema forall a. Monoid a => a mempty Schema -> (Schema -> Schema) -> Schema forall a b. a -> (a -> b) -> b & (Maybe (SwaggerType 'SwaggerKindSchema) -> Identity (Maybe (SwaggerType 'SwaggerKindSchema))) -> Schema -> Identity Schema forall s a. HasType s a => Lens' s a type_ ((Maybe (SwaggerType 'SwaggerKindSchema) -> Identity (Maybe (SwaggerType 'SwaggerKindSchema))) -> Schema -> Identity Schema) -> SwaggerType 'SwaggerKindSchema -> Schema -> Schema forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t ?~ SwaggerType 'SwaggerKindSchema forall (t :: SwaggerKind *). SwaggerType t SwaggerString Schema -> (Schema -> Schema) -> Schema forall a b. a -> (a -> b) -> b & (Maybe Value -> Identity (Maybe Value)) -> Schema -> Identity Schema forall s a. HasExample s a => Lens' s a example ((Maybe Value -> Identity (Maybe Value)) -> Schema -> Identity Schema) -> Value -> Schema -> Schema forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t ?~ Value "/ip4/178.62.158.247/tcp/4001/ipfs/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd" Schema -> (Schema -> Schema) -> Schema forall a b. a -> (a -> b) -> b & (Maybe Text -> Identity (Maybe Text)) -> Schema -> Identity Schema forall s a. HasDescription s a => Lens' s a description ((Maybe Text -> Identity (Maybe Text)) -> Schema -> Identity Schema) -> Text -> Schema -> Schema forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t ?~ Text "An IPFS peer address" instance MimeRender PlainText Peer where mimeRender :: Proxy PlainText -> Peer -> ByteString mimeRender Proxy PlainText _ = Text -> ByteString UTF8.textToLazyBS (Text -> ByteString) -> (Peer -> Text) -> Peer -> ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . Peer -> Text peer instance MimeRender OctetStream Peer where mimeRender :: Proxy OctetStream -> Peer -> ByteString mimeRender Proxy OctetStream _ = Text -> ByteString UTF8.textToLazyBS (Text -> ByteString) -> (Peer -> Text) -> Peer -> ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . Peer -> Text peer