Skip to content

Commit b8f999f

Browse files
authored
Merge pull request #338 from sajidanower23/sajid/update-delete-milestone
Update, Delete Milestones
2 parents d6f4ea6 + b6d287e commit b8f999f

File tree

3 files changed

+50
-5
lines changed

3 files changed

+50
-5
lines changed

src/GitHub.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,14 @@ module GitHub (
137137
-- ** Milestone
138138
-- | See <https://developer.github.com/v3/issues/milestones/>
139139
--
140-
-- Missing endpoints:
141-
--
142-
-- * Update a milestone
143-
-- * Delete a milestone
144140
milestonesR,
145141
milestoneR,
146142
createMilestone,
147143
createMilestoneR,
144+
updateMilestone,
145+
updateMilestoneR,
146+
deleteMilestone,
147+
deleteMilestoneR,
148148

149149
-- * Organizations
150150
-- | See <https://developer.github.com/v3/orgs/>

src/GitHub/Data/Milestone.hs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,26 @@ instance ToJSON NewMilestone where
6363
where
6464
notNull (_, Null) = False
6565
notNull (_, _) = True
66+
67+
data UpdateMilestone = UpdateMilestone
68+
{ updateMilestoneTitle :: !(Maybe Text)
69+
, updateMilestoneState :: !(Maybe Text)
70+
, updateMilestoneDescription :: !(Maybe Text)
71+
, updateMilestoneDueOn :: !(Maybe UTCTime)
72+
}
73+
deriving (Show, Data, Typeable, Eq, Ord, Generic)
74+
75+
instance NFData UpdateMilestone where rnf = genericRnf
76+
instance Binary UpdateMilestone
77+
78+
79+
instance ToJSON UpdateMilestone where
80+
toJSON (UpdateMilestone title state desc due) = object $ filter notNull
81+
[ "title" .= title
82+
, "state" .= state
83+
, "description" .= desc
84+
, "due_on" .= due
85+
]
86+
where
87+
notNull (_, Null) = False
88+
notNull (_, _) = True

src/GitHub/Endpoints/Issues/Milestones.hs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ module GitHub.Endpoints.Issues.Milestones (
1313
milestoneR,
1414
createMilestone,
1515
createMilestoneR,
16+
updateMilestone,
17+
updateMilestoneR,
18+
deleteMilestone,
19+
deleteMilestoneR,
1620
module GitHub.Data,
1721
) where
1822

@@ -54,11 +58,29 @@ milestoneR user repo mid =
5458
query ["repos", toPathPart user, toPathPart repo, "milestones", toPathPart mid] []
5559

5660
createMilestone :: Auth -> Name Owner -> Name Repo -> NewMilestone -> IO (Either Error Milestone)
57-
createMilestone auth user repo mst = executeRequest auth $ createMilestoneR user repo mst
61+
createMilestone auth user repo mlstn = executeRequest auth $ createMilestoneR user repo mlstn
5862

5963
-- | Create a milestone.
6064
-- See <https://developer.github.com/v3/issues/milestones/#create-a-milestone>
6165
createMilestoneR :: Name Owner -> Name Repo -> NewMilestone -> Request 'RW Milestone
6266
createMilestoneR user repo =
6367
command Post ["repos", toPathPart user, toPathPart repo, "milestones"] . encode
6468

69+
updateMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> IO (Either Error Milestone)
70+
updateMilestone auth user repo mid mlstn = executeRequest auth $ updateMilestoneR user repo mid mlstn
71+
72+
-- | Update a milestone.
73+
-- See <https://developer.github.com/v3/issues/milestones/#update-a-milestone>
74+
updateMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> Request 'RW Milestone
75+
updateMilestoneR user repo mid =
76+
command Patch ["repos", toPathPart user, toPathPart repo, "milestones", toPathPart mid ] . encode
77+
78+
deleteMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> IO (Either Error ())
79+
deleteMilestone auth user repo mid = executeRequest auth $ deleteMilestoneR user repo mid
80+
81+
-- | Delete a milestone.
82+
-- See <https://developer.github.com/v3/issues/milestones/#delete-a-milestone>
83+
deleteMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> Request 'RW ()
84+
deleteMilestoneR user repo mid =
85+
command Delete
86+
["repos", toPathPart user, toPathPart repo, "milestones", toPathPart mid] mempty

0 commit comments

Comments
 (0)