Skip to content

Commit

Permalink
add metadata validation disabled flag
Browse files Browse the repository at this point in the history
  • Loading branch information
disassembler committed Jul 9, 2024
1 parent ce71931 commit 98d65a4
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
13 changes: 13 additions & 0 deletions govtool/backend/src/VVA/Config.hs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ module VVA.Config
, getServerHost
, getServerPort
, vvaConfigToText
, getMetadataValidationEnabled
, getMetadataValidationHost
, getMetadataValidationPort
) where
Expand Down Expand Up @@ -82,6 +83,8 @@ data VVAConfigInternal
, vVAConfigInternalSentrydsn :: String
-- | Sentry environment
, vVAConfigInternalSentryEnv :: String
-- | Metadata validation service enabled
, vVAConfigInternalMetadataValidationEnabled :: Bool
-- | Metadata validation service host
, vVAConfigInternalMetadataValidationHost :: Text
-- | Metadata validation service port
Expand All @@ -100,6 +103,7 @@ instance DefaultConfig VVAConfigInternal where
vVaConfigInternalCacheDurationSeconds = 20,
vVAConfigInternalSentrydsn = "https://username:password@senty.host/id",
vVAConfigInternalSentryEnv = "development",
vVAConfigInternalMetadataValidationEnabled = True,
vVAConfigInternalMetadataValidationHost = "localhost",
vVAConfigInternalMetadataValidationPort = 3001,
vVAConfigInternalMetadataValidationMaxConcurrentRequests = 10
Expand All @@ -120,6 +124,8 @@ data VVAConfig
, sentryDSN :: String
-- | Sentry environment
, sentryEnv :: String
-- | Metadata validation service enabled
, metadataValidationEnabled :: Bool
-- | Metadata validation service host
, metadataValidationHost :: Text
-- | Metadata validation service port
Expand Down Expand Up @@ -167,6 +173,7 @@ convertConfig VVAConfigInternal {..} =
cacheDurationSeconds = vVaConfigInternalCacheDurationSeconds,
sentryDSN = vVAConfigInternalSentrydsn,
sentryEnv = vVAConfigInternalSentryEnv,
metadataValidationEnabled = vVAConfigInternalMetadataValidationEnabled,
metadataValidationHost = vVAConfigInternalMetadataValidationHost,
metadataValidationPort = vVAConfigInternalMetadataValidationPort,
metadataValidationMaxConcurrentRequests = vVAConfigInternalMetadataValidationMaxConcurrentRequests
Expand Down Expand Up @@ -208,6 +215,12 @@ getServerHost ::
m Text
getServerHost = asks (serverHost . getter)

-- | Access MetadataValidationService enabled
getMetadataValidationEnabled ::
(Has VVAConfig r, MonadReader r m) =>
m Bool
getMetadataValidationEnabled = asks (metadataValidationEnabled . getter)

-- | Access MetadataValidationService host
getMetadataValidationHost ::
(Has VVAConfig r, MonadReader r m) =>
Expand Down
18 changes: 11 additions & 7 deletions govtool/backend/src/VVA/Metadata.hs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ validateMetadata
-> Maybe Text
-> m (Either Text Value)
validateMetadata url hash standard = do
metadataEnabled <- getMetadataValidationEnabled
metadataHost <- getMetadataValidationHost
metadataPort <- getMetadataValidationPort
manager <- asks getter
Expand All @@ -48,12 +49,15 @@ validateMetadata url hash standard = do
, requestBody = RequestBodyLBS requestBody
, requestHeaders = [("Content-Type", "application/json")]
}
response <- liftIO $ try $ httpLbs request manager
case response of
Left (e :: HttpException) -> return $ Left (pack $ show e)
Right r -> case decode $ responseBody r of
Nothing -> throwError $ InternalError "Failed to validate metadata"
Just x -> return $ Right x
case metadataEnabled of
True -> do
response <- liftIO $ try $ httpLbs request manager
case response of
Left (e :: HttpException) -> return $ Left (pack $ show e)
Right r -> case decode $ responseBody r of
Nothing -> throwError $ InternalError "Failed to validate metadata"
Just x -> return $ Right x
False -> return $ Right "Metadata Disabled"

getProposalMetadataValidationResult ::
(Has ConnectionPool r, Has Manager r, Has VVAConfig r, MonadReader r m, MonadIO m, MonadFail m, MonadError AppError m) =>
Expand Down Expand Up @@ -110,4 +114,4 @@ getDRepMetadataValidationResult url hash = do
let email = (\(String s) -> s) <$> lookup "email" m
let references = (\(Array references') -> map (\(String x) -> x) $ toList references') <$> lookup "references" m
DRepMetadata <$> bio <*> dRepName <*> email <*> references
return $ MetadataValidationResult valid status proposalMetadata
return $ MetadataValidationResult valid status proposalMetadata

0 comments on commit 98d65a4

Please sign in to comment.