forked from haskell-github/github
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReviews.hs
More file actions
97 lines (84 loc) · 2.91 KB
/
Reviews.hs
File metadata and controls
97 lines (84 loc) · 2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
module GitHub.Data.Reviews where
import Data.Text (Text)
import GitHub.Data.Definitions (SimpleUser)
import GitHub.Data.Id (Id)
import GitHub.Data.URL (URL)
import GitHub.Internal.Prelude
import Prelude ()
data ReviewState
= ReviewStatePending
| ReviewStateApproved
| ReviewStateDismissed
| ReviewStateCommented
| ReviewStateChangesRequested
deriving (Show, Enum, Bounded, Eq, Ord, Generic)
instance NFData ReviewState where
rnf = genericRnf
instance Binary ReviewState
instance FromJSON ReviewState where
parseJSON (String "APPROVED") = pure ReviewStateApproved
parseJSON (String "PENDING") = pure ReviewStatePending
parseJSON (String "DISMISSED") = pure ReviewStateDismissed
parseJSON (String "COMMENTED") = pure ReviewStateCommented
parseJSON (String "CHANGES_REQUESTED") = pure ReviewStateChangesRequested
parseJSON _ = fail "Unexpected ReviewState"
data Review = Review
{ reviewBody :: !Text
, reviewCommitId :: !Text
, reviewState :: ReviewState
, reviewSubmittedAt :: !UTCTime
, reviewPullRequestUrl :: !URL
, reviewHtmlUrl :: !Text
, reviewUser :: !SimpleUser
, reviewId :: !(Id Review)
} deriving (Show, Generic)
instance NFData Review where
rnf = genericRnf
instance Binary Review
instance FromJSON Review where
parseJSON =
withObject "Review" $ \o ->
Review <$> o .: "body" <*> o .: "commit_id" <*> o .: "state" <*>
o .: "submitted_at" <*>
o .: "pull_request_url" <*>
o .: "html_url" <*>
o .: "user" <*>
o .: "id"
data ReviewComment = ReviewComment
{ reviewCommentId :: !(Id ReviewComment)
, reviewCommentUser :: !SimpleUser
, reviewCommentBody :: !Text
, reviewCommentUrl :: !URL
, reviewCommentPullRequestReviewId :: !(Id Review)
, reviewCommentDiffHunk :: !Text
, reviewCommentPath :: !Text
, reviewCommentPosition :: !Int
, reviewCommentOriginalPosition :: !Int
, reviewCommentCommitId :: !Text
, reviewCommentOriginalCommitId :: !Text
, reviewCommentCreatedAt :: !UTCTime
, reviewCommentUpdatedAt :: !UTCTime
, reviewCommentHtmlUrl :: !URL
, reviewCommentPullRequestUrl :: !URL
} deriving (Show, Generic)
instance NFData ReviewComment where
rnf = genericRnf
instance Binary ReviewComment
instance FromJSON ReviewComment where
parseJSON =
withObject "ReviewComment" $ \o -> ReviewComment
<$> o .: "id"
<*> o .: "user"
<*> o .: "body"
<*> o .: "url"
<*> o .: "pull_request_review_id"
<*> o .: "diff_hunk"
<*> o .: "path"
<*> o .: "position"
<*> o .: "original_position"
<*> o .: "commit_id"
<*> o .: "original_commit_id"
<*> o .: "created_at"
<*> o .: "updated_at"
<*> o .: "html_url"
<*> o .: "pull_request_url"