sarif-0.2: src/Data/SARIF/VersionControlDetails.hs
--------------------------------------------------------------------------------
-- SARIF implementation for Haskell
--------------------------------------------------------------------------------
-- This source code is licensed under the MIT license found in the LICENSE --
-- file in the root directory of this source tree. --
--------------------------------------------------------------------------------
-- | Provides the `VersionControlDetails` type to represent SARIF artifacts.
module Data.SARIF.VersionControlDetails (VersionControlDetails (..)) where
import Data.Aeson.Optional
import Data.Map.Strict
import Data.SARIF.ArtifactLocation
import Data.Text
data VersionControlDetails
= MkVersionControlDetails
{ -- | The repositoryUri property of the version control details
versionControlDetailsRepositoryUri :: Text
-- | The revisionId property of the version control details
, versionControlDetailsRevisionId :: Text
-- | The branch property of the version control details
, versionControlDetailsBranch :: Maybe Text
-- | The revisionTag property of the version control details
, versionControlDetailsRevisionTag :: Maybe Text
-- | The asOfTimeUtc property of the version control details
, versionControlDetailsAsOfTimeUtc :: Maybe Text
-- | The mappedTo property of the version control details
, versionControlDetailsMappedTo :: Maybe ArtifactLocation
-- | The properties property of a VersionControlDetails object
, versionControlDetailsProperties :: Maybe (Map Text Value)
}
deriving (Eq, Ord, Show)
instance ToJSON VersionControlDetails where
toJSON MkVersionControlDetails {..} =
object
[ "repositoryUri" .= versionControlDetailsRepositoryUri,
"revisionId" .= versionControlDetailsRevisionId,
"branch" .=? versionControlDetailsBranch,
"revisionTag" .=? versionControlDetailsRevisionTag,
"asOfTimeUtc" .=? versionControlDetailsAsOfTimeUtc,
"mappedTo" .=? versionControlDetailsMappedTo,
"properties" .=? versionControlDetailsProperties
]
instance FromJSON VersionControlDetails where
parseJSON = withObject "VersionControlDetails" $ \obj ->
MkVersionControlDetails
<$> obj .: "repositoryUri"
<*> obj .: "revisionId"
<*> obj .:? "branch"
<*> obj .:? "revisionTag"
<*> obj .:? "asOfTimeUtc"
<*> obj .:? "mappedTo"
<*> obj .:? "properties"