module GitHub.Data.Gists where
import GitHub.Data.Definitions
import GitHub.Data.Id (Id)
import GitHub.Data.Name (Name)
import GitHub.Data.Repos (Language)
import GitHub.Data.URL (URL)
import GitHub.Internal.Prelude
import Prelude ()
data Gist = Gist
{ gistUser :: !SimpleUser
, gistGitPushUrl :: !URL
, gistUrl :: !URL
, gistDescription :: !(Maybe Text)
, gistCreatedAt :: !UTCTime
, gistPublic :: !Bool
, gistComments :: !Int
, gistUpdatedAt :: !UTCTime
, gistHtmlUrl :: !URL
, gistId :: !(Name Gist)
, gistFiles :: !(HashMap Text GistFile)
, gistGitPullUrl :: !URL
} deriving (Show, Data, Typeable, Eq, Generic)
instance NFData Gist where rnf = genericRnf
instance Binary Gist
instance FromJSON Gist where
parseJSON = withObject "Gist" $ \o -> Gist
<$> o .: "owner"
<*> o .: "git_push_url"
<*> o .: "url"
<*> o .:? "description"
<*> o .: "created_at"
<*> o .: "public"
<*> o .: "comments"
<*> o .: "updated_at"
<*> o .: "html_url"
<*> o .: "id"
<*> o .: "files"
<*> o .: "git_push_url"
data GistFile = GistFile
{ gistFileType :: !Text
, gistFileRawUrl :: !URL
, gistFileSize :: !Int
, gistFileLanguage :: !(Maybe Language)
, gistFileFilename :: !Text
, gistFileContent :: !(Maybe Text)
}
deriving (Show, Data, Typeable, Eq, Generic)
instance NFData GistFile where rnf = genericRnf
instance Binary GistFile
instance FromJSON GistFile where
parseJSON = withObject "GistFile" $ \o -> GistFile
<$> o .: "type"
<*> o .: "raw_url"
<*> o .: "size"
<*> o .:? "language"
<*> o .: "filename"
<*> o .:? "content"
data GistComment = GistComment
{ gistCommentUser :: !SimpleUser
, gistCommentUrl :: !URL
, gistCommentCreatedAt :: !UTCTime
, gistCommentBody :: !Text
, gistCommentUpdatedAt :: !UTCTime
, gistCommentId :: !(Id GistComment)
}
deriving (Show, Data, Typeable, Eq, Ord, Generic)
instance NFData GistComment where rnf = genericRnf
instance Binary GistComment
instance FromJSON GistComment where
parseJSON = withObject "GistComment" $ \o -> GistComment
<$> o .: "user"
<*> o .: "url"
<*> o .: "created_at"
<*> o .: "body"
<*> o .: "updated_at"
<*> o .: "id"