From 64fce2697a57b008d8d1aebf22a6fcb2bfd7fb13 Mon Sep 17 00:00:00 2001 From: Sajid Ibne Anower Date: Sat, 27 Oct 2018 14:30:05 +1100 Subject: [PATCH 1/7] Add delete endpoint for milestones --- src/GitHub/Endpoints/Issues/Milestones.hs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/GitHub/Endpoints/Issues/Milestones.hs b/src/GitHub/Endpoints/Issues/Milestones.hs index 253080c3..43e57476 100644 --- a/src/GitHub/Endpoints/Issues/Milestones.hs +++ b/src/GitHub/Endpoints/Issues/Milestones.hs @@ -13,6 +13,8 @@ module GitHub.Endpoints.Issues.Milestones ( milestoneR, createMilestone, createMilestoneR, + deleteMilestone, + deleteMilestoneR, module GitHub.Data, ) where @@ -54,7 +56,7 @@ milestoneR user repo mid = query ["repos", toPathPart user, toPathPart repo, "milestones", toPathPart mid] [] createMilestone :: Auth -> Name Owner -> Name Repo -> NewMilestone -> IO (Either Error Milestone) -createMilestone auth user repo mst = executeRequest auth $ createMilestoneR user repo mst +createMilestone auth user repo mlstn = executeRequest auth $ createMilestoneR user repo mlstn -- | Create a milestone. -- See @@ -62,3 +64,10 @@ createMilestoneR :: Name Owner -> Name Repo -> NewMilestone -> Request 'RW Miles createMilestoneR user repo = command Post ["repos", toPathPart user, toPathPart repo, "milestones"] . encode +deleteMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> IO (Either Error ()) +deleteMilestone auth user repo mid = executeRequest auth $ deleteMilestoneR user repo mid + +deleteMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> Request 'RW () +deleteMilestoneR user repo mid = + command Delete + ["repos", toPathPart user, toPathPart repo, "milestones", toPathPart mid] mempty From 5f7a10a7c59415d8e8b5d821ba10c24cbf4111ef Mon Sep 17 00:00:00 2001 From: Sajid Ibne Anower Date: Sat, 27 Oct 2018 14:30:38 +1100 Subject: [PATCH 2/7] Expose delete endpoint for milestones --- src/GitHub.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/GitHub.hs b/src/GitHub.hs index ef11f52f..53856485 100644 --- a/src/GitHub.hs +++ b/src/GitHub.hs @@ -140,11 +140,12 @@ module GitHub ( -- Missing endpoints: -- -- * Update a milestone - -- * Delete a milestone milestonesR, milestoneR, createMilestone, createMilestoneR, + deleteMilestone, + deleteMilestoneR, -- * Organizations -- | See From bd574f43a29622f661d40e76fb311c46621604b2 Mon Sep 17 00:00:00 2001 From: Sajid Ibne Anower Date: Sun, 28 Oct 2018 01:51:51 +1100 Subject: [PATCH 3/7] Add link to Github API docs for delete endpoint --- src/GitHub/Endpoints/Issues/Milestones.hs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/GitHub/Endpoints/Issues/Milestones.hs b/src/GitHub/Endpoints/Issues/Milestones.hs index 43e57476..7ad2cfbf 100644 --- a/src/GitHub/Endpoints/Issues/Milestones.hs +++ b/src/GitHub/Endpoints/Issues/Milestones.hs @@ -67,6 +67,8 @@ createMilestoneR user repo = deleteMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> IO (Either Error ()) deleteMilestone auth user repo mid = executeRequest auth $ deleteMilestoneR user repo mid +-- | Delete a milestone. +-- See deleteMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> Request 'RW () deleteMilestoneR user repo mid = command Delete From 250e5d901d8348bcd4971bf49db27048151b693c Mon Sep 17 00:00:00 2001 From: Sajid Ibne Anower Date: Sun, 28 Oct 2018 01:53:35 +1100 Subject: [PATCH 4/7] Add new data structure for updating milestones --- src/GitHub/Data/Milestone.hs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/GitHub/Data/Milestone.hs b/src/GitHub/Data/Milestone.hs index 157c0eeb..a8db2864 100644 --- a/src/GitHub/Data/Milestone.hs +++ b/src/GitHub/Data/Milestone.hs @@ -63,3 +63,26 @@ instance ToJSON NewMilestone where where notNull (_, Null) = False notNull (_, _) = True + +data UpdateMilestone = UpdateMilestone + { updateMilestoneTitle :: !(Maybe Text) + , updateMilestoneState :: !(Maybe Text) + , updateMilestoneDescription :: !(Maybe Text) + , updateMilestoneDueOn :: !(Maybe UTCTime) + } + deriving (Show, Data, Typeable, Eq, Ord, Generic) + +instance NFData UpdateMilestone where rnf = genericRnf +instance Binary UpdateMilestone + + +instance ToJSON UpdateMilestone where + toJSON (UpdateMilestone title state desc due) = object $ filter notNull + [ "title" .= title + , "state" .= state + , "description" .= desc + , "due_on" .= due + ] + where + notNull (_, Null) = False + notNull (_, _) = True From 1f65d13686d004736aa605345f4a783d9edf437d Mon Sep 17 00:00:00 2001 From: Sajid Ibne Anower Date: Sun, 28 Oct 2018 02:01:38 +1100 Subject: [PATCH 5/7] Add request function to update a milestone --- src/GitHub.hs | 5 ++--- src/GitHub/Endpoints/Issues/Milestones.hs | 11 +++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/GitHub.hs b/src/GitHub.hs index 53856485..92fb16c4 100644 --- a/src/GitHub.hs +++ b/src/GitHub.hs @@ -137,13 +137,12 @@ module GitHub ( -- ** Milestone -- | See -- - -- Missing endpoints: - -- - -- * Update a milestone milestonesR, milestoneR, createMilestone, createMilestoneR, + updateMilestone, + updateMilestoneR, deleteMilestone, deleteMilestoneR, diff --git a/src/GitHub/Endpoints/Issues/Milestones.hs b/src/GitHub/Endpoints/Issues/Milestones.hs index 7ad2cfbf..06039dd2 100644 --- a/src/GitHub/Endpoints/Issues/Milestones.hs +++ b/src/GitHub/Endpoints/Issues/Milestones.hs @@ -13,6 +13,8 @@ module GitHub.Endpoints.Issues.Milestones ( milestoneR, createMilestone, createMilestoneR, + updateMilestone, + updateMilestoneR, deleteMilestone, deleteMilestoneR, module GitHub.Data, @@ -64,6 +66,15 @@ createMilestoneR :: Name Owner -> Name Repo -> NewMilestone -> Request 'RW Miles createMilestoneR user repo = command Post ["repos", toPathPart user, toPathPart repo, "milestones"] . encode +updateMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> IO (Either Error Milestone) +updateMilestone auth user repo mid mlstn = executeRequest auth $ updateMilestoneR user repo mid mlstn + +-- | Update a milestone. +-- See +updateMilestoneR :: Name Owner -> Name Repo -> Id Milestone -> UpdateMilestone -> Request 'RW Milestone +updateMilestoneR user repo mid = + command Patch ["repos", toPathPart user, toPathPart repo, "milestones", toPathPart mid ] . encode + deleteMilestone :: Auth -> Name Owner -> Name Repo -> Id Milestone -> IO (Either Error ()) deleteMilestone auth user repo mid = executeRequest auth $ deleteMilestoneR user repo mid From 9cf8c49a38f2171b030be4914d1c8fd9238d7759 Mon Sep 17 00:00:00 2001 From: Sajid Ibne Anower Date: Sun, 28 Oct 2018 02:54:31 +1100 Subject: [PATCH 6/7] Make it possible to choose between ignore/delete milestone due date --- src/GitHub/Data/Milestone.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitHub/Data/Milestone.hs b/src/GitHub/Data/Milestone.hs index a8db2864..2c947795 100644 --- a/src/GitHub/Data/Milestone.hs +++ b/src/GitHub/Data/Milestone.hs @@ -68,7 +68,7 @@ data UpdateMilestone = UpdateMilestone { updateMilestoneTitle :: !(Maybe Text) , updateMilestoneState :: !(Maybe Text) , updateMilestoneDescription :: !(Maybe Text) - , updateMilestoneDueOn :: !(Maybe UTCTime) + , updateMilestoneDueOn :: !(Maybe (Maybe UTCTime)) } deriving (Show, Data, Typeable, Eq, Ord, Generic) From b6d287e244f362768a104ddfe8cfd68c0d9c3b7a Mon Sep 17 00:00:00 2001 From: Sajid Ibne Anower Date: Sun, 28 Oct 2018 03:04:00 +1100 Subject: [PATCH 7/7] Restore update milestone due on to be Maybe UTCTime --- src/GitHub/Data/Milestone.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitHub/Data/Milestone.hs b/src/GitHub/Data/Milestone.hs index 2c947795..a8db2864 100644 --- a/src/GitHub/Data/Milestone.hs +++ b/src/GitHub/Data/Milestone.hs @@ -68,7 +68,7 @@ data UpdateMilestone = UpdateMilestone { updateMilestoneTitle :: !(Maybe Text) , updateMilestoneState :: !(Maybe Text) , updateMilestoneDescription :: !(Maybe Text) - , updateMilestoneDueOn :: !(Maybe (Maybe UTCTime)) + , updateMilestoneDueOn :: !(Maybe UTCTime) } deriving (Show, Data, Typeable, Eq, Ord, Generic)