github-tools-0.1.2: src/GitHub/Types/Base/Permissions.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Base.Permissions where
import Data.Aeson (FromJSON (..), ToJSON (..), object)
import Data.Aeson.Types (Value (..), (.:?), (.=))
import Data.Text (Text)
import Data.Text.Arbitrary ()
import Test.QuickCheck.Arbitrary (Arbitrary (..))
------------------------------------------------------------------------------
-- Permissions
data Permissions = Permissions
{ permissionsActions :: Maybe Text
, permissionsAdministration :: Maybe Text
, permissionsChecks :: Maybe Text
, permissionsContents :: Maybe Text
, permissionsContentReferences :: Maybe Text
, permissionsDeployments :: Maybe Text
, permissionsDiscussions :: Maybe Text
, permissionsEmails :: Maybe Text
, permissionsIssues :: Maybe Text
, permissionsKeys :: Maybe Text
, permissionsMembers :: Maybe Text
, permissionsMergeQueues :: Maybe Text
, permissionsMetadata :: Maybe Text
, permissionsOrganizationHooks :: Maybe Text
, permissionsOrganizationPackages :: Maybe Text
, permissionsOrganizationProjects :: Maybe Text
, permissionsPackages :: Maybe Text
, permissionsPages :: Maybe Text
, permissionsPullRequests :: Maybe Text
, permissionsRepositoryHooks :: Maybe Text
, permissionsRepositoryProjects :: Maybe Text
, permissionsSecurityEvents :: Maybe Text
, permissionsSingleFile :: Maybe Text
, permissionsStatuses :: Maybe Text
, permissionsVulnerabilityAlerts :: Maybe Text
} deriving (Eq, Show, Read)
instance FromJSON Permissions where
parseJSON (Object x) = Permissions
<$> x .:? "actions"
<*> x .:? "administration"
<*> x .:? "checks"
<*> x .:? "contents"
<*> x .:? "content_references"
<*> x .:? "deployments"
<*> x .:? "discussions"
<*> x .:? "emails"
<*> x .:? "issues"
<*> x .:? "keys"
<*> x .:? "members"
<*> x .:? "merge_queues"
<*> x .:? "metadata"
<*> x .:? "organization_hooks"
<*> x .:? "organization_packages"
<*> x .:? "organization_projects"
<*> x .:? "packages"
<*> x .:? "pages"
<*> x .:? "pull_requests"
<*> x .:? "repository_hooks"
<*> x .:? "repository_projects"
<*> x .:? "security_events"
<*> x .:? "single_file"
<*> x .:? "statuses"
<*> x .:? "vulnerability_alerts"
parseJSON _ = fail "Permissions"
instance ToJSON Permissions where
toJSON Permissions{..} = object
[ "actions" .= permissionsActions
, "administration" .= permissionsAdministration
, "checks" .= permissionsChecks
, "contents" .= permissionsContents
, "content_references" .= permissionsContentReferences
, "deployments" .= permissionsDeployments
, "discussions" .= permissionsDiscussions
, "emails" .= permissionsEmails
, "issues" .= permissionsIssues
, "keys" .= permissionsKeys
, "members" .= permissionsMembers
, "merge_queues" .= permissionsMergeQueues
, "metadata" .= permissionsMetadata
, "organization_hooks" .= permissionsOrganizationHooks
, "organization_packages" .= permissionsOrganizationPackages
, "organization_projects" .= permissionsOrganizationProjects
, "packages" .= permissionsPackages
, "pages" .= permissionsPages
, "pull_requests" .= permissionsPullRequests
, "repository_hooks" .= permissionsRepositoryHooks
, "repository_projects" .= permissionsRepositoryProjects
, "security_events" .= permissionsSecurityEvents
, "single_file" .= permissionsSingleFile
, "statuses" .= permissionsStatuses
, "vulnerability_alerts" .= permissionsVulnerabilityAlerts
]
instance Arbitrary Permissions where
arbitrary = Permissions
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary