Skip to content

Commit 802dd54

Browse files
committed
URL type for all *Url fields
1 parent 3c28e7b commit 802dd54

14 files changed

Lines changed: 99 additions & 99 deletions

File tree

samples/Users/ShowUser.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ formatUser user =
2020
(formatName userName login) <> "\t" <> (fromMaybe "" company) <> "\t" <>
2121
(fromMaybe "" location) <> "\n" <>
2222
(fromMaybe "" blog) <> "\t" <> "<" <> (fromMaybe "" email) <> ">" <> "\n" <>
23-
htmlUrl <> "\t" <> tshow createdAt <> "\n" <>
23+
GitHub.getUrl htmlUrl <> "\t" <> tshow createdAt <> "\n" <>
2424
"hireable: " <> formatHireable (fromMaybe False isHireable) <> "\n\n" <>
2525
(fromMaybe "" bio)
2626
where

src/GitHub/Data/Comments.hs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
module GitHub.Data.Comments where
77

88
import GitHub.Data.Definitions
9-
import GitHub.Data.Id
9+
import GitHub.Data.Id (Id)
10+
import GitHub.Data.URL (URL)
1011
import GitHub.Internal.Prelude
1112

1213
data Comment = Comment {
@@ -15,8 +16,8 @@ data Comment = Comment {
1516
,commentBody :: !Text
1617
,commentCommitId :: !(Maybe Text)
1718
,commentUpdatedAt :: !UTCTime
18-
,commentHtmlUrl :: !(Maybe Text)
19-
,commentUrl :: !Text
19+
,commentHtmlUrl :: !(Maybe URL)
20+
,commentUrl :: !URL
2021
,commentCreatedAt :: !(Maybe UTCTime)
2122
,commentPath :: !(Maybe Text)
2223
,commentUser :: !SimpleUser

src/GitHub/Data/Content.hs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
--
66
module GitHub.Data.Content where
77

8+
import GitHub.Data.URL
89
import GitHub.Internal.Prelude
910

1011
data Content
@@ -45,9 +46,9 @@ data ContentInfo = ContentInfo {
4546
contentName :: !Text
4647
,contentPath :: !Text
4748
,contentSha :: !Text
48-
,contentUrl :: !Text
49-
,contentGitUrl :: !Text
50-
,contentHtmlUrl :: !Text
49+
,contentUrl :: !URL
50+
,contentGitUrl :: !URL
51+
,contentHtmlUrl :: !URL
5152
} deriving (Show, Data, Typeable, Eq, Ord, Generic)
5253

5354
instance NFData ContentInfo where rnf = genericRnf

src/GitHub/Data/Definitions.hs

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,19 @@
55
--
66
module GitHub.Data.Definitions where
77

8-
import Prelude ()
9-
import Prelude.Compat
10-
11-
import Control.DeepSeq (NFData (..))
12-
import Control.DeepSeq.Generics (genericRnf)
13-
import Control.Monad (mfilter)
14-
import Data.Aeson.Compat (FromJSON (..), Object, withObject, withText,
15-
(.:), (.:?))
16-
import Data.Aeson.Types (Parser)
17-
import Data.Binary.Orphans (Binary)
18-
import Data.Data (Data, Typeable)
19-
import Data.Text (Text)
20-
import Data.Time (UTCTime)
21-
import GHC.Generics (Generic)
22-
import Network.HTTP.Client (HttpException)
8+
import GitHub.Internal.Prelude
9+
10+
import Control.Monad (mfilter)
11+
import Data.Aeson.Types (Parser)
12+
import Network.HTTP.Client (HttpException)
2313

2414
import qualified Control.Exception as E
25-
import qualified Data.Text as T
2615
import qualified Data.ByteString as BS
16+
import qualified Data.Text as T
2717

28-
import GitHub.Data.Id
29-
import GitHub.Data.Name
18+
import GitHub.Data.Id (Id)
19+
import GitHub.Data.Name (Name)
20+
import GitHub.Data.URL (URL)
3021

3122
-- | Errors have been tagged according to their source, so you can more easily
3223
-- dispatch and handle them.
@@ -49,8 +40,8 @@ instance Binary OwnerType
4940
data SimpleUser = SimpleUser
5041
{ simpleUserId :: !(Id User)
5142
, simpleUserLogin :: !(Name User)
52-
, simpleUserAvatarUrl :: !Text
53-
, simpleUserUrl :: !Text
43+
, simpleUserAvatarUrl :: !URL
44+
, simpleUserUrl :: !URL
5445
, simpleUserType :: !OwnerType -- ^ Should always be 'OwnerUser'
5546
}
5647
deriving (Show, Data, Typeable, Eq, Ord, Generic)
@@ -61,8 +52,8 @@ instance Binary SimpleUser
6152
data SimpleOrganization = SimpleOrganization
6253
{ simpleOrganizationId :: !(Id Organization)
6354
, simpleOrganizationLogin :: !(Name Organization)
64-
, simpleOrganizationUrl :: !Text
65-
, simpleOrganizationAvatarUrl :: !Text
55+
, simpleOrganizationUrl :: !URL
56+
, simpleOrganizationAvatarUrl :: !URL
6657
}
6758
deriving (Show, Data, Typeable, Eq, Ord, Generic)
6859

@@ -73,8 +64,8 @@ instance Binary SimpleOrganization
7364
data SimpleOwner = SimpleOwner
7465
{ simpleOwnerId :: !(Id Owner)
7566
, simpleOwnerLogin :: !(Name Owner)
76-
, simpleOwnerUrl :: !Text
77-
, simpleOwnerAvatarUrl :: !Text
67+
, simpleOwnerUrl :: !URL
68+
, simpleOwnerAvatarUrl :: !URL
7869
, simpleOwnerType :: !OwnerType
7970
}
8071
deriving (Show, Data, Typeable, Eq, Ord, Generic)
@@ -89,7 +80,7 @@ data User = User
8980
, userType :: !OwnerType -- ^ Should always be 'OwnerUser'
9081
, userCreatedAt :: !UTCTime
9182
, userPublicGists :: !Int
92-
, userAvatarUrl :: !Text
83+
, userAvatarUrl :: !URL
9384
, userFollowers :: !Int
9485
, userFollowing :: !Int
9586
, userHireable :: !(Maybe Bool)
@@ -99,8 +90,8 @@ data User = User
9990
, userLocation :: !(Maybe Text)
10091
, userCompany :: !(Maybe Text)
10192
, userEmail :: !(Maybe Text)
102-
, userUrl :: !Text
103-
, userHtmlUrl :: !Text
93+
, userUrl :: !URL
94+
, userHtmlUrl :: !URL
10495
}
10596
deriving (Show, Data, Typeable, Eq, Ord, Generic)
10697

@@ -116,13 +107,13 @@ data Organization = Organization
116107
, organizationLocation :: !(Maybe Text)
117108
, organizationFollowers :: !Int
118109
, organizationCompany :: !(Maybe Text)
119-
, organizationAvatarUrl :: !Text
110+
, organizationAvatarUrl :: !URL
120111
, organizationPublicGists :: !Int
121-
, organizationHtmlUrl :: !Text
112+
, organizationHtmlUrl :: !URL
122113
, organizationEmail :: !(Maybe Text)
123114
, organizationFollowing :: !Int
124115
, organizationPublicRepos :: !Int
125-
, organizationUrl :: !Text
116+
, organizationUrl :: !URL
126117
, organizationCreatedAt :: !UTCTime
127118
}
128119
deriving (Show, Data, Typeable, Eq, Ord, Generic)

