module Network.IPFS.Name.Types (Name (..)) where import qualified RIO.Text as Text import Data.Swagger (ToParamSchema, ToSchema (..)) import Servant.API import Network.IPFS.Prelude newtype Name = Name { Name -> String unName :: String } deriving ( Name -> Name -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Name -> Name -> Bool $c/= :: Name -> Name -> Bool == :: Name -> Name -> Bool $c== :: Name -> Name -> Bool Eq , forall x. Rep Name x -> Name forall x. Name -> Rep Name x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep Name x -> Name $cfrom :: forall x. Name -> Rep Name x Generic , Int -> Name -> ShowS [Name] -> ShowS Name -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Name] -> ShowS $cshowList :: [Name] -> ShowS show :: Name -> String $cshow :: Name -> String showsPrec :: Int -> Name -> ShowS $cshowsPrec :: Int -> Name -> ShowS Show , Eq Name Name -> Name -> Bool Name -> Name -> Ordering Name -> Name -> Name forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: Name -> Name -> Name $cmin :: Name -> Name -> Name max :: Name -> Name -> Name $cmax :: Name -> Name -> Name >= :: Name -> Name -> Bool $c>= :: Name -> Name -> Bool > :: Name -> Name -> Bool $c> :: Name -> Name -> Bool <= :: Name -> Name -> Bool $c<= :: Name -> Name -> Bool < :: Name -> Name -> Bool $c< :: Name -> Name -> Bool compare :: Name -> Name -> Ordering $ccompare :: Name -> Name -> Ordering Ord ) deriving newtype ( String -> Name forall a. (String -> a) -> IsString a fromString :: String -> Name $cfromString :: String -> Name IsString , Proxy Name -> Declare (Definitions Schema) NamedSchema forall a. (Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a declareNamedSchema :: Proxy Name -> Declare (Definitions Schema) NamedSchema $cdeclareNamedSchema :: Proxy Name -> Declare (Definitions Schema) NamedSchema ToSchema , forall a. (forall (t :: SwaggerKind (*)). Proxy a -> ParamSchema t) -> ToParamSchema a forall (t :: SwaggerKind (*)). Proxy Name -> ParamSchema t toParamSchema :: forall (t :: SwaggerKind (*)). Proxy Name -> ParamSchema t $ctoParamSchema :: forall (t :: SwaggerKind (*)). Proxy Name -> ParamSchema t ToParamSchema ) instance Display Name where display :: Name -> Utf8Builder display = forall a. Show a => a -> Utf8Builder displayShow instance ToJSON Name where toJSON :: Name -> Value toJSON (Name String n) = forall a. ToJSON a => a -> Value toJSON String n instance FromJSON Name where parseJSON :: Value -> Parser Name parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a withText String "IPFSName" (forall (f :: * -> *) a. Applicative f => a -> f a pure forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Name Name forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> String Text.unpack) instance FromHttpApiData Name where parseUrlPiece :: Text -> Either Text Name parseUrlPiece = \case Text "" -> forall a b. a -> Either a b Left Text "Empty Name field" Text txt -> forall a b. b -> Either a b Right forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Name Name forall a b. (a -> b) -> a -> b <| Text -> String Text.unpack Text txt