module Network.IPFS.Name.Types (Name (..)) where import qualified RIO.Text as Text import Servant import Data.Swagger (ToParamSchema, ToSchema (..)) import Network.IPFS.Prelude newtype Name = Name { Name -> String unName :: String } deriving ( Name -> Name -> Bool (Name -> Name -> Bool) -> (Name -> Name -> Bool) -> Eq Name 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. Name -> Rep Name x) -> (forall x. Rep Name x -> Name) -> Generic Name 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 (Int -> Name -> ShowS) -> (Name -> String) -> ([Name] -> ShowS) -> Show Name 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 Eq Name -> (Name -> Name -> Ordering) -> (Name -> Name -> Bool) -> (Name -> Name -> Bool) -> (Name -> Name -> Bool) -> (Name -> Name -> Bool) -> (Name -> Name -> Name) -> (Name -> Name -> Name) -> Ord 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 $cp1Ord :: Eq Name Ord ) deriving newtype ( String -> Name (String -> Name) -> IsString Name forall a. (String -> a) -> IsString a fromString :: String -> Name $cfromString :: String -> Name IsString , Proxy Name -> Declare (Definitions Schema) NamedSchema (Proxy Name -> Declare (Definitions Schema) NamedSchema) -> ToSchema Name 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 , Proxy Name -> ParamSchema t (forall (t :: SwaggerKind *). Proxy Name -> ParamSchema t) -> ToParamSchema Name forall a. (forall (t :: SwaggerKind *). Proxy a -> ParamSchema t) -> ToParamSchema a forall (t :: SwaggerKind *). Proxy Name -> ParamSchema t toParamSchema :: Proxy Name -> ParamSchema t $ctoParamSchema :: forall (t :: SwaggerKind *). Proxy Name -> ParamSchema t ToParamSchema ) instance Display Name where display :: Name -> Utf8Builder display = Name -> Utf8Builder forall a. Show a => a -> Utf8Builder displayShow instance ToJSON Name where toJSON :: Name -> Value toJSON (Name String n) = String -> Value forall a. ToJSON a => a -> Value toJSON String n instance FromJSON Name where parseJSON :: Value -> Parser Name parseJSON = String -> (Text -> Parser Name) -> Value -> Parser Name forall a. String -> (Text -> Parser a) -> Value -> Parser a withText String "IPFSName" (Name -> Parser Name forall (f :: * -> *) a. Applicative f => a -> f a pure (Name -> Parser Name) -> (Text -> Name) -> Text -> Parser Name forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Name Name (String -> Name) -> (Text -> String) -> Text -> 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 "" -> Text -> Either Text Name forall a b. a -> Either a b Left Text "Empty Name field" Text txt -> Name -> Either Text Name forall a b. b -> Either a b Right (Name -> Either Text Name) -> (String -> Name) -> String -> Either Text Name forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Name Name (String -> Either Text Name) -> String -> Either Text Name forall a b. (a -> b) -> a -> b <| Text -> String Text.unpack Text txt