src/GitHub/Data/Gists.hs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,22 @@ import GitHub.Data.Definitions
99
import GitHub.Data.Id (Id)
1010
import GitHub.Data.Name (Name)
1111
import GitHub.Data.Repos (Language)
12+
import GitHub.Data.URL (URL)
1213
import GitHub.Internal.Prelude
1314

1415
data Gist = Gist {
1516
gistUser :: !SimpleUser
16-
,gistGitPushUrl :: !Text
17-
,gistUrl :: !Text
17+
,gistGitPushUrl :: !URL
18+
,gistUrl :: !URL
1819
,gistDescription :: !(Maybe Text)
1920
,gistCreatedAt :: !UTCTime
2021
,gistPublic :: !Bool
2122
,gistComments :: !Int
2223
,gistUpdatedAt :: !UTCTime
23-
,gistHtmlUrl :: !Text
24+
,gistHtmlUrl :: !URL
2425
,gistId :: !(Name Gist)
2526
,gistFiles :: !(HashMap Text GistFile)
26-
,gistGitPullUrl :: !Text
27+
,gistGitPullUrl :: !URL
2728
} deriving (Show, Data, Typeable, Eq, Generic)
2829

2930
instance NFData Gist where rnf = genericRnf
@@ -46,7 +47,7 @@ instance FromJSON Gist where
4647

