diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f439bb23..c78020868 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,6 +63,7 @@ changes. ### Fixed +- proposal/list no longer throws 500 error when proposal's url is incorrect [Issue 1073](https://github.com/IntersectMBO/govtool/issues/1073) - drep/list sql fix (now the drep type is correct) [Issue 957](https://github.com/IntersectMBO/govtool/issues/957) - drep/list sql fix (now the latest tx date is correct) [Issue 826](https://github.com/IntersectMBO/govtool/issues/826) - drep/info no longer returns null values [Issue 720](https://github.com/IntersectMBO/govtool/issues/720) diff --git a/govtool/backend/src/VVA/API.hs b/govtool/backend/src/VVA/API.hs index d860fd391..6067000cc 100644 --- a/govtool/backend/src/VVA/API.hs +++ b/govtool/backend/src/VVA/API.hs @@ -407,5 +407,7 @@ validateMetadata MetadataValidationParams {..} = do $ Metadata.validateMetadata metadataValidationParamsUrl (unHexText metadataValidationParamsHash) case fromJSON result of - Error e -> throwError $ InternalError $ pack $ show e - Success a -> return a + Error e -> return $ MetadataValidationResponse Nothing False (AnyValue $ Just result) + Success (InternalMetadataValidationResponse {..}) -> return $ MetadataValidationResponse {metadataValidationResponseStatus=internalMetadataValidationResponseStatus, metadataValidationResponseValid=internalMmetadataValidationResponseValid, metadataValidationResponseRaw=AnyValue $ Just result} + + diff --git a/govtool/backend/src/VVA/API/Types.hs b/govtool/backend/src/VVA/API/Types.hs index 6eebd5d7c..760b24857 100644 --- a/govtool/backend/src/VVA/API/Types.hs +++ b/govtool/backend/src/VVA/API/Types.hs @@ -140,10 +140,36 @@ instance ToSchema MetadataValidationStatus where & description ?~ "Metadata Validation Status" & enum_ ?~ map toJSON [IncorrectFormat, IncorrectJSONLD, IncorrectHash, UrlNotFound] + + +data InternalMetadataValidationResponse + = InternalMetadataValidationResponse + { internalMetadataValidationResponseStatus :: Maybe MetadataValidationStatus + , internalMmetadataValidationResponseValid :: Bool + } + deriving (Generic, Show) + +deriveJSON (jsonOptions "internalMetadataValidationResponse") ''InternalMetadataValidationResponse + +instance ToSchema InternalMetadataValidationResponse where + declareNamedSchema _ = do + NamedSchema name_ schema_ <- + genericDeclareNamedSchema + ( fromAesonOptions $ jsonOptions "internalMetadataValidationResponse" ) + (Proxy :: Proxy InternalMetadataValidationResponse) + return $ + NamedSchema name_ $ + schema_ + & description ?~ "Metadata Validation Response" + & example + ?~ toJSON ("{\"status\": \"INCORRECT_FORMTAT\", \"valid\":false, \"raw\":{\"some\":\"key\"}}" :: Text) + + data MetadataValidationResponse = MetadataValidationResponse { metadataValidationResponseStatus :: Maybe MetadataValidationStatus , metadataValidationResponseValid :: Bool + , metadataValidationResponseRaw :: AnyValue } deriving (Generic, Show)