Add InstanceURI datatype

This commit is contained in:
fr33domlover 2019-02-20 07:40:25 +00:00
parent 4053f2f2b4
commit aefb2aaee7
2 changed files with 17 additions and 2 deletions

View file

@ -18,6 +18,10 @@ module Network.FedURI
, parseFedURI
, toURI
, renderFedURI
, InstanceURI (..)
, i2f
, f2i
)
where
@ -99,3 +103,14 @@ toURI (FedURI h p f) = URI
renderFedURI :: FedURI -> Text
renderFedURI = T.pack . flip (uriToString id) "" . toURI
newtype InstanceURI = InstanceURI
{ iuriHost :: Text
}
deriving Eq
i2f :: InstanceURI -> FedURI
i2f (InstanceURI h) = FedURI h "" ""
f2i :: FedURI -> InstanceURI
f2i = InstanceURI . furiHost

View file

@ -435,7 +435,7 @@ fetchKey manager sigAlgo muActor uKey = runExceptT $ do
let fetch :: (MonadIO m, FromJSON a) => FedURI -> ExceptT String m a
fetch u = ExceptT $ bimap displayException responseBody <$> httpGetAP manager u
obj <- fetch uKey
let inztance = uKey { furiPath = "", furiFragment = "" }
let inztance = f2i uKey
(actor, pkey) <-
case obj of
Left' pkey -> do
@ -481,7 +481,7 @@ fetchKey manager sigAlgo muActor uKey = runExceptT $ do
else return (actor, pk)
ExceptT . pure $ do
if publicKeyShared pkey
then if publicKeyOwner pkey == inztance
then if publicKeyOwner pkey == i2f inztance
then Right ()
else Left "Key is shared but its owner isn't the top-level instance URI"
else if publicKeyOwner pkey == actorId actor