From 7b5d27d6951a8c82befc9108835d000ef83bf284 Mon Sep 17 00:00:00 2001 From: Shae Erisson <shae@scannedinavian.com> Date: Tue, 6 Jun 2023 14:25:18 -0500 Subject: [PATCH] add SDMF parser with string replacement --- src/Tahoe/Directory.hs | 1 + src/Tahoe/Directory/Internal/Capability.hs | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Tahoe/Directory.hs b/src/Tahoe/Directory.hs index f661cde..27451c2 100644 --- a/src/Tahoe/Directory.hs +++ b/src/Tahoe/Directory.hs @@ -8,6 +8,7 @@ import Tahoe.Directory.Internal.Capability ( ConfidentialShowable (..), DirectoryCapability (..), pReadCHK, + pReadSDMF, pVerifyCHK, ) import Tahoe.Directory.Internal.Parsing (parse, serialize) diff --git a/src/Tahoe/Directory/Internal/Capability.hs b/src/Tahoe/Directory/Internal/Capability.hs index efdc0d3..87737f1 100644 --- a/src/Tahoe/Directory/Internal/Capability.hs +++ b/src/Tahoe/Directory/Internal/Capability.hs @@ -5,6 +5,8 @@ module Tahoe.Directory.Internal.Capability where import qualified Data.Text as T import Data.Void (Void) import qualified Tahoe.CHK.Capability as CHK +import qualified Tahoe.SDMF as SDMF + import Text.Megaparsec (Parsec, getInput, setInput) {- | Something which contains confidential information and can be rendered as @@ -19,7 +21,7 @@ class ConfidentialShowable s where {- | A wrapper around some other capability type which signals that the plaintext is an encoded list of files. -} -newtype DirectoryCapability a = DirectoryCapability a +newtype DirectoryCapability a = DirectoryCapability a deriving (Eq, Ord, Show) instance ConfidentialShowable (DirectoryCapability CHK.Verifier) where confidentiallyShow (DirectoryCapability a) = @@ -54,3 +56,10 @@ pReadCHK = do setInput $ T.replace "URI:DIR2-CHK:" "URI:CHK:" s v <- CHK.pReader pure $ DirectoryCapability v + +pReadSDMF :: Parser (DirectoryCapability SDMF.Reader) +pReadSDMF = do + s <- getInput + setInput $ T.replace "URI:DIR2-RO:" "URI:SSK-RO:" s + v <- SDMF.pReader + pure $ DirectoryCapability v -- GitLab