4748
data GistFile = GistFile {
4849
gistFileType :: !Text
49-
,gistFileRawUrl :: !Text
50+
,gistFileRawUrl :: !URL
5051
,gistFileSize :: !Int
5152
,gistFileLanguage :: !(Maybe Language)
5253
,gistFileFilename :: !Text
@@ -67,7 +68,7 @@ instance FromJSON GistFile where
6768

6869
data GistComment = GistComment {
6970
gistCommentUser :: !SimpleUser
70-
,gistCommentUrl :: !Text
71+
,gistCommentUrl :: !URL
7172
,gistCommentCreatedAt :: !UTCTime
7273
,gistCommentBody :: !Text
7374
,gistCommentUpdatedAt :: !UTCTime

src/GitHub/Data/GitData.hs

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module GitHub.Data.GitData where
77

88
import GitHub.Data.Definitions
99
import GitHub.Data.Name (Name)
10+
import GitHub.Data.URL (URL)
1011
import GitHub.Internal.Prelude
1112

1213
import qualified Data.Vector as V
@@ -31,7 +32,7 @@ instance Binary Stats
3132
data Commit = Commit {
3233
commitSha :: !(Name Commit)
3334
,commitParents :: !(Vector Tree)
34-
,commitUrl :: !Text
35+
,commitUrl :: !URL
3536
,commitGitCommit :: !GitCommit
3637
,commitCommitter :: !(Maybe SimpleUser)
3738
,commitAuthor :: !(Maybe SimpleUser)
@@ -44,7 +45,7 @@ instance Binary Commit
4445

4546
data Tree = Tree {
4647
treeSha :: !(Name Tree)
47-
,treeUrl :: !Text
48+
,treeUrl :: !URL
4849
,treeGitTrees :: !(Vector GitTree)
4950
} deriving (Show, Data, Typeable, Eq, Ord, Generic)
5051

@@ -55,7 +56,7 @@ data GitTree = GitTree {
5556
gitTreeType :: !Text
5657
,gitTreeSha :: !(Name GitTree)
5758
-- Can be empty for submodule
58-
,gitTreeUrl :: !(Maybe Text)
59+
,gitTreeUrl :: !(Maybe URL)
5960
,gitTreeSize :: !(Maybe Int)
6061
,gitTreePath :: !Text
6162
,gitTreeMode :: !Text
@@ -66,7 +67,7 @@ instance Binary GitTree
6667

6768
data GitCommit = GitCommit {
6869
gitCommitMessage :: !Text
69-
,gitCommitUrl :: !Text
70+
,gitCommitUrl :: !URL
7071
,gitCommitCommitter :: !GitUser
7172
,gitCommitAuthor :: !GitUser
7273
,gitCommitTree :: !Tree
@@ -78,7 +79,7 @@ instance NFData GitCommit where rnf = genericRnf
7879
instance Binary GitCommit
7980

8081
data Blob = Blob {
81-
blobUrl :: !Text
82+
blobUrl :: !URL
8283
,blobEncoding :: !Text
8384
,blobContent :: !Text
8485
,blobSha :: !(Name Blob)
@@ -90,8 +91,8 @@ instance Binary Blob
9091

9192
data Tag = Tag {
9293
tagName :: !Text
93-
,tagZipballUrl :: !Text
94-
,tagTarballUrl :: !Text
94+
,tagZipballUrl :: !URL
95+
,tagTarballUrl :: !URL
9596
,tagCommit :: !BranchCommit
9697
} deriving (Show, Data, Typeable, Eq, Ord, Generic)
9798

@@ -107,7 +108,7 @@ instance NFData Branch where rnf = genericRnf
107108

108109
data BranchCommit = BranchCommit {
109110
branchCommitSha :: !Text
110-
,branchCommitUrl :: !Text
111+
,branchCommitUrl :: !URL
111112
} deriving (Show, Data, Typeable, Eq, Ord, Generic)
112113

113114
instance NFData BranchCommit where rnf = genericRnf
@@ -116,16 +117,16 @@ instance Binary BranchCommit
116117
data Diff = Diff {
117118
diffStatus :: !Text
118119
,diffBehindBy :: !Int
119-
,diffPatchUrl :: !Text
120-
,diffUrl :: !Text
120+
,diffPatchUrl :: !URL
121+
,diffUrl :: !URL
121122
,diffBaseCommit :: !Commit
122123
,diffCommits :: !(Vector Commit)
123124
,diffTotalCommits :: !Int
124-
,diffHtmlUrl :: !Text
125+
,diffHtmlUrl :: !URL
125126
,diffFiles :: !(Vector File)
126127
,diffAheadBy :: !Int
127-
,diffDiffUrl :: !Text
128-
,diffPermalinkUrl :: !Text
128+
,diffDiffUrl :: !URL
129+
,diffPermalinkUrl :: !URL
129130
} deriving (Show, Data, Typeable, Eq, Ord, Generic)
130131

131132
instance NFData Diff where rnf = genericRnf
@@ -141,7 +142,7 @@ instance Binary NewGitReference
141142

142143
data GitReference = GitReference {
143144
gitReferenceObject :: !GitObject
144-
,gitReferenceUrl :: !Text
145+
,gitReferenceUrl :: !URL
145146
,gitReferenceRef :: !Text
146147
} deriving (Show, Data, Typeable, Eq, Ord, Generic)
147148

@@ -151,7 +152,7 @@ instance Binary GitReference
151152
data GitObject = GitObject {
152153
gitObjectType :: !Text
153154
,gitObjectSha :: !Text
154-
,gitObjectUrl :: !Text
155+
,gitObjectUrl :: !URL
155156
} deriving (Show, Data, Typeable, Eq, Ord, Generic)
156157

157158
instance NFData GitObject where rnf = genericRnf
@@ -167,9 +168,9 @@ instance NFData GitUser where rnf = genericRnf
167168
instance Binary GitUser
168169

169170
data File = File {
170-
fileBlobUrl :: !Text
171+
fileBlobUrl :: !URL
171172
,fileStatus :: !Text
172-
,fileRawUrl :: !Text
173+
,fileRawUrl :: !URL
173174
,fileAdditions :: !Int
174175
,fileSha :: !Text
175176
,fileChanges :: !Int

src/GitHub/Data/Issues.hs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,22 @@ module GitHub.Data.Issues where
88
import GitHub.Data.Definitions
99
import GitHub.Data.Id (Id)
1010
import GitHub.Data.PullRequests
11+
import GitHub.Data.URL (URL)
1112
import GitHub.Internal.Prelude
1213

1314
data Issue = Issue {
1415
issueClosedAt :: Maybe UTCTime
1516
,issueUpdatedAt :: UTCTime
16-
,issueEventsUrl :: Text
17-
,issueHtmlUrl :: Maybe Text
17+
,issueEventsUrl :: URL
18+
,issueHtmlUrl :: Maybe URL
1819
,issueClosedBy :: Maybe SimpleUser
1920
,issueLabels :: (Vector IssueLabel)
2021
,issueNumber :: Int
2122
,issueAssignee :: Maybe SimpleUser
2223
,issueUser :: SimpleUser
2324
,issueTitle :: Text
2425
,issuePullRequest :: Maybe PullRequestReference
25-
,issueUrl :: Text
26+
,issueUrl :: URL
2627
,issueCreatedAt :: UTCTime
2728
,issueBody :: Maybe Text
2829
,issueState :: Text
@@ -65,7 +66,7 @@ data Milestone = Milestone {
6566
,milestoneClosedIssues :: Int
6667
,milestoneDescription :: Maybe Text
6768
,milestoneTitle :: Text
68-
,milestoneUrl :: Text
69+
,milestoneUrl :: URL
6970
,milestoneCreatedAt :: UTCTime
7071
,milestoneState :: Text
7172
} deriving (Show, Data, Typeable, Eq, Ord, Generic)
@@ -75,7 +76,7 @@ instance Binary Milestone
7576

7677
data IssueLabel = IssueLabel {
7778
labelColor :: Text
78-
,labelUrl :: Text
79+
,labelUrl :: URL
7980
,labelName :: Text
8081
} deriving (Show, Data, Typeable, Eq, Ord, Generic)
8182

@@ -85,8 +86,8 @@ instance Binary IssueLabel
8586
data IssueComment = IssueComment {
8687
issueCommentUpdatedAt :: UTCTime
8788
,issueCommentUser :: SimpleUser
88-
,issueCommentUrl :: Text
89-
,issueCommentHtmlUrl :: Text
89+
,issueCommentUrl :: URL
90+
,issueCommentHtmlUrl :: URL
9091
,issueCommentCreatedAt :: UTCTime
9192
,issueCommentBody :: Text
9293
,issueCommentId :: Int
@@ -124,7 +125,7 @@ data Event = Event {
124125
eventActor :: !SimpleUser
125126
,eventType :: !EventType
126127
,eventCommitId :: !(Maybe Text)
127-
,eventUrl :: !Text
128+
,eventUrl :: !URL
128129
,eventCreatedAt :: !UTCTime
129130
,eventId :: !Int
130131
,eventIssue :: !(Maybe Issue)

0 commit comments

Comments
 (0)