From 050f6edfd18ea6aae7f202a08323c3a7f225909f Mon Sep 17 00:00:00 2001 From: Alex Mason Date: Thu, 25 Oct 2018 14:48:17 +1100 Subject: [PATCH 1/4] Replace single assignee fields with vectors --- src/GitHub/Data/Issues.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/GitHub/Data/Issues.hs b/src/GitHub/Data/Issues.hs index cb3981fb..7f0819ff 100644 --- a/src/GitHub/Data/Issues.hs +++ b/src/GitHub/Data/Issues.hs @@ -13,7 +13,7 @@ import GitHub.Data.Options (IssueState) import GitHub.Data.PullRequests import GitHub.Data.URL (URL) import GitHub.Internal.Prelude -import Prelude () +import Prelude () data Issue = Issue { issueClosedAt :: !(Maybe UTCTime) @@ -43,7 +43,7 @@ instance Binary Issue data NewIssue = NewIssue { newIssueTitle :: !Text , newIssueBody :: !(Maybe Text) - , newIssueAssignee :: !(Maybe Text) + , newIssueAssignees :: !(Maybe (Vector (Name User))) , newIssueMilestone :: !(Maybe (Id Milestone)) , newIssueLabels :: !(Maybe (Vector (Name IssueLabel))) } @@ -55,7 +55,7 @@ instance Binary NewIssue data EditIssue = EditIssue { editIssueTitle :: !(Maybe Text) , editIssueBody :: !(Maybe Text) - , editIssueAssignee :: !(Maybe (Name User)) + , editIssueAssignees :: !(Maybe (Vector (Name User))) , editIssueState :: !(Maybe IssueState) , editIssueMilestone :: !(Maybe (Id Milestone)) , editIssueLabels :: !(Maybe (Vector (Name IssueLabel))) @@ -206,7 +206,7 @@ instance ToJSON NewIssue where toJSON (NewIssue t b a m ls) = object [ "title" .= t , "body" .= b - , "assignee" .= a + , "assignees" .= a , "milestone" .= m , "labels" .= ls ] @@ -215,7 +215,7 @@ instance ToJSON EditIssue where toJSON (EditIssue t b a s m ls) = object $ filter notNull $ [ "title" .= t , "body" .= b - , "assignee" .= a + , "assignees" .= a , "state" .= s , "milestone" .= m , "labels" .= ls From 027182ec143fdab9937b0c15eaf7003a3d65ffb9 Mon Sep 17 00:00:00 2001 From: Alex Mason Date: Thu, 25 Oct 2018 15:05:16 +1100 Subject: [PATCH 2/4] Remove null fields NewIssue --- src/GitHub/Data/Issues.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GitHub/Data/Issues.hs b/src/GitHub/Data/Issues.hs index 7f0819ff..c1d93dab 100644 --- a/src/GitHub/Data/Issues.hs +++ b/src/GitHub/Data/Issues.hs @@ -203,7 +203,7 @@ instance FromJSON Issue where <*> o .:? "milestone" instance ToJSON NewIssue where - toJSON (NewIssue t b a m ls) = object + toJSON (NewIssue t b a m ls) = object $ filter notNull [ "title" .= t , "body" .= b , "assignees" .= a @@ -212,7 +212,7 @@ instance ToJSON NewIssue where ] instance ToJSON EditIssue where - toJSON (EditIssue t b a s m ls) = object $ filter notNull $ + toJSON (EditIssue t b a s m ls) = object $ filter notNull [ "title" .= t , "body" .= b , "assignees" .= a From 8f9669d207176e4dd0a1eb5127cb41bc68f07342 Mon Sep 17 00:00:00 2001 From: Alex Mason Date: Thu, 25 Oct 2018 15:34:32 +1100 Subject: [PATCH 3/4] Add missing notNull function --- src/GitHub/Data/Issues.hs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/GitHub/Data/Issues.hs b/src/GitHub/Data/Issues.hs index c1d93dab..31651c0f 100644 --- a/src/GitHub/Data/Issues.hs +++ b/src/GitHub/Data/Issues.hs @@ -210,6 +210,9 @@ instance ToJSON NewIssue where , "milestone" .= m , "labels" .= ls ] + where + notNull (_, Null) = False + notNull (_, _) = True instance ToJSON EditIssue where toJSON (EditIssue t b a s m ls) = object $ filter notNull From 2f8ac2bddacc46bb65e62f89b3dcd4d3594f212f Mon Sep 17 00:00:00 2001 From: Alex Mason Date: Fri, 26 Oct 2018 13:52:25 +1100 Subject: [PATCH 4/4] Make assignees just a Vector in NewIssue --- src/GitHub/Data/Issues.hs | 2 +- src/GitHub/Endpoints/Issues.hs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GitHub/Data/Issues.hs b/src/GitHub/Data/Issues.hs index 31651c0f..82c0324d 100644 --- a/src/GitHub/Data/Issues.hs +++ b/src/GitHub/Data/Issues.hs @@ -43,7 +43,7 @@ instance Binary Issue data NewIssue = NewIssue { newIssueTitle :: !Text , newIssueBody :: !(Maybe Text) - , newIssueAssignees :: !(Maybe (Vector (Name User))) + , newIssueAssignees :: !(Vector (Name User)) , newIssueMilestone :: !(Maybe (Id Milestone)) , newIssueLabels :: !(Maybe (Vector (Name IssueLabel))) } diff --git a/src/GitHub/Endpoints/Issues.hs b/src/GitHub/Endpoints/Issues.hs index 431e1c3e..7b2c5c43 100644 --- a/src/GitHub/Endpoints/Issues.hs +++ b/src/GitHub/Endpoints/Issues.hs @@ -85,7 +85,7 @@ issuesForRepoR user reqRepoName opts = -- Creating new issues. newIssue :: Text -> NewIssue -newIssue title = NewIssue title Nothing Nothing Nothing Nothing +newIssue title = NewIssue title Nothing mempty Nothing Nothing -- | Create a new issue.