github-webhooks (empty) → 0.9.0
raw patch · 11 files changed
+7060/−0 lines, 11 filesdep +aesondep +basedep +base16-bytestringsetup-changed
Dependencies added: aeson, base, base16-bytestring, bytestring, cryptonite, deepseq, deepseq-generics, github-webhooks, hspec, memory, text, time, vector
Files
- CHANGELOG.md +4/−0
- LICENSE +21/−0
- Setup.lhs +3/−0
- github-webhooks.cabal +74/−0
- package.yaml +54/−0
- spec/DecodeEventsSpec.hs +4316/−0
- spec/Spec.hs +1/−0
- src/GitHub/Data/Webhooks/Events.hs +1434/−0
- src/GitHub/Data/Webhooks/Payload.hs +1027/−0
- src/GitHub/Data/Webhooks/Secure.hs +52/−0
- stack.yaml +74/−0
+ CHANGELOG.md view
@@ -0,0 +1,4 @@+# 0.9.0++* This is an alpha testing release with an incomplete feature set to recieve feedback on the API.+* The API may change in the recent future. When alpha testing has commenced, the version will start at `1.0.0`.
+ LICENSE view
@@ -0,0 +1,21 @@+MIT License++Copyright (c) 2017 OnRock Engineering (https://onrock.engineering)++Permission is hereby granted, free of charge, to any person obtaining a copy+of this software and associated documentation files (the "Software"), to deal+in the Software without restriction, including without limitation the rights+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+copies of the Software, and to permit persons to whom the Software is+furnished to do so, subject to the following conditions:++The above copyright notice and this permission notice shall be included in all+copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE+SOFTWARE.
+ Setup.lhs view
@@ -0,0 +1,3 @@+#!/usr/bin/env runhaskell+> import Distribution.Simple+> main = defaultMain
+ github-webhooks.cabal view
@@ -0,0 +1,74 @@+-- This file has been generated from package.yaml by hpack version 0.21.2.+--+-- see: https://github.com/sol/hpack+--+-- hash: f7a90de8da51ba7bfe8b932cd2e197309c530257d3ed031c1d776ccb5cd7f39e++name: github-webhooks+version: 0.9.0+synopsis: Aeson instances for GitHub Webhook payloads.+description: Complete instances for decoding GitHub Webhook payloads (using @aeson@). See the README at <https://github.com/onrock-eng/github-webhooks#readme> for examples.+category: GitHub+homepage: https://github.com/onrock-eng/github-webhooks#readme+bug-reports: https://github.com/onrock-eng/github-webhooks/issues+author: Kyle Van Berendonck <kyle.vanberendonck@onrock.engineering>+maintainer: Kyle Van Berendonck <foss@onrock.engineering>+copyright: (c) 2017-2018 OnRock Engineering+license: MIT+license-file: LICENSE+build-type: Simple+cabal-version: >= 1.10++extra-source-files:+ CHANGELOG.md+ package.yaml+ stack.yaml++source-repository head+ type: git+ location: https://github.com/onrock-eng/github-webhooks++library+ hs-source-dirs:+ src+ default-extensions: DeriveDataTypeable DeriveGeneric OverloadedStrings+ ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates+ build-depends:+ aeson+ , base ==4.*+ , base16-bytestring+ , bytestring+ , cryptonite+ , deepseq+ , deepseq-generics+ , memory+ , text+ , time+ , vector+ exposed-modules:+ GitHub.Data.Webhooks.Events+ GitHub.Data.Webhooks.Payload+ GitHub.Data.Webhooks.Secure+ other-modules:+ Paths_github_webhooks+ default-language: Haskell2010++test-suite spec+ type: exitcode-stdio-1.0+ main-is: Spec.hs+ hs-source-dirs:+ spec+ default-extensions: DeriveDataTypeable DeriveGeneric OverloadedStrings ScopedTypeVariables+ ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates+ build-depends:+ aeson+ , base ==4.*+ , bytestring+ , github-webhooks+ , hspec ==2.*+ , text+ , vector+ other-modules:+ DecodeEventsSpec+ Paths_github_webhooks+ default-language: Haskell2010
+ package.yaml view
@@ -0,0 +1,54 @@+name: github-webhooks+version: 0.9.0++category: GitHub+license: MIT+extra-source-files:+ - package.yaml+ - stack.yaml+ - CHANGELOG.md+synopsis: Aeson instances for GitHub Webhook payloads.+copyright: (c) 2017-2018 OnRock Engineering+author: Kyle Van Berendonck <kyle.vanberendonck@onrock.engineering>+maintainer: Kyle Van Berendonck <foss@onrock.engineering>+github: onrock-eng/github-webhooks+description:+ Complete instances for decoding GitHub Webhook payloads (using @aeson@).+ See the README at <https://github.com/onrock-eng/github-webhooks#readme> for examples.++ghc-options:+ - -Wall+ - -Wincomplete-uni-patterns+ - -Wincomplete-record-updates++default-extensions:+ - DeriveDataTypeable+ - DeriveGeneric+ - OverloadedStrings++dependencies:+ - base == 4.*+ - aeson+ - bytestring+ - text+ - vector++library:+ source-dirs: src+ dependencies:+ - base16-bytestring+ - cryptonite+ - deepseq+ - deepseq-generics+ - memory+ - time++tests:+ spec:+ source-dirs: spec+ main: Spec.hs+ dependencies:+ - github-webhooks+ - hspec == 2.*+ default-extensions:+ - ScopedTypeVariables
+ spec/DecodeEventsSpec.hs view
@@ -0,0 +1,4316 @@+-- | Smoke tests to make sure that the Aeson FromJSON instances work as expected.+module DecodeEventsSpec+ ( spec+ ) where++import Test.Hspec+import Control.Monad ( void )+import Data.Aeson ( FromJSON, eitherDecode' )+import qualified Data.Text as T+import qualified Data.ByteString.Lazy as BSL+import qualified Data.Vector as V++import GitHub.Data.Webhooks.Events+import GitHub.Data.Webhooks.Payload+++-- Run GHCi:+-- $ stack install pretty-show+-- $ stack ghci --test pretty-show++-- Paste:+{-+import Data.Aeson+import qualified Data.ByteString.Lazy as BSL+import GitHub.Data.Webhooks.Events+import Text.Show.Pretty+import Text.PrettyPrint.HughesPJ+-}++-- Use:+-- do { x <- BSL.readFile "fixtures/watch-event.json";+-- putStrLn $ renderStyle (style {lineLength=200}) . ppDoc $ either error id (eitherDecode' x :: Either String WatchEvent) }++fixtureShouldMatch :: (FromJSON a, Show a, Eq a) => String -> a -> IO ()+fixtureShouldMatch path expected = do+ str <- BSL.readFile path+ let output = eitherDecode' str+ void $ output `shouldBe` Right expected++spec :: Spec+spec = do+ it "can decode CommitCommentEvent" $ fixtureShouldMatch "fixtures/commit-comment-event.json" commitCommentEventFixture+ it "can decode CreateEvent" $ fixtureShouldMatch "fixtures/create-event.json" createEventFixture+ it "can decode DeleteEvent" $ fixtureShouldMatch "fixtures/delete-event.json" deleteEventFixture+ it "can decode DeploymentEvent" $ fixtureShouldMatch "fixtures/deployment-event.json" deploymentEventFixture+ it "can decode DeploymentStatusEvent" $ fixtureShouldMatch "fixtures/deployment-status-event.json" deploymentStatusEventFixture+ it "can decode ForkEvent" $ fixtureShouldMatch "fixtures/fork-event.json" forkEventFixture+ it "can decode GollumEvent" $ fixtureShouldMatch "fixtures/gollum-event.json" gollumEventFixture+ it "can decode InstallationEvent" $ fixtureShouldMatch "fixtures/installation-event.json" installationEventFixture+ it "can decode InstallationRepositoriesEvent" $ fixtureShouldMatch "fixtures/installation-repo-event.json" installationRepoEventFixture+ it "can decode IssueCommentEvent" $ fixtureShouldMatch "fixtures/issue-comment-event.json" issueCommentEventFixture+ it "can decode IssuesEvent" $ fixtureShouldMatch "fixtures/issues-event.json" issuesEventFixture+ it "can decode LabelEvent" $ fixtureShouldMatch "fixtures/label-event.json" labelEventFixture+ it "can decode MemberEvent" $ fixtureShouldMatch "fixtures/member-event.json" memberEventFixture+ it "can decode MembershipEvent" $ fixtureShouldMatch "fixtures/membership-event.json" membershipEventFixture+ it "can decode MilestoneEvent" $ fixtureShouldMatch "fixtures/milestone-event.json" milestoneEventFixture+ it "can decode OrgBlockEvent" $ fixtureShouldMatch "fixtures/org-block-event.json" orgBlockEventFixture+ it "can decode OrganizationEvent" $ fixtureShouldMatch "fixtures/organization-event.json" organizationEventFixture+ it "can decode PageBuildEvent" $ fixtureShouldMatch "fixtures/page-build-event.json" pageBuildEventFixture+ it "can decode ProjectCardEvent" $ fixtureShouldMatch "fixtures/project-card-event.json" projectCardEventFixture+ it "can decode ProjectColumnEvent" $ fixtureShouldMatch "fixtures/project-column-event.json" projectColumnEventFixture+ it "can decode ProjectEvent" $ fixtureShouldMatch "fixtures/project-event.json" projectEventFixture+ it "can decode PublicEvent" $ fixtureShouldMatch "fixtures/public-event.json" publicEventFixture+ it "can decode PullRequestEvent" $ fixtureShouldMatch "fixtures/pull-request-event.json" pullRequestEventFixture+ it "can decode PullRequestReviewCommentEvent" $ fixtureShouldMatch "fixtures/pull-request-review-comment-event.json" pullRequestReviewCommentEventFixture+ it "can decode PullRequestReviewEvent" $ fixtureShouldMatch "fixtures/pull-request-review-event.json" pullRequestReviewEventFixture+ it "can decode PushEvent" $ fixtureShouldMatch "fixtures/push-event.json" pushEventFixture+ it "can decode ReleaseEvent" $ fixtureShouldMatch "fixtures/release-event.json" releaseEventFixture+ it "can decode RepositoryEvent" $ fixtureShouldMatch "fixtures/repository-event.json" repositoryEventFixture+ it "can decode StatusEvent" $ fixtureShouldMatch "fixtures/status-event.json" statusEventFixture+ it "can decode TeamAddEvent" $ fixtureShouldMatch "fixtures/team-add-event.json" teamAddEventFixture+ it "can decode TeamEvent" $ fixtureShouldMatch "fixtures/team-event.json" teamEventFixture+ it "can decode WatchEvent" $ fixtureShouldMatch "fixtures/watch-event.json" watchEventFixture+++-- Fixtures+-- These correspond to the expected decoded output of the above JSON files.++commitCommentEventFixture :: CommitCommentEvent+commitCommentEventFixture = CommitCommentEvent+ { evCommitCommentAction = CommitCommentActionCreated+ , evCommitCommentPayload =+ HookCommitComment+ { whCommitCommentUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments/11056394"+ , whCommitCommentHtmlUrl =+ URL "https://github.com/baxterthehacker/public-repo/commit/9049f1265b7d61be4a8904a9a27120d2064dab3b#commitcomment-11056394"+ , whCommitCommentId = 11056394+ , whCommitCommentUser =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whCommitCommentPos = Nothing+ , whCommitCommentLine = Nothing+ , whCommitCommentPath = Nothing+ , whCommitCommentCommitSha = "9049f1265b7d61be4a8904a9a27120d2064dab3b"+ , whCommitCommentCreatedAt = read "2015-05-05 23:40:29"+ , whCommitCommentUpdatedAt = read "2015-05-05 23:40:29"+ , whCommitCommentBody = "This is a really good change! :+1:"+ }+ , evCommitCommentRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:12"+ , whRepoPushedAt = read "2015-05-05 23:40:27"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evCommitCommentSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++createEventFixture :: CreateEvent+createEventFixture = CreateEvent+ { evCreateRef = "0.0.1"+ , evCreateRefType = "tag"+ , evCreateMasterBranch = "master"+ , evCreateDescription = ""+ , evCreatePusherType = OwnerUser+ , evCreateRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:30"+ , whRepoPushedAt = read "2015-05-05 23:40:38"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evCreateSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++deleteEventFixture :: DeleteEvent+deleteEventFixture = DeleteEvent+ { evDeleteRef = "simple-tag"+ , evDeleteRefType = "tag"+ , evDeletePusherType = OwnerUser+ , evDeleteRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:30"+ , whRepoPushedAt = read "2015-05-05 23:40:40"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evDeleteSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++deploymentEventFixture :: DeploymentEvent+deploymentEventFixture = DeploymentEvent+ { evDeploymentInfo =+ HookDeployment+ { whDeploymentUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/deployments/710692"+ , whDeploymentId = 710692+ , whDeploymentSha = "9049f1265b7d61be4a8904a9a27120d2064dab3b"+ , whDeploymentRef = "master"+ , whDeploymentTask = "deploy"+ , whDeploymentEnv = "production"+ , whDeploymentDescription = Nothing+ , whDeploymentCreator =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whDeploymentCreatedAt = read "2015-05-05 23:40:38"+ , whDeploymentUpdatedAt = read "2015-05-05 23:40:38"+ , whDeploymentStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/deployments/710692/statuses"+ , whDeploymentRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ }+ , evDeploymentRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:30"+ , whRepoPushedAt = read "2015-05-05 23:40:38"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evDeploymentSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++deploymentStatusEventFixture :: DeploymentStatusEvent+deploymentStatusEventFixture = DeploymentStatusEvent+ { evDeplStatusInfo =+ HookDeploymentStatus+ { whDeploymentStatusUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/deployments/710692/statuses/1115122"+ , whDeploymentStatusId = 1115122+ , whDeploymentStatusState = "success"+ , whDeploymentStatusCreator =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whDeploymentStatusDesc = Nothing+ , whDeploymentStatusTargetUrl = Nothing+ , whDeploymentStatusCreatedAt = read "2015-05-05 23:40:39"+ , whDeploymentStatusUpdatedAt = read "2015-05-05 23:40:39"+ , whDeploymentStatusDeplUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/deployments/710692"+ , whDeploymentStatusRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ }+ , evDeplStatusDeployment =+ HookDeployment+ { whDeploymentUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/deployments/710692"+ , whDeploymentId = 710692+ , whDeploymentSha = "9049f1265b7d61be4a8904a9a27120d2064dab3b"+ , whDeploymentRef = "master"+ , whDeploymentTask = "deploy"+ , whDeploymentEnv = "production"+ , whDeploymentDescription = Nothing+ , whDeploymentCreator =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whDeploymentCreatedAt = read "2015-05-05 23:40:38"+ , whDeploymentUpdatedAt = read "2015-05-05 23:40:38"+ , whDeploymentStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/deployments/710692/statuses"+ , whDeploymentRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ }+ , evDeplStatusRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:30"+ , whRepoPushedAt = read "2015-05-05 23:40:38"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evDeplStatusSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++forkEventFixture :: ForkEvent+forkEventFixture = ForkEvent+ { evForkDestination =+ HookRepository+ { whRepoId = 35129393+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterandthehackers/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterandthehackers"+ , whUserId = 7649605+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterandthehackers"+ , whUserHtmlUrl = URL "https://github.com/baxterandthehackers"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterandthehackers/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterandthehackers/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterandthehackers/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterandthehackers/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterandthehackers/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterandthehackers/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterandthehackers/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterandthehackers/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterandthehackers/received_events"+ , whUserType = OwnerOrganization+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterandthehackers/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = True+ , whRepoUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:30"+ , whRepoUpdatedAt = read "2015-05-05 23:40:30"+ , whRepoPushedAt = read "2015-05-05 23:40:27"+ , whRepoGitUrl = URL "git://github.com/baxterandthehackers/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterandthehackers/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterandthehackers/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterandthehackers/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = False+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 0+ , whRepoDefaultBranchName = "master"+ }+ , evForkSource =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:30"+ , whRepoPushedAt = read "2015-05-05 23:40:27"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 1+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evForkSender =+ HookUser+ { whUserLogin = "baxterandthehackers"+ , whUserId = 7649605+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterandthehackers"+ , whUserHtmlUrl = URL "https://github.com/baxterandthehackers"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterandthehackers/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterandthehackers/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterandthehackers/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterandthehackers/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterandthehackers/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterandthehackers/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterandthehackers/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterandthehackers/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterandthehackers/received_events"+ , whUserType = OwnerOrganization+ , whUserIsAdminOfSite = False+ }+ }++gollumEventFixture :: GollumEvent+gollumEventFixture = GollumEvent+ { evGollumPages = V.fromList+ [ HookWikiPage+ { whWikiPageName = "Home"+ , whWikiPageTitle = "Home"+ , whWikiPageSummary = Nothing+ , wkWikiPageAction = "created"+ , whWikiPageSha = "91ea1bd42aa2ba166b86e8aefe049e9837214e67"+ , whWikiPageHtmlUrl = URL "https://github.com/baxterthehacker/public-repo/wiki/Home"+ }+ ]+ , evGollumRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:12"+ , whRepoPushedAt = read "2015-05-05 23:40:17"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 0+ , whRepoDefaultBranchName = "master"+ }+ , evGollumSender =+ HookUser+ { whUserLogin = "jasonrudolph"+ , whUserId = 2988+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/2988?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/jasonrudolph"+ , whUserHtmlUrl = URL "https://github.com/jasonrudolph"+ , whUserFollowersUrl = URL "https://api.github.com/users/jasonrudolph/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/jasonrudolph/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/jasonrudolph/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/jasonrudolph/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/jasonrudolph/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/jasonrudolph/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/jasonrudolph/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/jasonrudolph/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/jasonrudolph/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = True+ }+ }++installationEventFixture :: InstallationEvent+installationEventFixture = InstallationEvent+ { evInstallationAction = InstallationDeletedAction+ , evInstallationInfo =+ HookInstallation+ { whInstallationId = 2+ , whInstallationAccount =+ HookUser+ { whUserLogin = "octocat"+ , whUserId = 1+ , whUserAvatarUrl = URL "https://github.com/images/error/octocat_happy.gif"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/octocat"+ , whUserHtmlUrl = URL "https://github.com/octocat"+ , whUserFollowersUrl = URL "https://api.github.com/users/octocat/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/octocat/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/octocat/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/octocat/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/octocat/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/octocat/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/octocat/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/octocat/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/octocat/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whInstallationRepoSel = "selected"+ , whInstallationTokenUrl = URL "https://api.github.com/installations/2/access_tokens"+ , whInstallationRepoUrl = URL "https://api.github.com/installation/repositories"+ }+ , evInstallationSender =+ HookUser+ { whUserLogin = "octocat"+ , whUserId = 1+ , whUserAvatarUrl = URL "https://github.com/images/error/octocat_happy.gif"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/octocat"+ , whUserHtmlUrl = URL "https://github.com/octocat"+ , whUserFollowersUrl = URL "https://api.github.com/users/octocat/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/octocat/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/octocat/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/octocat/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/octocat/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/octocat/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/octocat/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/octocat/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/octocat/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++installationRepoEventFixture :: InstallationRepositoriesEvent+installationRepoEventFixture = InstallationRepositoriesEvent+ { evInstallationRepoAction = InstallationRepoRemovedAction+ , evInstallationRepoInfo =+ HookInstallation+ { whInstallationId = 2+ , whInstallationAccount =+ HookUser+ { whUserLogin = "octocat"+ , whUserId = 1+ , whUserAvatarUrl = URL "https://github.com/images/error/octocat_happy.gif"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/octocat"+ , whUserHtmlUrl = URL "https://github.com/octocat"+ , whUserFollowersUrl = URL "https://api.github.com/users/octocat/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/octocat/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/octocat/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/octocat/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/octocat/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/octocat/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/octocat/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/octocat/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/octocat/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whInstallationRepoSel = "selected"+ , whInstallationTokenUrl = URL "https://api.github.com/installations/2/access_tokens"+ , whInstallationRepoUrl = URL "https://api.github.com/installation/repositories"+ }+ , evInstallationRepoSel = "selected"+ , evInstallationReposAdd = V.empty+ , evInstallationReposRemove = V.fromList+ [ HookRepositorySimple { whSimplRepoId = 1296269 , whSimplRepoName = "Hello-World" , whSimplRepoFullName = "octocat/Hello-World" } ]+ , evInstallationReposSender =+ HookUser+ { whUserLogin = "octocat"+ , whUserId = 1+ , whUserAvatarUrl = URL "https://github.com/images/error/octocat_happy.gif"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/octocat"+ , whUserHtmlUrl = URL "https://github.com/octocat"+ , whUserFollowersUrl = URL "https://api.github.com/users/octocat/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/octocat/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/octocat/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/octocat/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/octocat/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/octocat/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/octocat/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/octocat/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/octocat/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++issueCommentEventFixture :: IssueCommentEvent+issueCommentEventFixture = IssueCommentEvent+ { evIssueCommentAction = IssueCommentCreatedAction+ , evIssueCommentIssue =+ HookIssue+ { whIssueUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/2"+ , whIssueLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/2/labels{/name}"+ , whIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/2/comments"+ , whIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/2/events"+ , whIssueHtmlUrl = URL "https://github.com/baxterthehacker/public-repo/issues/2"+ , whIssueId = 73464126+ , whIssueNumber = 2+ , whIssueTitle = "Spelling error in the README file"+ , whIssueUser =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whIssueLabels = V.fromList+ [ HookIssueLabels+ { whIssueLabelId = Nothing+ , whIssueLabelUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels/bug"+ , whIssueLabelName = "bug"+ , whIssueLabelColor = "fc2929"+ , whIssueLabelIsDefault = False+ }+ ]+ , whIssueState = "open"+ , whIssueIsLocked = False+ , whIssueAssignee = Nothing+ , whIssueMilestone = Nothing+ , whIssueCommentCount = 1+ , whIssueCreatedAt = read "2015-05-05 23:40:28"+ , whIssueUpdatedAt = read "2015-05-05 23:40:28"+ , whIssueClosedAt = Nothing+ , whIssueBody = "It looks like you accidently spelled 'commit' with two 't's."+ }+ , evIssueCommentPayload =+ HookIssueComment+ { whIssueCommentUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments/99262140"+ , whIssueCommentHtmlUrl = URL "https://github.com/baxterthehacker/public-repo/issues/2#issuecomment-99262140"+ , whIssueCommentIssueUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/2"+ , whIssueCommentId = 99262140+ , whIssueCommentUser =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whIssueCommentCreatedAt = read "2015-05-05 23:40:28"+ , whIssueCommentUpdatedAt = read "2015-05-05 23:40:28"+ , whIssueCommentBody = "You are totally right! I'll get this fixed right away."+ }+ , evIssueCommentRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:12"+ , whRepoPushedAt = read "2015-05-05 23:40:27"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evIssueCommentSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++issuesEventFixture :: IssuesEvent+issuesEventFixture = IssuesEvent+ { evIssuesEventAction = IssuesOpenedAction+ , evIssuesEventIssue =+ HookIssue+ { whIssueUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/2"+ , whIssueLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/2/labels{/name}"+ , whIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/2/comments"+ , whIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/2/events"+ , whIssueHtmlUrl = URL "https://github.com/baxterthehacker/public-repo/issues/2"+ , whIssueId = 73464126+ , whIssueNumber = 2+ , whIssueTitle = "Spelling error in the README file"+ , whIssueUser =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whIssueLabels = V.fromList+ [ HookIssueLabels+ { whIssueLabelId = Just 208045946+ , whIssueLabelUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels/bug"+ , whIssueLabelName = "bug"+ , whIssueLabelColor = "fc2929"+ , whIssueLabelIsDefault = True+ }+ ]+ , whIssueState = "open"+ , whIssueIsLocked = False+ , whIssueAssignee = Nothing+ , whIssueMilestone = Nothing+ , whIssueCommentCount = 0+ , whIssueCreatedAt = read "2015-05-05 23:40:28"+ , whIssueUpdatedAt = read "2015-05-05 23:40:28"+ , whIssueClosedAt = Nothing+ , whIssueBody = "It looks like you accidently spelled 'commit' with two 't's."+ }+ , evIssuesEventRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:12"+ , whRepoPushedAt = read "2015-05-05 23:40:27"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evIssuesEventSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++labelEventFixture :: LabelEvent+labelEventFixture = LabelEvent+ { evLabelEventAction = LabelCreatedAction+ , evLabelEventPayload =+ HookRepositoryLabel+ { whRepoLabelUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/labels/blocked"+ , whRepoLabelName = "blocked"+ , whRepoLabelColor = "ff0000"+ }+ , evLabelEventRepo =+ HookRepository+ { whRepoId = 67075329+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterandthehackers/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterandthehackers"+ , whUserId = 4312013+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/4312013?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterandthehackers"+ , whUserHtmlUrl = URL "https://github.com/baxterandthehackers"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterandthehackers/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterandthehackers/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterandthehackers/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterandthehackers/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterandthehackers/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterandthehackers/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterandthehackers/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterandthehackers/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterandthehackers/received_events"+ , whUserType = OwnerOrganization+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = True+ , whRepoHtmlUrl = URL "https://github.com/baxterandthehackers/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2016-08-31 21:38:51"+ , whRepoUpdatedAt = read "2016-08-31 21:38:51"+ , whRepoPushedAt = read "2016-08-31 21:38:51"+ , whRepoGitUrl = URL "git://github.com/baxterandthehackers/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterandthehackers/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterandthehackers/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterandthehackers/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = False+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evLabelEventOrganization =+ Just+ HookOrganization+ { whOrgLogin = "baxterandthehackers"+ , whOrgId = 4312013+ , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"+ , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"+ , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"+ , whOrgHooksUrl = Just (URL "https://api.github.com/orgs/baxterandthehackers/hooks")+ , whOrgIssuesUrl = Just (URL "https://api.github.com/orgs/baxterandthehackers/issues")+ , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"+ , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"+ , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/4312013?v=3"+ , whOrgDescription = T.empty+ }+ , evLabelEventSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 7649605+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = True+ }+ }++memberEventFixture :: MemberEvent+memberEventFixture = MemberEvent+ { evMemberAction = MemberAddedAction+ , evMemberUser =+ HookUser+ { whUserLogin = "octocat"+ , whUserId = 583231+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/583231?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/octocat"+ , whUserHtmlUrl = URL "https://github.com/octocat"+ , whUserFollowersUrl = URL "https://api.github.com/users/octocat/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/octocat/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/octocat/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/octocat/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/octocat/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/octocat/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/octocat/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/octocat/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/octocat/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , evMemberRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:30"+ , whRepoPushedAt = read "2015-05-05 23:40:40"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evMemberSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++membershipEventFixture :: MembershipEvent+membershipEventFixture = MembershipEvent+ { evMembershipAction = MembershipAddedAction+ , evMembershipScope = "team"+ , evMembershipUser =+ HookUser+ { whUserLogin = "kdaigle"+ , whUserId = 2501+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/2501?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/kdaigle"+ , whUserHtmlUrl = URL "https://github.com/kdaigle"+ , whUserFollowersUrl = URL "https://api.github.com/users/kdaigle/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/kdaigle/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/kdaigle/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/kdaigle/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/kdaigle/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/kdaigle/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/kdaigle/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/kdaigle/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/kdaigle/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = True+ }+ , evMembershipTeam =+ HookTeam+ { whTeamName = "Contractors"+ , whTeamId = 123456+ , whTeamSlug = "contractors"+ , whTeamPermission = "admin"+ , whTeamUrl = URL "https://api.github.com/teams/123456"+ , whTeamMembersUrl = URL "https://api.github.com/teams/123456/members{/member}"+ , whTeamRepositoriesUrl = URL "https://api.github.com/teams/123456/repos"+ }+ , evMembershipOrg =+ HookOrganization+ { whOrgLogin = "baxterandthehackers"+ , whOrgId = 7649605+ , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"+ , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"+ , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"+ , whOrgHooksUrl = Nothing+ , whOrgIssuesUrl = Nothing+ , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"+ , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"+ , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=2"+ , whOrgDescription = T.empty+ }+ , evMembershipSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=2"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++milestoneEventFixture :: MilestoneEvent+milestoneEventFixture = MilestoneEvent+ { evMilestoneAction = MilestoneCreatedAction+ , evMilestoenPayload =+ HookMilestone+ { whMilestoneUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/milestones/3"+ , whMilestoneHtmlUrl =+ URL "https://github.com/baxterandthehackers/public-repo/milestones/Test%20milestone%20creation%20webhook%20from%20command%20line2"+ , whMilestoneLabelsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/milestones/3/labels"+ , whMilestoneId = 2055681+ , whMilestoneNumber = 3+ , whMilestoneTitle = "I am a milestone"+ , whMilestoneDescription = Nothing+ , whMilestoneCreator =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 7649605+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = True+ }+ , whMilestoneOpenIssues = 0+ , whMilestoneClosedIssues = 0+ , whMilestoneState = "open"+ , whMilestoneCreatedAt = read "2016-10-07 19:26:08"+ , whMilestoneUpdatedAt = read "2016-10-07 19:26:08"+ , whMilestoneDueOn = Nothing+ , whMilestoneClosedAt = Nothing+ }+ , evMilestoneRepo =+ HookRepository+ { whRepoId = 70275481+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterandthehackers/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterandthehackers"+ , whUserId = 4312013+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/4312013?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterandthehackers"+ , whUserHtmlUrl = URL "https://github.com/baxterandthehackers"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterandthehackers/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterandthehackers/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterandthehackers/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterandthehackers/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterandthehackers/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterandthehackers/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterandthehackers/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterandthehackers/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterandthehackers/received_events"+ , whUserType = OwnerOrganization+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = True+ , whRepoHtmlUrl = URL "https://github.com/baxterandthehackers/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2016-10-07 19:10:12"+ , whRepoUpdatedAt = read "2016-10-07 19:10:12"+ , whRepoPushedAt = read "2016-10-07 19:10:13"+ , whRepoGitUrl = URL "git://github.com/baxterandthehackers/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterandthehackers/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterandthehackers/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterandthehackers/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = False+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 0+ , whRepoDefaultBranchName = "master"+ }+ , evMilestoneOrg =+ HookOrganization+ { whOrgLogin = "baxterandthehackers"+ , whOrgId = 4312013+ , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"+ , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"+ , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"+ , whOrgHooksUrl = Just (URL "https://api.github.com/orgs/baxterandthehackers/hooks")+ , whOrgIssuesUrl = Just (URL "https://api.github.com/orgs/baxterandthehackers/issues")+ , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"+ , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"+ , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/4312013?v=3"+ , whOrgDescription = T.empty+ }+ , evMilestoneSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 7649605+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = True+ }+ }++orgBlockEventFixture :: OrgBlockEvent+orgBlockEventFixture = OrgBlockEvent+ { evOrgBlockAction = OrgBlockBlockedAction+ , evOrgBlockUser =+ HookUser+ { whUserLogin = "octocat"+ , whUserId = 583231+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/583231?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/octocat"+ , whUserHtmlUrl = URL "https://github.com/octocat"+ , whUserFollowersUrl = URL "https://api.github.com/users/octocat/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/octocat/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/octocat/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/octocat/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/octocat/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/octocat/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/octocat/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/octocat/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/octocat/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , evOrgBlockOrg =+ HookOrganization+ { whOrgLogin = "github"+ , whOrgId = 4366038+ , whOrgUrl = URL "https://api.github.com/orgs/github"+ , whOrgReposUrl = URL "https://api.github.com/orgs/github/repos"+ , whOrgEventsUrl = URL "https://api.github.com/orgs/github/events"+ , whOrgHooksUrl = Just $ URL "https://api.github.com/orgs/github/hooks"+ , whOrgIssuesUrl = Just $ URL "https://api.github.com/orgs/github/issues"+ , whOrgMembersUrl = URL "https://api.github.com/orgs/github/members{/member}"+ , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/github/public_members{/member}"+ , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/4366038?v=3"+ , whOrgDescription = T.empty+ }+ , evOrgBlockSender =+ HookUser+ { whUserLogin = "octodocs"+ , whUserId = 25781999+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/25781999?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/octodocs"+ , whUserHtmlUrl = URL "https://github.com/octodocs"+ , whUserFollowersUrl = URL "https://api.github.com/users/octodocs/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/octodocs/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/octodocs/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/octodocs/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/octodocs/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/octodocs/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/octodocs/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/octodocs/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/octodocs/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++organizationEventFixture :: OrganizationEvent+organizationEventFixture = OrganizationEvent+ { evOrganizationAction = OrgMemberInvitedAction+ , evOrganizationInvitation =+ HookOrganizationInvitation+ { whOrgInvitationId = 3294302+ , whOrgInvitationLogin = "baxterthehacker"+ , whOrgInvitationEmail = Nothing+ , whOrgInvitationRole = "direct_member"+ }+ , evOrganizationMembership =+ HookOrganizationMembership+ { whOrgMembershipUrl = URL "https://api.github.com/orgs/baxterandthehackers/memberships/baxterthehacker"+ , whOrgMembershipState = "active"+ , whOrgMembershipRole = "member"+ , whOrgMembershipOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"+ , whOrgMembershipUser =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 7649605+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/17085448?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }+ , evOrganizationOrg =+ HookOrganization+ { whOrgLogin = "baxterandthehackers"+ , whOrgId = 4312013+ , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"+ , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"+ , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"+ , whOrgHooksUrl = Just $ URL "https://api.github.com/orgs/baxterandthehackers/hooks"+ , whOrgIssuesUrl = Just $ URL "https://api.github.com/orgs/baxterandthehackers/issues"+ , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"+ , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"+ , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/4312013?v=3"+ , whOrgDescription = T.empty+ }+ , evOrganizationSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 7649605+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = True+ }+ }++pageBuildEventFixture :: PageBuildEvent+pageBuildEventFixture = PageBuildEvent+ { evPageBuildId = 15995382+ , evPageBuildResult =+ HookPageBuildResult+ { whPageBuildUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pages/builds/15995382"+ , whPageBuildStatus = "built"+ , whPageBuildError = Nothing+ , whPageBuildPusher =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whPageBuildCommitSha = "053b99542c83021d6b202d1a1f5ecd5ef7084e55"+ , whPageBuildDuration = 3790+ , whPageBuildCreatedAt = read "2015-05-05 23:40:13"+ , whPageBuildUpdatedAt = read "2015-05-05 23:40:17"+ }+ , evPageBuildRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:12"+ , whRepoPushedAt = read "2015-05-05 23:40:17"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 0+ , whRepoDefaultBranchName = "master"+ }+ , evPageBuildSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++projectCardEventFixture :: ProjectCardEvent+projectCardEventFixture = ProjectCardEvent+ { evProjectCardAction = ProjectCardCreatedAction+ , evProjectCardPayload =+ HookProjectCard+ { whProjectCardUrl = URL "https://api.github.com/projects/columns/cards/1266091"+ , whProjectCardColumnUrl = URL "https://api.github.com/projects/columns/515520"+ , whProjectCardColumnId = 515520+ , whProjectCardId = 1266091+ , whProjectCardNote = Nothing+ , whProjectCardCreator =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=2"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whProjectCardCreatedAt = read "2017-09-27 23:37:43"+ , whProjectCardUpdatedAt = read "2017-09-27 23:39:09"+ , whProjectCardContentUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/2"+ }+ , evProjectCardRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:12"+ , whRepoPushedAt = read "2015-05-05 23:40:27"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evProjectCardOrg =+ HookOrganization+ { whOrgLogin = "baxterandthehackers"+ , whOrgId = 7649605+ , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"+ , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"+ , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"+ , whOrgHooksUrl = Nothing+ , whOrgIssuesUrl = Nothing+ , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"+ , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"+ , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=2"+ , whOrgDescription = T.empty+ }+ , evProjectCardSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=2"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++projectColumnEventFixture :: ProjectColumnEvent+projectColumnEventFixture = ProjectColumnEvent+ { evProjectColumnAction = ProjectColumnCreatedAction+ , evProjectColumnPayload =+ HookProjectColumn+ { whProjectColumnUrl = URL "https://api.github.com/projects/columns/515520"+ , whProjectColumnProjUrl = URL "https://api.github.com/projects/288065"+ , whProjectColumnCardsUrl = URL "https://api.github.com/projects/columns/515520/cards"+ , whProjectColumnId = 515520+ , whProjectColumnName = "High Priority"+ , whProjectColumnCreatedAt = read "2017-09-27 23:37:43"+ , whProjectColumnUpdatedAt = read "2017-09-27 23:39:09"+ }+ , evProjectColumnRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:12"+ , whRepoPushedAt = read "2015-05-05 23:40:27"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evProjectColumnOrg =+ HookOrganization+ { whOrgLogin = "baxterandthehackers"+ , whOrgId = 7649605+ , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"+ , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"+ , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"+ , whOrgHooksUrl = Nothing+ , whOrgIssuesUrl = Nothing+ , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"+ , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"+ , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=2"+ , whOrgDescription = T.empty+ }+ , evProjectColumnSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=2"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++projectEventFixture :: ProjectEvent+projectEventFixture = ProjectEvent+ { evProjectEventAction = ProjectCreatedAction+ , evProjectPayload =+ HookProject+ { whProjectOwnerUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whProjectUrl = URL "https://api.github.com/projects/288065"+ , whProjectColumnsUrl = URL "https://api.github.com/projects/288065/columns"+ , whProjectId = 288065+ , whProjectName = "2017"+ , whProjectBody = "Roadmap for work to be done in 2017"+ , whProjectNumber = 10+ , whProjectState = "open"+ , whProjectCreator =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=2"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whProjectCreatedAt = read "2017-09-27 23:37:43"+ , whProjectUpdatedAt = read "2017-09-27 23:39:09"+ }+ , evProjectRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:12"+ , whRepoPushedAt = read "2015-05-05 23:40:27"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evProjectOrganization =+ HookOrganization+ { whOrgLogin = "baxterandthehackers"+ , whOrgId = 7649605+ , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"+ , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"+ , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"+ , whOrgHooksUrl = Nothing+ , whOrgIssuesUrl = Nothing+ , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"+ , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"+ , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=2"+ , whOrgDescription = T.empty+ }+ , evProjectSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=2"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++publicEventFixture :: PublicEvent+publicEventFixture = PublicEvent+ { evPublicEventRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:41"+ , whRepoPushedAt = read "2015-05-05 23:40:40"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evPublicEventSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++pullRequestEventFixture :: PullRequestEvent+pullRequestEventFixture = PullRequestEvent+ { evPullReqAction = PullRequestOpenedAction+ , evPullReqNumber = 1+ , evPullReqPayload =+ HookPullRequest+ { whPullReqUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1"+ , whPullReqId = 34778301+ , whPullReqHtmlUrl = URL "https://github.com/baxterthehacker/public-repo/pull/1"+ , whPullReqDiffUrl = URL "https://github.com/baxterthehacker/public-repo/pull/1.diff"+ , whPullReqPatchUrl = URL "https://github.com/baxterthehacker/public-repo/pull/1.patch"+ , whPullReqIssueUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/1"+ , whPullReqNumber = 1+ , whPullReqState = "open"+ , whPullReqIsLocked = False+ , whPullReqTitle = "Update the README with new information"+ , whPullReqUser =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whPullReqBody = "This is a pretty simple change that we need to pull into master."+ , whPullReqCreatedAt = read "2015-05-05 23:40:27"+ , whPullReqUpdatedAt = read "2015-05-05 23:40:27"+ , whPullReqClosedAt = Nothing+ , whPullReqMergedAt = Nothing+ , whPullReqMergeCommitSha = Nothing+ , whPullReqAssignee = Nothing+ , whPullReqMilestone = Nothing+ , whPullReqCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1/commits"+ , whPullReqRevCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1/comments"+ , whPullReqRevCommentUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/comments{/number}"+ , whPullReqCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/1/comments"+ , whPullReqStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"+ , whPullReqCommentCount = Just 0+ , whPullReqRevCommentCount = Just 0+ , whPullReqCommitCount = Just 1+ , whPullReqAdditionsCount = Just 1+ , whPullReqDeletionsCount = Just 1+ , whPullReqFileChangeCount = Just 1+ }+ , evPullReqRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:12"+ , whRepoPushedAt = read "2015-05-05 23:40:26"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 1+ , whRepoDefaultBranchName = "master"+ }+ , evPullReqSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , evPullReqInstallationId = 234+ }++pullRequestReviewCommentEventFixture :: PullRequestReviewCommentEvent+pullRequestReviewCommentEventFixture = PullRequestReviewCommentEvent+ { evPullReqRevComAction = PullRequestReviewCommentCreatedAction+ , evPullReqRevComment =+ HookPullRequestReviewComment+ { whPullReqRevComUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/comments/29724692"+ , whPullReqRevComId = 29724692+ , whPullReqRevComDiffHunk = "@@ -1 +1 @@\n-# public-repo"+ , whPullReqRevComPath = "README.md"+ , whPullReqRevComPos = 1+ , whPullReqRevComOrigPos = 1+ , whPullReqRevComCommitSha = "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"+ , whPullReqRevComOrigSha = "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"+ , whPullReqRevComUser =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whPullReqRevComBody = "Maybe you should use more emojji on this line."+ , whPullReqRevComCreatedAt = read "2015-05-05 23:40:27"+ , whPullReqRevComUpdatedAt = read "2015-05-05 23:40:27"+ , whPullReqRevComHtmlUrl = URL "https://github.com/baxterthehacker/public-repo/pull/1#discussion_r29724692"+ , whPullReqRevComPullReqUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1"+ }+ , evPullReqRevTarget =+ HookPullRequest+ { whPullReqUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1"+ , whPullReqId = 34778301+ , whPullReqHtmlUrl = URL "https://github.com/baxterthehacker/public-repo/pull/1"+ , whPullReqDiffUrl = URL "https://github.com/baxterthehacker/public-repo/pull/1.diff"+ , whPullReqPatchUrl = URL "https://github.com/baxterthehacker/public-repo/pull/1.patch"+ , whPullReqIssueUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/1"+ , whPullReqNumber = 1+ , whPullReqState = "open"+ , whPullReqIsLocked = False+ , whPullReqTitle = "Update the README with new information"+ , whPullReqUser =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whPullReqBody = "This is a pretty simple change that we need to pull into master."+ , whPullReqCreatedAt = read "2015-05-05 23:40:27"+ , whPullReqUpdatedAt = read "2015-05-05 23:40:27"+ , whPullReqClosedAt = Nothing+ , whPullReqMergedAt = Nothing+ , whPullReqMergeCommitSha = Just "18721552ba489fb84e12958c1b5694b5475f7991"+ , whPullReqAssignee = Nothing+ , whPullReqMilestone = Nothing+ , whPullReqCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1/commits"+ , whPullReqRevCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1/comments"+ , whPullReqRevCommentUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/comments{/number}"+ , whPullReqCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/1/comments"+ , whPullReqStatusesUrl =+ URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"+ , whPullReqCommentCount = Nothing+ , whPullReqRevCommentCount = Nothing+ , whPullReqCommitCount = Nothing+ , whPullReqAdditionsCount = Nothing+ , whPullReqDeletionsCount = Nothing+ , whPullReqFileChangeCount = Nothing+ }+ , evPullReqRevRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:12"+ , whRepoPushedAt = read "2015-05-05 23:40:27"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 1+ , whRepoDefaultBranchName = "master"+ }+ , evPullReqRevSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++pullRequestReviewEventFixture :: PullRequestReviewEvent+pullRequestReviewEventFixture = PullRequestReviewEvent+ { evPullReqReviewAction = PullRequestReviewSubmittedAction+ , evPullReqReviewPayload =+ HookPullRequestReview+ { whPullReqReviewId = 2626884+ , whPullReqReviewUser =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whPullReqReviewBody = "Looks great!"+ , whPullReqReviewSubmittedAt = read "2016-10-03 23:39:09"+ , whPullReqReviewState = "approved"+ , whPullReqReviewHtmlUrl = URL "https://github.com/baxterthehacker/public-repo/pull/8#pullrequestreview-2626884"+ , whPullReqReviewPullUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/8"+ }+ , evPullReqReviewTarget =+ HookPullRequest+ { whPullReqUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/8"+ , whPullReqId = 87811438+ , whPullReqHtmlUrl = URL "https://github.com/baxterthehacker/public-repo/pull/8"+ , whPullReqDiffUrl = URL "https://github.com/baxterthehacker/public-repo/pull/8.diff"+ , whPullReqPatchUrl = URL "https://github.com/baxterthehacker/public-repo/pull/8.patch"+ , whPullReqIssueUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/8"+ , whPullReqNumber = 8+ , whPullReqState = "open"+ , whPullReqIsLocked = False+ , whPullReqTitle = "Add a README description"+ , whPullReqUser =+ HookUser+ { whUserLogin = "skalnik"+ , whUserId = 2546+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/2546?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/skalnik"+ , whUserHtmlUrl = URL "https://github.com/skalnik"+ , whUserFollowersUrl = URL "https://api.github.com/users/skalnik/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/skalnik/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/skalnik/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/skalnik/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/skalnik/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/skalnik/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/skalnik/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/skalnik/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/skalnik/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = True+ }+ , whPullReqBody = "Just a few more details"+ , whPullReqCreatedAt = read "2016-10-03 23:37:43"+ , whPullReqUpdatedAt = read "2016-10-03 23:39:09"+ , whPullReqClosedAt = Nothing+ , whPullReqMergedAt = Nothing+ , whPullReqMergeCommitSha = Just "faea154a7decef6819754aab0f8c0e232e6c8b4f"+ , whPullReqAssignee = Nothing+ , whPullReqMilestone = Nothing+ , whPullReqCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/8/commits"+ , whPullReqRevCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/8/comments"+ , whPullReqRevCommentUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/comments{/number}"+ , whPullReqCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/8/comments"+ , whPullReqStatusesUrl =+ URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/b7a1f9c27caa4e03c14a88feb56e2d4f7500aa63"+ , whPullReqCommentCount = Nothing+ , whPullReqRevCommentCount = Nothing+ , whPullReqCommitCount = Nothing+ , whPullReqAdditionsCount = Nothing+ , whPullReqDeletionsCount = Nothing+ , whPullReqFileChangeCount = Nothing+ }+ , evPullReqReviewRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2016-08-15 17:19:01"+ , whRepoPushedAt = read "2016-10-03 23:37:43"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 233+ , whRepoStargazersCount = 2+ , whRepoWatchersCount = 2+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 2+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 5+ , whRepoDefaultBranchName = "master"+ }+ , evPullReqReviewSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++pushEventFixture :: PushEvent+pushEventFixture = PushEvent+ { evPushRef = "refs/heads/changes"+ , evPushHeadSha = Just "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"+ , evPushBeforeSha = Just "9049f1265b7d61be4a8904a9a27120d2064dab3b"+ , evPushCreated = False+ , evPushDeleted = False+ , evPushForced = False+ , evPushBaseRef = Nothing+ , evPushCompareUrl = URL "https://github.com/baxterthehacker/public-repo/compare/9049f1265b7d...0d1a26e67d8f"+ , evPushCommits =+ Just $ V.fromList+ [ HookCommit+ { whCommitSha = "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"+ , whCommitUrl = URL "https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"+ , whCommitHtmlUrl = Nothing+ , whCommitCommentsUrl = Nothing+ , whCommitAuthor =+ Left+ HookSimpleUser+ { whSimplUserName = "baxterthehacker"+ , whSimplUserEmail = "baxterthehacker@users.noreply.github.com"+ , whSimplUserLogin = Just "baxterthehacker"+ }+ , whCommitCommitter =+ Left+ HookSimpleUser+ { whSimplUserName = "baxterthehacker"+ , whSimplUserEmail = "baxterthehacker@users.noreply.github.com"+ , whSimplUserLogin = Just "baxterthehacker"+ }+ }+ ]+ , evPushHeadCommit =+ Just+ HookCommit+ { whCommitSha = "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"+ , whCommitUrl = URL "https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c"+ , whCommitHtmlUrl = Nothing+ , whCommitCommentsUrl = Nothing+ , whCommitAuthor =+ Left+ HookSimpleUser+ { whSimplUserName = "baxterthehacker"+ , whSimplUserEmail = "baxterthehacker@users.noreply.github.com"+ , whSimplUserLogin = Just "baxterthehacker"+ }+ , whCommitCommitter =+ Left+ HookSimpleUser+ { whSimplUserName = "baxterthehacker"+ , whSimplUserEmail = "baxterthehacker@users.noreply.github.com"+ , whSimplUserLogin = Just "baxterthehacker"+ }+ }+ , evPushRepository =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Left+ HookSimpleUser+ { whSimplUserName = "baxterthehacker" , whSimplUserEmail = "baxterthehacker@users.noreply.github.com" , whSimplUserLogin = Nothing }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:12"+ , whRepoPushedAt = read "2015-05-05 23:40:17"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 0+ , whRepoDefaultBranchName = "master"+ }+ , evPushOrganization = Nothing+ , evPushSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++releaseEventFixture :: ReleaseEvent+releaseEventFixture = ReleaseEvent+ { evReleaseEventAction = ReleasePublishedAction+ , evReleaseEventPayload =+ HookRelease+ { whReleaseUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases/1261438"+ , whReleaseAssetsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases/1261438/assets"+ , whReleaseUploadUrl = URL "https://uploads.github.com/repos/baxterthehacker/public-repo/releases/1261438/assets{?name}"+ , whReleaseHtmlUrl = URL "https://github.com/baxterthehacker/public-repo/releases/tag/0.0.1"+ , whReleaseId = 1261438+ , whReleaseTagName = "0.0.1"+ , whReleaseTargetCommitish = "master"+ , whReleaseName = Nothing+ , whReleaseIsDraft = False+ , whReleaseAuthor =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whReleaseIsPreRelease = False+ , whReleaseCreatedAt = read "2015-05-05 23:40:12"+ , whReleasePublishedAt = Just $ read "2015-05-05 23:40:38"+ , whReleaseTarballUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tarball/0.0.1"+ , whReleaseZipballUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/zipball/0.0.1"+ , whReleaseBody = Nothing+ }+ , evReleaseEventRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:30"+ , whRepoPushedAt = read "2015-05-05 23:40:38"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evReleaseEventSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++repositoryEventFixture :: RepositoryEvent+repositoryEventFixture = RepositoryEvent+ { evRepositoryAction = RepositoryCreatedAction+ , evRepositoryTarget =+ HookRepository+ { whRepoId = 27496774+ , whRepoName = "new-repository"+ , whRepoFullName = "baxterandthehackers/new-repository"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterandthehackers"+ , whUserId = 7649605+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterandthehackers"+ , whUserHtmlUrl = URL "https://github.com/baxterandthehackers"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterandthehackers/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterandthehackers/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterandthehackers/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterandthehackers/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterandthehackers/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterandthehackers/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterandthehackers/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterandthehackers/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterandthehackers/received_events"+ , whUserType = OwnerOrganization+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = True+ , whRepoHtmlUrl = URL "https://github.com/baxterandthehackers/new-repository"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/issues/comments/{number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/milestones{/number}"+ , whRepoNotificationsUrl =+ URL "https://api.github.com/repos/baxterandthehackers/new-repository/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterandthehackers/new-repository/releases{/id}"+ , whRepoCreatedAt = read "2014-12-03 16:39:25"+ , whRepoUpdatedAt = read "2014-12-03 16:39:25"+ , whRepoPushedAt = read "2014-12-03 16:39:25"+ , whRepoGitUrl = URL "git://github.com/baxterandthehackers/new-repository.git"+ , whRepoSshUrl = URL "git@github.com:baxterandthehackers/new-repository.git"+ , whRepoCloneUrl = URL "https://github.com/baxterandthehackers/new-repository.git"+ , whRepoSvnUrl = URL "https://github.com/baxterandthehackers/new-repository"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = False+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 0+ , whRepoDefaultBranchName = "master"+ }+ , evRepositoryOrg =+ Just+ HookOrganization+ { whOrgLogin = "baxterandthehackers"+ , whOrgId = 7649605+ , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"+ , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"+ , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"+ , whOrgHooksUrl = Nothing+ , whOrgIssuesUrl = Nothing+ , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"+ , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"+ , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=2"+ , whOrgDescription = T.empty+ }+ , evRepositorySender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=2"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++statusEventFixture :: StatusEvent+statusEventFixture = StatusEvent+ { evStatusId = 214015194+ , evStatusCommitSha = "9049f1265b7d61be4a8904a9a27120d2064dab3b"+ , evStatusCommitName = "baxterthehacker/public-repo"+ , evStatusTargetUrl = Nothing+ , evStatusContext = "default"+ , evStatusDescription = Nothing+ , evStatusState = StatusSuccessState+ , evStatusCommit =+ HookCommit+ { whCommitSha = "9049f1265b7d61be4a8904a9a27120d2064dab3b"+ , whCommitUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits/9049f1265b7d61be4a8904a9a27120d2064dab3b"+ , whCommitHtmlUrl = Just $ URL "https://github.com/baxterthehacker/public-repo/commit/9049f1265b7d61be4a8904a9a27120d2064dab3b"+ , whCommitCommentsUrl =+ Just $ URL "https://api.github.com/repos/baxterthehacker/public-repo/commits/9049f1265b7d61be4a8904a9a27120d2064dab3b/comments"+ , whCommitAuthor =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whCommitCommitter =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }+ , evStatusCreatedAt = read "2015-05-05 23:40:39"+ , evStatusUpdatedAt = read "2015-05-05 23:40:39"+ , evStatusRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:30"+ , whRepoPushedAt = read "2015-05-05 23:40:39"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evStatusSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++teamAddEventFixture :: TeamAddEvent+teamAddEventFixture = TeamAddEvent+ { evTeamAddTarget =+ Just+ HookTeam+ { whTeamName = "github"+ , whTeamId = 836012+ , whTeamSlug = "github"+ , whTeamPermission = "pull"+ , whTeamUrl = URL "https://api.github.com/teams/836012"+ , whTeamMembersUrl = URL "https://api.github.com/teams/836012/members{/member}"+ , whTeamRepositoriesUrl = URL "https://api.github.com/teams/836012/repos"+ }+ , evTeamAddRepo =+ HookRepository+ { whRepoId = 35129393+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterandthehackers/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterandthehackers"+ , whUserId = 7649605+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterandthehackers"+ , whUserHtmlUrl = URL "https://github.com/baxterandthehackers"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterandthehackers/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterandthehackers/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterandthehackers/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterandthehackers/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterandthehackers/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterandthehackers/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterandthehackers/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterandthehackers/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterandthehackers/received_events"+ , whUserType = OwnerOrganization+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterandthehackers/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = True+ , whRepoUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterandthehackers/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:30"+ , whRepoUpdatedAt = read "2015-05-05 23:40:30"+ , whRepoPushedAt = read "2015-05-05 23:40:27"+ , whRepoGitUrl = URL "git://github.com/baxterandthehackers/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterandthehackers/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterandthehackers/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterandthehackers/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = False+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 0+ , whRepoDefaultBranchName = "master"+ }+ , evTeamAddOrg =+ HookOrganization+ { whOrgLogin = "baxterandthehackers"+ , whOrgId = 7649605+ , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"+ , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"+ , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"+ , whOrgHooksUrl = Nothing+ , whOrgIssuesUrl = Nothing+ , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"+ , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"+ , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=3"+ , whOrgDescription = T.empty+ }+ , evTeamAddSender =+ HookUser+ { whUserLogin = "baxterandthehackers"+ , whUserId = 7649605+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/7649605?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterandthehackers"+ , whUserHtmlUrl = URL "https://github.com/baxterandthehackers"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterandthehackers/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterandthehackers/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterandthehackers/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterandthehackers/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterandthehackers/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterandthehackers/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterandthehackers/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterandthehackers/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterandthehackers/received_events"+ , whUserType = OwnerOrganization+ , whUserIsAdminOfSite = False+ }+ }++teamEventFixture :: TeamEvent+teamEventFixture = TeamEvent+ { evTeamAction = TeamCreatedAction+ , evTeamTarget =+ HookTeam+ { whTeamName = "team baxter"+ , whTeamId = 2175394+ , whTeamSlug = "team-baxter"+ , whTeamPermission = "pull"+ , whTeamUrl = URL "https:/api.github.com/teams/2175394"+ , whTeamMembersUrl = URL "https:/api.github.com/teams/2175394/members{/member}"+ , whTeamRepositoriesUrl = URL "https:/api.github.com/teams/2175394/repos"+ }+ , evTeamOrganization =+ HookOrganization+ { whOrgLogin = "baxterandthehackers"+ , whOrgId = 4312013+ , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"+ , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"+ , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"+ , whOrgHooksUrl = Just $ URL "https://api.github.com/orgs/baxterandthehackers/hooks"+ , whOrgIssuesUrl = Just $ URL "https://api.github.com/orgs/baxterandthehackers/issues"+ , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"+ , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"+ , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/4312013?v=3"+ , whOrgDescription = T.empty+ }+ , evTeamSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }++watchEventFixture :: WatchEvent+watchEventFixture = WatchEvent+ { evWatchAction = WatchStartedAction+ , evWatchRepo =+ HookRepository+ { whRepoId = 35129377+ , whRepoName = "public-repo"+ , whRepoFullName = "baxterthehacker/public-repo"+ , whRepoOwner =+ Right HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ , whRepoIsPrivate = False+ , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoDescription = ""+ , whRepoIsAFork = False+ , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"+ , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"+ , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"+ , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"+ , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"+ , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"+ , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"+ , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"+ , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"+ , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"+ , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"+ , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"+ , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"+ , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"+ , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"+ , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"+ , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"+ , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"+ , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"+ , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"+ , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"+ , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"+ , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"+ , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"+ , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"+ , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"+ , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"+ , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"+ , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"+ , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"+ , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"+ , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"+ , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"+ , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"+ , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"+ , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"+ , whRepoCreatedAt = read "2015-05-05 23:40:12"+ , whRepoUpdatedAt = read "2015-05-05 23:40:30"+ , whRepoPushedAt = read "2015-05-05 23:40:27"+ , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"+ , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"+ , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"+ , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"+ , whRepoHomepage = Nothing+ , whRepoSize = 0+ , whRepoStargazersCount = 0+ , whRepoWatchersCount = 0+ , whRepoLanguage = Nothing+ , whRepoHasIssues = True+ , whRepoHasDownloads = True+ , whRepoHasWiki = True+ , whRepoHasPages = True+ , whRepoForkCount = 0+ , whRepoMirrorUrl = Nothing+ , whRepoOpenIssuesCount = 2+ , whRepoDefaultBranchName = "master"+ }+ , evWatchSender =+ HookUser+ { whUserLogin = "baxterthehacker"+ , whUserId = 6752317+ , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"+ , whUserGravatarId = URL ""+ , whUserUrl = URL "https://api.github.com/users/baxterthehacker"+ , whUserHtmlUrl = URL "https://github.com/baxterthehacker"+ , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"+ , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"+ , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"+ , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"+ , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"+ , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"+ , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"+ , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"+ , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"+ , whUserType = OwnerUser+ , whUserIsAdminOfSite = False+ }+ }
+ spec/Spec.hs view
@@ -0,0 +1,1 @@+{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
+ src/GitHub/Data/Webhooks/Events.hs view
@@ -0,0 +1,1434 @@+--+module GitHub.Data.Webhooks.Events+ ( EventHasSender(..)+ , EventHasRepo(..)+ --+ , CommitCommentEvent(..)+ , CommitCommentEventAction(..)+ --+ , CreateEvent(..)+ --+ , DeleteEvent(..)+ --+ , DeploymentEvent(..)+ --+ , DeploymentStatusEvent(..)+ -- Deprecated events+ , DownloadEvent(..)+ , FollowEvent(..)+ , ForkEvent(..)+ , ForkApplyEvent(..)+ , GistEvent(..)+ --+ , GollumEvent(..)+ --+ , InstallationEvent(..)+ , InstallationEventAction(..)+ --+ , InstallationRepositoriesEvent(..)+ , InstallationRepoEventAction(..)+ --+ , IssueCommentEvent(..)+ , IssueCommentEventAction(..)+ --+ , IssuesEvent(..)+ , IssuesEventAction(..)+ --+ , LabelEvent(..)+ , LabelEventAction(..)+ --+ , MemberEvent(..)+ , MemberEventAction(..)+ --+ , MembershipEvent(..)+ , MembershipEventAction(..)+ --+ , MilestoneEvent(..)+ , MilestoneEventAction(..)+ --+ , OrganizationEvent(..)+ , OrganizationEventAction(..)+ --+ , OrgBlockEvent(..)+ , OrgBlockEventAction(..)+ --+ , PageBuildEvent(..)+ --+ , ProjectCardEvent(..)+ , ProjectCardEventAction(..)+ --+ , ProjectColumnEvent(..)+ , ProjectColumnEventAction(..)+ --+ , ProjectEvent(..)+ , ProjectEventAction(..)+ --+ , PublicEvent(..)+ --+ , PullRequestEvent(..)+ , PullRequestEventAction(..)+ --+ , PullRequestReviewEvent(..)+ , PullRequestReviewEventAction(..)+ --+ , PullRequestReviewCommentEvent(..)+ , PullRequestReviewCommentEventAction(..)+ --+ , PushEvent(..)+ --+ , ReleaseEvent(..)+ , ReleaseEventAction(..)+ --+ , RepositoryEvent(..)+ , RepositoryEventAction(..)+ --+ , StatusEvent(..)+ , StatusEventState(..)+ --+ , TeamEvent(..)+ , TeamEventAction(..)+ --+ , TeamAddEvent(..)+ --+ , WatchEvent(..)+ , WatchEventAction(..)+ ) where++import Data.Aeson (FromJSON(..), withObject, withText, (.:), (.:?))+import Control.DeepSeq (NFData(..))+import Control.DeepSeq.Generics (genericRnf)+import Data.Data (Data, Typeable)+import Data.Time (UTCTime)+import Data.Text (Text)+import Data.Vector (Vector)+import GHC.Generics (Generic)++import GitHub.Data.Webhooks.Payload+++class EventHasSender eventKind where+ -- | Provides the sender context of a Webhook event.+ senderOfEvent :: eventKind -> HookUser++class EventHasRepo eventKind where+ -- | Provides the repository context of a Webhook event.+ repoForEvent :: eventKind -> HookRepository+++data CommitCommentEventAction+ -- | Decodes from "created"+ = CommitCommentActionCreated+ -- | The result of decoding an unknown commit comment event action type+ | CommitCommentActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData CommitCommentEventAction where rnf = genericRnf++instance FromJSON CommitCommentEventAction where+ parseJSON = withText "Commit comment event action" $ \t ->+ case t of+ "created" -> pure CommitCommentActionCreated+ _ -> pure (CommitCommentActionOther t)++-- | Triggered when a commit comment is created.+-- See <https://developer.github.com/v3/activity/events/types/#commitcommentevent>.+data CommitCommentEvent = CommitCommentEvent+ { evCommitCommentAction :: !CommitCommentEventAction+ , evCommitCommentPayload :: !HookCommitComment+ , evCommitCommentRepo :: !HookRepository+ , evCommitCommentSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender CommitCommentEvent where senderOfEvent = evCommitCommentSender+instance EventHasRepo CommitCommentEvent where repoForEvent = evCommitCommentRepo+instance NFData CommitCommentEvent where rnf = genericRnf+++-- | Represents a created repository, branch, or tag.+-- Note: webhooks will not receive this event for created repositories.+-- Additionally, webhooks will not receive this event for tags if more than three tags are pushed at once.+-- See <https://developer.github.com/v3/activity/events/types/#createevent>.+data CreateEvent = CreateEvent+ { evCreateRef :: !Text+ , evCreateRefType :: !Text+ , evCreateMasterBranch :: !Text+ , evCreateDescription :: !Text+ , evCreatePusherType :: !OwnerType+ , evCreateRepo :: !HookRepository+ , evCreateSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender CreateEvent where senderOfEvent = evCreateSender+instance EventHasRepo CreateEvent where repoForEvent = evCreateRepo+instance NFData CreateEvent where rnf = genericRnf+++-- | Represents a deleted branch or tag.+-- Note: webhooks will not receive this event for tags if more than three tags are deleted at once.+-- See <https://developer.github.com/v3/activity/events/types/#deleteevent>.+data DeleteEvent = DeleteEvent+ { evDeleteRef :: !Text+ , evDeleteRefType :: !Text+ , evDeletePusherType :: !OwnerType+ , evDeleteRepo :: !HookRepository+ , evDeleteSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender DeleteEvent where senderOfEvent = evDeleteSender+instance EventHasRepo DeleteEvent where repoForEvent = evDeleteRepo+instance NFData DeleteEvent where rnf = genericRnf+++-- | Represents a deployment.+-- Events of this type are not visible in timelines. These events are only used to trigger hooks.+-- See <https://developer.github.com/v3/activity/events/types/#deploymentevent>.+data DeploymentEvent = DeploymentEvent+ { evDeploymentInfo :: !HookDeployment+ , evDeploymentRepo :: !HookRepository+ , evDeploymentSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender DeploymentEvent where senderOfEvent = evDeploymentSender+instance EventHasRepo DeploymentEvent where repoForEvent = evDeploymentRepo+instance NFData DeploymentEvent where rnf = genericRnf+++-- | Represents a deployment status.+-- Events of this type are not visible in timelines. These events are only used to trigger hooks.+-- See <https://developer.github.com/v3/activity/events/types/#deploymentstatusevent>.+data DeploymentStatusEvent = DeploymentStatusEvent+ { evDeplStatusInfo :: !HookDeploymentStatus+ , evDeplStatusDeployment :: !HookDeployment+ , evDeplStatusRepo :: !HookRepository+ , evDeplStatusSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender DeploymentStatusEvent where senderOfEvent = evDeplStatusSender+instance EventHasRepo DeploymentStatusEvent where repoForEvent = evDeplStatusRepo+instance NFData DeploymentStatusEvent where rnf = genericRnf+++-- | Triggered when a new download is created.+-- Events of this kind are no longer delivered.+-- See <https://developer.github.com/v3/activity/events/types/#downloadevent>.+data DownloadEvent = DownloadEvent++-- | Triggered when a user follows another user.+-- Events of this kind are no longer delivered.+-- See <https://developer.github.com/v3/activity/events/types/#downloadevent>.+data FollowEvent = FollowEvent++-- | Triggered when a user forks a repository.+-- See <https://developer.github.com/v3/activity/events/types/#forkevent>.+data ForkEvent = ForkEvent+ { evForkDestination :: !HookRepository+ , evForkSource :: !HookRepository+ , evForkSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender ForkEvent where senderOfEvent = evForkSender+instance EventHasRepo ForkEvent where repoForEvent = evForkSource+instance NFData ForkEvent where rnf = genericRnf+++-- | Triggered when a patch is applied in the Fork Queue.+-- Events of this kind are no longer delivered.+-- See <https://developer.github.com/v3/activity/events/types/#forkapplyevent>.+data ForkApplyEvent = ForkApplyEvent+++-- | Triggered when a Gist is created or updated.+-- Events of this kind are no longer delivered.+-- See <https://developer.github.com/v3/activity/events/types/#gistevent>.+data GistEvent = GistEvent+++-- | Triggered when a Wiki page is created or updated.+-- See <https://developer.github.com/v3/activity/events/types/#gollumevent>.+data GollumEvent = GollumEvent+ { evGollumPages :: !(Vector HookWikiPage)+ , evGollumRepo :: !HookRepository+ , evGollumSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender GollumEvent where senderOfEvent = evGollumSender+instance EventHasRepo GollumEvent where repoForEvent = evGollumRepo+instance NFData GollumEvent where rnf = genericRnf+++data InstallationEventAction+ -- | Decodes from "created"+ = InstallationCreatedAction+ -- | Decodes from "deleted"+ | InstallationDeletedAction+ -- | The result of decoding an unknown installation event action type+ | InstallationActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData InstallationEventAction where rnf = genericRnf++instance FromJSON InstallationEventAction where+ parseJSON = withText "Installation event action" $ \t ->+ case t of+ "created" -> pure InstallationCreatedAction+ "deleted" -> pure InstallationDeletedAction+ _ -> pure (InstallationActionOther t)++-- | Triggered when a GitHub App has been installed or uninstalled.+-- See <https://developer.github.com/v3/activity/events/types/#installationevent>.+data InstallationEvent = InstallationEvent+ { evInstallationAction :: !InstallationEventAction+ , evInstallationInfo :: !HookInstallation+ , evInstallationSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender InstallationEvent where senderOfEvent = evInstallationSender+instance NFData InstallationEvent where rnf = genericRnf+++data InstallationRepoEventAction+ -- | Decodes from "created"+ = InstallationRepoCreatedAction+ -- | Decodes from "removed"+ | InstallationRepoRemovedAction+ -- | The result of decoding an unknown installation repo event action type+ | InstallationRepoActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData InstallationRepoEventAction where rnf = genericRnf++instance FromJSON InstallationRepoEventAction where+ parseJSON = withText "Installation repo event action" $ \t ->+ case t of+ "created" -> pure InstallationRepoCreatedAction+ "removed" -> pure InstallationRepoRemovedAction+ _ -> pure (InstallationRepoActionOther t)++-- | Triggered when a repository is added or removed from an installation.+-- See <https://developer.github.com/v3/activity/events/types/#installationrepositoriesevent>.+data InstallationRepositoriesEvent = InstallationRepositoriesEvent+ { evInstallationRepoAction :: !InstallationRepoEventAction+ , evInstallationRepoInfo :: !HookInstallation+ , evInstallationRepoSel :: !Text+ , evInstallationReposAdd :: !(Vector HookRepositorySimple)+ , evInstallationReposRemove :: !(Vector HookRepositorySimple)+ , evInstallationReposSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender InstallationRepositoriesEvent where senderOfEvent = evInstallationReposSender+instance NFData InstallationRepositoriesEvent where rnf = genericRnf+++data IssueCommentEventAction+ -- | Decodes from "created"+ = IssueCommentCreatedAction+ -- | Decodes from "edited"+ | IssueCommentEditedAction+ -- | Decodes from "deleted"+ | IssueCommentDeletedAction+ -- | The result of decoding an unknown issue comment event action type+ | IssueCommentActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData IssueCommentEventAction where rnf = genericRnf++instance FromJSON IssueCommentEventAction where+ parseJSON = withText "Issue comment event action" $ \t ->+ case t of+ "created" -> pure IssueCommentCreatedAction+ "edited" -> pure IssueCommentEditedAction+ "deleted" -> pure IssueCommentDeletedAction+ _ -> pure (IssueCommentActionOther t)++-- | Triggered when an issue comment is created, edited, or deleted.+-- See <https://developer.github.com/v3/activity/events/types/#issuecommentevent>.+data IssueCommentEvent = IssueCommentEvent+ { evIssueCommentAction :: !IssueCommentEventAction+ , evIssueCommentIssue :: !HookIssue+ , evIssueCommentPayload :: !HookIssueComment+ , evIssueCommentRepo :: !HookRepository+ , evIssueCommentSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender IssueCommentEvent where senderOfEvent = evIssueCommentSender+instance EventHasRepo IssueCommentEvent where repoForEvent = evIssueCommentRepo+instance NFData IssueCommentEvent where rnf = genericRnf+++data IssuesEventAction+ -- | Decodes from "assigned"+ = IssuesAssignedAction+ -- | Decodes from "unassigned"+ | IssuesUnassignedAction+ -- | Decodes from "labeled"+ | IssuesLabeledAction+ -- | Decodes from "unlabeled"+ | IssuesUnlabeledAction+ -- | Decodes from "opened"+ | IssuesOpenedAction+ -- | Decodes from "edited"+ | IssuesEditedAction+ -- | Decodes from "milestoned"+ | IssuesMilestonedAction+ -- | Decodes from "demilestoned"+ | IssuesDemilestonedAction+ -- | Decodes from "closed"+ | IssuesClosedAction+ -- | Decodes from "reopened"+ | IssuesReopenedAction+ -- | The result of decoding an unknown issue comment event action type+ | IssuesActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData IssuesEventAction where rnf = genericRnf++instance FromJSON IssuesEventAction where+ parseJSON = withText "Issue comment event action" $ \t ->+ case t of+ "assigned" -> pure IssuesAssignedAction+ "unassigned" -> pure IssuesUnassignedAction+ "labeled" -> pure IssuesLabeledAction+ "unlabeled" -> pure IssuesUnlabeledAction+ "opened" -> pure IssuesOpenedAction+ "edited" -> pure IssuesEditedAction+ "milestoned" -> pure IssuesMilestonedAction+ "demilestoned" -> pure IssuesDemilestonedAction+ "closed" -> pure IssuesClosedAction+ "reopened" -> pure IssuesReopenedAction+ _ -> pure (IssuesActionOther t)++-- | Triggered when an issue is assigned, unassigned, labeled,+-- unlabeled, opened, edited, milestoned, demilestoned, closed, or reopened.+-- See <https://developer.github.com/v3/activity/events/types/#issuesevent>.+data IssuesEvent = IssuesEvent+ { evIssuesEventAction :: !IssuesEventAction+ , evIssuesEventIssue :: !HookIssue+ , evIssuesEventRepo :: !HookRepository+ , evIssuesEventSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender IssuesEvent where senderOfEvent = evIssuesEventSender+instance EventHasRepo IssuesEvent where repoForEvent = evIssuesEventRepo+instance NFData IssuesEvent where rnf = genericRnf+++data LabelEventAction+ -- | Decodes from "created"+ = LabelCreatedAction+ -- | Decodes from "edited"+ | LabelEditedAction+ -- | Decodes from "deleted"+ | LabelDeletedAction+ -- | The result of decoding an unknown label event action type+ | LabelActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData LabelEventAction where rnf = genericRnf++instance FromJSON LabelEventAction where+ parseJSON = withText "Label event action" $ \t ->+ case t of+ "created" -> pure LabelCreatedAction+ "edited" -> pure LabelEditedAction+ "deleted" -> pure LabelDeletedAction+ _ -> pure (LabelActionOther t)++-- | Triggered when a repository's label is created, edited, or deleted.+-- Events of this type are not visible in timelines. These events are only used to trigger hooks.+-- See <https://developer.github.com/v3/activity/events/types/#labelevent>.+data LabelEvent = LabelEvent+ { evLabelEventAction :: !LabelEventAction+ , evLabelEventPayload :: !HookRepositoryLabel+ , evLabelEventRepo :: !HookRepository+ , evLabelEventOrganization :: !(Maybe HookOrganization)+ , evLabelEventSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender LabelEvent where senderOfEvent = evLabelEventSender+instance EventHasRepo LabelEvent where repoForEvent = evLabelEventRepo+instance NFData LabelEvent where rnf = genericRnf+++data MemberEventAction+ -- | Decodes from "added"+ = MemberAddedAction+ -- | Decodes from "edited"+ | MemberEditedAction+ -- | Decodes from "deleted"+ | MemberDeletedAction+ -- | The result of decoding an unknown label event action type+ | MemberActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData MemberEventAction where rnf = genericRnf++instance FromJSON MemberEventAction where+ parseJSON = withText "Member event action" $ \t ->+ case t of+ "added" -> pure MemberAddedAction+ "edited" -> pure MemberEditedAction+ "deleted" -> pure MemberDeletedAction+ _ -> pure (MemberActionOther t)++-- | Triggered when a user is added or removed as a collaborator to a repository, or has their permissions changed.+-- See <https://developer.github.com/v3/activity/events/types/#memberevent>.+data MemberEvent = MemberEvent+ { evMemberAction :: !MemberEventAction+ , evMemberUser :: !HookUser+ , evMemberRepo :: !HookRepository+ , evMemberSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender MemberEvent where senderOfEvent = evMemberSender+instance EventHasRepo MemberEvent where repoForEvent = evMemberRepo+instance NFData MemberEvent where rnf = genericRnf+++data MembershipEventAction+ -- | Decodes from "added"+ = MembershipAddedAction+ -- | Decodes from "removed"+ | MembershipRemovedAction+ -- | The result of decoding an unknown label event action type+ | MembershipActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData MembershipEventAction where rnf = genericRnf++instance FromJSON MembershipEventAction where+ parseJSON = withText "Membership event action" $ \t ->+ case t of+ "added" -> pure MembershipAddedAction+ "removed" -> pure MembershipRemovedAction+ _ -> pure (MembershipActionOther t)++-- | Triggered when a user is added or removed from a team.+-- Events of this type are not visible in timelines. These events are only used to trigger hooks.+-- See <https://developer.github.com/v3/activity/events/types/#membershipevent>.+data MembershipEvent = MembershipEvent+ { evMembershipAction :: !MembershipEventAction+ , evMembershipScope :: !Text -- ^ Current can only be "team"+ , evMembershipUser :: !HookUser+ , evMembershipTeam :: !HookTeam+ , evMembershipOrg :: !HookOrganization+ , evMembershipSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender MembershipEvent where senderOfEvent = evMembershipSender+instance NFData MembershipEvent where rnf = genericRnf+++data MilestoneEventAction+ -- | Decodes from "created"+ = MilestoneCreatedAction+ -- | Decodes from "closed"+ | MilestoneClosedAction+ -- | Decodes from "opened"+ | MilestoneOpenedAction+ -- | Decodes from "edited"+ | MilestoneEditedAction+ -- | Decodes from "deleted"+ | MilestoneDeletedAction+ -- | The result of decoding an unknown label event action type+ | MilestoneActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData MilestoneEventAction where rnf = genericRnf++instance FromJSON MilestoneEventAction where+ parseJSON = withText "Milestone event action" $ \t ->+ case t of+ "created" -> pure MilestoneCreatedAction+ "closed" -> pure MilestoneClosedAction+ "opened" -> pure MilestoneOpenedAction+ "edited" -> pure MilestoneEditedAction+ "deleted" -> pure MilestoneDeletedAction+ _ -> pure (MilestoneActionOther t)++-- | Triggered when a milestone is created, closed, opened, edited, or deleted.+-- Events of this type are not visible in timelines. These events are only used to trigger hooks.+-- See <https://developer.github.com/v3/activity/events/types/#milestoneevent>.+data MilestoneEvent = MilestoneEvent+ { evMilestoneAction :: !MilestoneEventAction+ , evMilestoenPayload :: !HookMilestone+ , evMilestoneRepo :: !HookRepository+ , evMilestoneOrg :: !HookOrganization+ , evMilestoneSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender MilestoneEvent where senderOfEvent = evMilestoneSender+instance EventHasRepo MilestoneEvent where repoForEvent = evMilestoneRepo+instance NFData MilestoneEvent where rnf = genericRnf+++data OrganizationEventAction+ -- | Decodes from "member_added"+ = OrgMemberAddedAction+ -- | Decodes from "member_removed"+ | OrgMemberRemovedAction+ -- | Decodes from "member_invited"+ | OrgMemberInvitedAction+ -- | The result of decoding an unknown label event action type+ | OrgActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData OrganizationEventAction where rnf = genericRnf++instance FromJSON OrganizationEventAction where+ parseJSON = withText "Organization event action" $ \t ->+ case t of+ "member_added" -> pure OrgMemberAddedAction+ "member_removed" -> pure OrgMemberRemovedAction+ "member_invited" -> pure OrgMemberInvitedAction+ _ -> pure (OrgActionOther t)++-- | Triggered when a user is added, removed, or invited to an Organization.+-- Events of this type are not visible in timelines. These events are only used to trigger organization hooks.+-- See <https://developer.github.com/v3/activity/events/types/#organizationevent>.+data OrganizationEvent = OrganizationEvent+ { evOrganizationAction :: !OrganizationEventAction+ , evOrganizationInvitation :: !HookOrganizationInvitation+ , evOrganizationMembership :: !HookOrganizationMembership+ , evOrganizationOrg :: !HookOrganization+ , evOrganizationSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender OrganizationEvent where senderOfEvent = evOrganizationSender+instance NFData OrganizationEvent where rnf = genericRnf+++data OrgBlockEventAction+ -- | Decodes from "blocked"+ = OrgBlockBlockedAction+ -- | Decodes from "unblocked"+ | OrgBlockUnblockedAction+ -- | The result of decoding an unknown org block event action type+ | OrgBlockActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData OrgBlockEventAction where rnf = genericRnf++instance FromJSON OrgBlockEventAction where+ parseJSON = withText "Organization event action" $ \t ->+ case t of+ "blocked" -> pure OrgBlockBlockedAction+ "unblocked" -> pure OrgBlockUnblockedAction+ _ -> pure (OrgBlockActionOther t)++-- | Triggered when an organization blocks or unblocks a user.+-- See <https://developer.github.com/v3/activity/events/types/#orgblockevent>.+data OrgBlockEvent = OrgBlockEvent+ { evOrgBlockAction :: !OrgBlockEventAction+ , evOrgBlockUser :: !HookUser+ , evOrgBlockOrg :: !HookOrganization+ , evOrgBlockSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender OrgBlockEvent where senderOfEvent = evOrgBlockSender+instance NFData OrgBlockEvent where rnf = genericRnf+++-- | Represents an attempted build of a GitHub Pages site, whether successful or not.+-- Triggered on push to a GitHub Pages enabled branch (gh-pages for project pages, master for user and organization pages).+-- Events of this type are not visible in timelines. These events are only used to trigger hooks.+-- See <https://developer.github.com/v3/activity/events/types/#pagebuildevent>.+data PageBuildEvent = PageBuildEvent+ { evPageBuildId :: !Int+ , evPageBuildResult :: !HookPageBuildResult+ , evPageBuildRepo :: !HookRepository+ , evPageBuildSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender PageBuildEvent where senderOfEvent = evPageBuildSender+instance EventHasRepo PageBuildEvent where repoForEvent = evPageBuildRepo+instance NFData PageBuildEvent where rnf = genericRnf+++data ProjectCardEventAction+ -- | Decodes from "created"+ = ProjectCardCreatedAction+ -- | Decodes from "edited"+ | ProjectCardEditedAction+ -- | Decodes from "converted"+ | ProjectCardConvertedAction+ -- | Decodes from "moved"+ | ProjectCardMovedAction+ -- | Decodes from "deleted"+ | ProjectCardDeletedAction+ -- | The result of decoding an unknown project card event action type+ | ProjectCardActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData ProjectCardEventAction where rnf = genericRnf++instance FromJSON ProjectCardEventAction where+ parseJSON = withText "Project card event action" $ \t ->+ case t of+ "created" -> pure ProjectCardCreatedAction+ "edited" -> pure ProjectCardEditedAction+ "converted" -> pure ProjectCardConvertedAction+ "moved" -> pure ProjectCardMovedAction+ "deleted" -> pure ProjectCardDeletedAction+ _ -> pure (ProjectCardActionOther t)++-- | Triggered when a project card is created, updated, moved, converted to an issue, or deleted.+-- See <https://developer.github.com/v3/activity/events/types/#projectcardevent>.+data ProjectCardEvent = ProjectCardEvent+ { evProjectCardAction :: !ProjectCardEventAction+ , evProjectCardPayload :: !HookProjectCard+ , evProjectCardRepo :: !HookRepository+ , evProjectCardOrg :: !HookOrganization+ , evProjectCardSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender ProjectCardEvent where senderOfEvent = evProjectCardSender+instance EventHasRepo ProjectCardEvent where repoForEvent = evProjectCardRepo+instance NFData ProjectCardEvent where rnf = genericRnf+++data ProjectColumnEventAction+ -- | Decodes from "created"+ = ProjectColumnCreatedAction+ -- | Decodes from "edited"+ | ProjectColumnEditedAction+ -- | Decodes from "moved"+ | ProjectColumnMovedAction+ -- | Decodes from "deleted"+ | ProjectColumnDeletedAction+ -- | The result of decoding an unknown project card event action type+ | ProjectColumnActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData ProjectColumnEventAction where rnf = genericRnf++instance FromJSON ProjectColumnEventAction where+ parseJSON = withText "Project column event action" $ \t ->+ case t of+ "created" -> pure ProjectColumnCreatedAction+ "edited" -> pure ProjectColumnEditedAction+ "moved" -> pure ProjectColumnMovedAction+ "deleted" -> pure ProjectColumnDeletedAction+ _ -> pure (ProjectColumnActionOther t)++-- | Triggered when a project column is created, updated, moved, or deleted.+-- See <https://developer.github.com/v3/activity/events/types/#projectcolumnevent>.+data ProjectColumnEvent = ProjectColumnEvent+ { evProjectColumnAction :: !ProjectColumnEventAction+ , evProjectColumnPayload :: !HookProjectColumn+ , evProjectColumnRepo :: !HookRepository+ , evProjectColumnOrg :: !HookOrganization+ , evProjectColumnSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender ProjectColumnEvent where senderOfEvent = evProjectColumnSender+instance EventHasRepo ProjectColumnEvent where repoForEvent = evProjectColumnRepo+instance NFData ProjectColumnEvent where rnf = genericRnf+++data ProjectEventAction+ -- | Decodes from "created"+ = ProjectCreatedAction+ -- | Decodes from "edited"+ | ProjectEditedAction+ -- | Decodes from "closed"+ | ProjectClosedAction+ -- | Decodes from "reopened"+ | ProjectReopenedAction+ -- | Decodes from "deleted"+ | ProjectDeletedAction+ -- | The result of decoding an unknown project event action type+ | ProjectActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData ProjectEventAction where rnf = genericRnf++instance FromJSON ProjectEventAction where+ parseJSON = withText "Project event action" $ \t ->+ case t of+ "created" -> pure ProjectCreatedAction+ "edited" -> pure ProjectEditedAction+ "closed" -> pure ProjectClosedAction+ "reopened" -> pure ProjectReopenedAction+ "deleted" -> pure ProjectDeletedAction+ _ -> pure (ProjectActionOther t)++-- | Triggered when a project is created, updated, closed, reopened, or deleted.+-- See <https://developer.github.com/v3/activity/events/types/#projectevent>.+data ProjectEvent = ProjectEvent+ { evProjectEventAction :: !ProjectEventAction+ , evProjectPayload :: !HookProject+ , evProjectRepo :: !HookRepository+ , evProjectOrganization :: !HookOrganization+ , evProjectSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender ProjectEvent where senderOfEvent = evProjectSender+instance EventHasRepo ProjectEvent where repoForEvent = evProjectRepo+instance NFData ProjectEvent where rnf = genericRnf+++-- | Triggered when a private repository is open sourced. Without a doubt: the best GitHub event.+-- See <https://developer.github.com/v3/activity/events/types/#publicevent>.+data PublicEvent = PublicEvent+ { evPublicEventRepo :: !HookRepository+ , evPublicEventSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender PublicEvent where senderOfEvent = evPublicEventSender+instance EventHasRepo PublicEvent where repoForEvent = evPublicEventRepo+instance NFData PublicEvent where rnf = genericRnf+++data PullRequestEventAction+ -- | Decodes from "assigned"+ = PullRequestAssignedAction+ -- | Decodes from "unassigned"+ | PullRequestUnassignedAction+ -- | Decodes from "review_requsted"+ | PullRequestReviewRequestedAction+ -- | Decodes from "review_request_removed"+ | PullRequestReviewRequestRemovedAction+ -- | Decodes from "labeled"+ | PullRequestLabeledAction+ -- | Decodes from "unlabeled"+ | PullRequestUnlabeledAction+ -- | Decodes from "opened"+ | PullRequestOpenedAction+ -- | Decodes from "edited"+ | PullRequestEditedAction+ -- | Decodes from "closed"+ | PullRequestClosedAction+ -- | Decodes from "reopened"+ | PullRequestReopenedAction+ -- | The result of decoding an unknown pull request event action type+ | PullRequestActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData PullRequestEventAction where rnf = genericRnf++instance FromJSON PullRequestEventAction where+ parseJSON = withText "Pull request event action" $ \t ->+ case t of+ "assigned" -> pure PullRequestAssignedAction+ "unassigned" -> pure PullRequestUnassignedAction+ "review_requsted" -> pure PullRequestReviewRequestedAction+ "review_request_removed" -> pure PullRequestReviewRequestRemovedAction+ "labeled" -> pure PullRequestLabeledAction+ "unlabeled" -> pure PullRequestUnlabeledAction+ "opened" -> pure PullRequestOpenedAction+ "edited" -> pure PullRequestEditedAction+ "closed" -> pure PullRequestClosedAction+ "reopened" -> pure PullRequestReopenedAction+ _ -> pure (PullRequestActionOther t)++-- | Triggered when a pull request is assigned, unassigned, labeled, unlabeled, opened, edited,+-- closed, reopened, or synchronized. Also triggered when a pull request review is requested,+-- or when a review request is removed.+-- See <https://developer.github.com/v3/activity/events/types/#pullrequestevent>.+data PullRequestEvent = PullRequestEvent+ { evPullReqAction :: !PullRequestEventAction+ , evPullReqNumber :: !Int+ , evPullReqPayload :: !HookPullRequest+ , evPullReqRepo :: !HookRepository+ , evPullReqSender :: !HookUser+ , evPullReqInstallationId :: !Int+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender PullRequestEvent where senderOfEvent = evPullReqSender+instance EventHasRepo PullRequestEvent where repoForEvent = evPullReqRepo+instance NFData PullRequestEvent where rnf = genericRnf+++data PullRequestReviewEventAction+ -- | Decodes from "submitted"+ = PullRequestReviewSubmittedAction+ -- | Decodes from "edited"+ | PullRequestReviewEditedAction+ -- | Decodes from "dismissed"+ | PullRequestReviewDismissedAction+ -- | The result of decoding an unknown pull request review event action type+ | PullRequestReviewActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData PullRequestReviewEventAction where rnf = genericRnf++instance FromJSON PullRequestReviewEventAction where+ parseJSON = withText "Pull request review event action" $ \t ->+ case t of+ "submitted" -> pure PullRequestReviewSubmittedAction+ "edited" -> pure PullRequestReviewEditedAction+ "dismissed" -> pure PullRequestReviewDismissedAction+ _ -> pure (PullRequestReviewActionOther t)++-- | Triggered when a pull request review is submitted into a non-pending state,+-- the body is edited, or the review is dismissed.+-- See <https://developer.github.com/v3/activity/events/types/#pullrequestreviewevent>.+data PullRequestReviewEvent = PullRequestReviewEvent+ { evPullReqReviewAction :: !PullRequestReviewEventAction+ , evPullReqReviewPayload :: !HookPullRequestReview+ , evPullReqReviewTarget :: !HookPullRequest+ , evPullReqReviewRepo :: !HookRepository+ , evPullReqReviewSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender PullRequestReviewEvent where senderOfEvent = evPullReqReviewSender+instance EventHasRepo PullRequestReviewEvent where repoForEvent = evPullReqReviewRepo+instance NFData PullRequestReviewEvent where rnf = genericRnf+++data PullRequestReviewCommentEventAction+ -- | Decodes from "created"+ = PullRequestReviewCommentCreatedAction+ -- | Decodes from "edited"+ | PullRequestReviewCommentEditedAction+ -- | Decodes from "deleted"+ | PullRequestReviewCommentDeletedAction+ -- | The result of decoding an unknown pull request review comment event action type+ | PullRequestReviewCommentActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData PullRequestReviewCommentEventAction where rnf = genericRnf++instance FromJSON PullRequestReviewCommentEventAction where+ parseJSON = withText "Pull request review comment event action" $ \t ->+ case t of+ "created" -> pure PullRequestReviewCommentCreatedAction+ "edited" -> pure PullRequestReviewCommentEditedAction+ "deleted" -> pure PullRequestReviewCommentDeletedAction+ _ -> pure (PullRequestReviewCommentActionOther t)++-- | Triggered when a comment on a pull request's unified diff is created,+-- edited, or deleted (in the Files Changed tab).+-- See <https://developer.github.com/v3/activity/events/types/#pullrequestreviewcommentevent>.+data PullRequestReviewCommentEvent = PullRequestReviewCommentEvent+ { evPullReqRevComAction :: !PullRequestReviewCommentEventAction+ , evPullReqRevComment :: !HookPullRequestReviewComment+ , evPullReqRevTarget :: !HookPullRequest+ , evPullReqRevRepo :: !HookRepository+ , evPullReqRevSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender PullRequestReviewCommentEvent where senderOfEvent = evPullReqRevSender+instance EventHasRepo PullRequestReviewCommentEvent where repoForEvent = evPullReqRevRepo+instance NFData PullRequestReviewCommentEvent where rnf = genericRnf+++-- | Triggered on a push to a repository branch. Branch pushes and repository tag+-- pushes also trigger webhook push events.+-- See <https://developer.github.com/v3/activity/events/types/#pushevent>.+data PushEvent = PushEvent+ { evPushRef :: !Text+ , evPushHeadSha :: !(Maybe Text)+ , evPushBeforeSha :: !(Maybe Text)+ , evPushCreated :: !Bool+ , evPushDeleted :: !Bool+ , evPushForced :: !Bool+ , evPushBaseRef :: !(Maybe Text)+ , evPushCompareUrl :: !URL+ , evPushCommits :: !(Maybe (Vector HookCommit))+ , evPushHeadCommit :: !(Maybe HookCommit)+ , evPushRepository :: !HookRepository+ , evPushOrganization :: !(Maybe HookOrganization)+ , evPushSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender PushEvent where senderOfEvent = evPushSender+instance EventHasRepo PushEvent where repoForEvent = evPushRepository+instance NFData PushEvent where rnf = genericRnf+++data ReleaseEventAction+ -- | Decodes from "published"+ = ReleasePublishedAction+ -- | The result of decoding an unknown release event action type+ | ReleaseActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData ReleaseEventAction where rnf = genericRnf++instance FromJSON ReleaseEventAction where+ parseJSON = withText "Release event action" $ \t ->+ case t of+ "published" -> pure ReleasePublishedAction+ _ -> pure (ReleaseActionOther t)++-- | Triggered when a release is published.+-- See <https://developer.github.com/v3/activity/events/types/#releaseevent>.+data ReleaseEvent = ReleaseEvent+ { evReleaseEventAction :: !ReleaseEventAction -- ^ Currently only releasePublished.+ , evReleaseEventPayload :: !HookRelease+ , evReleaseEventRepo :: !HookRepository+ , evReleaseEventSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender ReleaseEvent where senderOfEvent = evReleaseEventSender+instance EventHasRepo ReleaseEvent where repoForEvent = evReleaseEventRepo+instance NFData ReleaseEvent where rnf = genericRnf+++data RepositoryEventAction+ -- | Decodes from "created"+ = RepositoryCreatedAction+ -- | Decodes from "deleted"+ | RepositoryDeletedAction+ -- | Decodes from "archived"+ | RepositoryArchivedAction+ -- | Decodes from "unarchived"+ | RepositoryUnarchivedAction+ -- | Decodes from "publicized"+ | RepositoryPublicizedAction+ -- | Decodes from "privatized"+ | RepositoryPrivatizedAction+ -- | The result of decoding an unknown repository event action type+ | RepositoryActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData RepositoryEventAction where rnf = genericRnf++instance FromJSON RepositoryEventAction where+ parseJSON = withText "Repository event action" $ \t ->+ case t of+ "created" -> pure RepositoryCreatedAction+ "deleted" -> pure RepositoryDeletedAction+ "archived" -> pure RepositoryArchivedAction+ "unarchived" -> pure RepositoryUnarchivedAction+ "publicized" -> pure RepositoryPublicizedAction+ "privatized" -> pure RepositoryPrivatizedAction+ _ -> pure (RepositoryActionOther t)++-- | Triggered when a repository is created, archived, unarchived, made public, or made private.+-- Organization hooks are also triggered when a repository is deleted.+-- Events of this type are not visible in timelines. These events are only used to trigger hooks.+-- See <https://developer.github.com/v3/activity/events/types/#repositoryevent>.+data RepositoryEvent = RepositoryEvent+ { evRepositoryAction :: !RepositoryEventAction+ , evRepositoryTarget :: !HookRepository+ , evRepositoryOrg :: !(Maybe HookOrganization)+ , evRepositorySender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender RepositoryEvent where senderOfEvent = evRepositorySender+instance EventHasRepo RepositoryEvent where repoForEvent = evRepositoryTarget+instance NFData RepositoryEvent where rnf = genericRnf+++data StatusEventState+ -- | Decodes from "pending"+ = StatusPendingState+ -- | Decodes from "success"+ | StatusSuccessState+ -- | Decodes from "failure"+ | StatusFailureState+ -- | Decodes from "error"+ | StatusErrorState+ -- | The result of decoding an unknown status event state+ | StatusStateOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData StatusEventState where rnf = genericRnf++instance FromJSON StatusEventState where+ parseJSON = withText "Status event state" $ \t ->+ case t of+ "pending" -> pure StatusPendingState+ "success" -> pure StatusSuccessState+ "failure" -> pure StatusFailureState+ "error" -> pure StatusErrorState+ _ -> pure (StatusStateOther t)++-- | Triggered when the status of a Git commit changes.+-- Events of this type are not visible in timelines. These events are only used to trigger hooks.+-- See <https://developer.github.com/v3/activity/events/types/#statusevent>.+data StatusEvent = StatusEvent+ { evStatusId :: !Int+ , evStatusCommitSha :: !Text+ , evStatusCommitName :: !Text+ , evStatusTargetUrl :: !(Maybe URL)+ , evStatusContext :: !Text+ , evStatusDescription :: !(Maybe Text)+ , evStatusState :: !StatusEventState+ , evStatusCommit :: !HookCommit+ -- FIXME: Branches are missing here+ , evStatusCreatedAt :: !UTCTime+ , evStatusUpdatedAt :: !UTCTime+ , evStatusRepo :: !HookRepository+ , evStatusSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender StatusEvent where senderOfEvent = evStatusSender+instance EventHasRepo StatusEvent where repoForEvent = evStatusRepo+instance NFData StatusEvent where rnf = genericRnf+++data TeamEventAction+ -- | Decodes from "created"+ = TeamCreatedAction+ -- | Decodes from "deleted"+ | TeamDeletedAction+ -- | Decodes from "edited"+ | TeamEditedAction+ -- | Decodes from "added_to_repository"+ | TeamAddedToRepoAction+ -- | Decodes from "removed_from_repository"+ | TeamRemovedFromRepoAction+ -- | The result of decoding an unknown team event action type+ | TeamActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData TeamEventAction where rnf = genericRnf++instance FromJSON TeamEventAction where+ parseJSON = withText "Team event action" $ \t ->+ case t of+ "created" -> pure TeamCreatedAction+ "deleted" -> pure TeamDeletedAction+ "edited" -> pure TeamEditedAction+ "added_to_repository" -> pure TeamAddedToRepoAction+ "removed_from_repository" -> pure TeamRemovedFromRepoAction+ _ -> pure (TeamActionOther t)++-- | Triggered when an organization's team is created or deleted.+-- Events of this type are not visible in timelines. These events are only used to trigger organization hooks.+-- See <https://developer.github.com/v3/activity/events/types/#teamevent>.+data TeamEvent = TeamEvent+ { evTeamAction :: !TeamEventAction+ , evTeamTarget :: !HookTeam+ , evTeamOrganization :: !HookOrganization+ , evTeamSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender TeamEvent where senderOfEvent = evTeamSender+instance NFData TeamEvent where rnf = genericRnf+++-- | Triggered when a repository is added to a team.+-- Events of this type are not visible in timelines. These events are only used to trigger hooks.+-- See <https://developer.github.com/v3/activity/events/types/#teamaddevent>.+data TeamAddEvent = TeamAddEvent+ { evTeamAddTarget :: !(Maybe HookTeam) -- ^ Older events may not include this in the payload.+ , evTeamAddRepo :: !HookRepository+ , evTeamAddOrg :: !HookOrganization+ , evTeamAddSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender TeamAddEvent where senderOfEvent = evTeamAddSender+instance EventHasRepo TeamAddEvent where repoForEvent = evTeamAddRepo+instance NFData TeamAddEvent where rnf = genericRnf+++data WatchEventAction+ -- | Decodes from "started"+ = WatchStartedAction+ -- | The result of decoding an unknown watch event action type+ | WatchActionOther !Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData WatchEventAction where rnf = genericRnf++instance FromJSON WatchEventAction where+ parseJSON = withText "Watch event action" $ \t ->+ case t of+ "started" -> pure WatchStartedAction+ _ -> pure (WatchActionOther t)++-- | The WatchEvent is related to starring a repository, not watching.+-- The event’s actor is the user who starred a repository, and the event’s+-- repository is the repository that was starred.+-- See <https://developer.github.com/v3/activity/events/types/#watchevent>.+data WatchEvent = WatchEvent+ { evWatchAction :: !WatchEventAction+ , evWatchRepo :: !HookRepository+ , evWatchSender :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance EventHasSender WatchEvent where senderOfEvent = evWatchSender+instance EventHasRepo WatchEvent where repoForEvent = evWatchRepo+instance NFData WatchEvent where rnf = genericRnf+++-- Aeson Instances++instance FromJSON CommitCommentEvent where+ parseJSON = withObject "CommitCommentEvent" $ \o -> CommitCommentEvent+ <$> o .: "action"+ <*> o .: "comment"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON CreateEvent where+ parseJSON = withObject "CreateEvent" $ \o -> CreateEvent+ <$> o .: "ref"+ <*> o .: "ref_type"+ <*> o .: "master_branch"+ <*> o .: "description"+ <*> o .: "pusher_type"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON DeleteEvent where+ parseJSON = withObject "DeleteEvent" $ \o -> DeleteEvent+ <$> o .: "ref"+ <*> o .: "ref_type"+ <*> o .: "pusher_type"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON DeploymentEvent where+ parseJSON = withObject "DeploymentEvent" $ \o -> DeploymentEvent+ <$> o .: "deployment"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON DeploymentStatusEvent where+ parseJSON = withObject "DeploymentStatusEvent" $ \o -> DeploymentStatusEvent+ <$> o .: "deployment_status"+ <*> o .: "deployment"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON ForkEvent where+ parseJSON = withObject "ForkEvent" $ \o -> ForkEvent+ <$> o .: "forkee"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON GollumEvent where+ parseJSON = withObject "GollumEvent" $ \o -> GollumEvent+ <$> o .: "pages"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON InstallationEvent where+ parseJSON = withObject "InstallationEvent" $ \o -> InstallationEvent+ <$> o .: "action"+ <*> o .: "installation"+ <*> o .: "sender"++instance FromJSON InstallationRepositoriesEvent where+ parseJSON = withObject "InstallationRepositoriesEvent" $ \o -> InstallationRepositoriesEvent+ <$> o .: "action"+ <*> o .: "installation"+ <*> o .: "repository_selection"+ <*> o .: "repositories_added"+ <*> o .: "repositories_removed"+ <*> o .: "sender"++instance FromJSON IssueCommentEvent where+ parseJSON = withObject "IssueCommentEvent" $ \o -> IssueCommentEvent+ <$> o .: "action"+ <*> o .: "issue"+ <*> o .: "comment"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON IssuesEvent where+ parseJSON = withObject "IssuesEvent" $ \o -> IssuesEvent+ <$> o .: "action"+ <*> o .: "issue"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON LabelEvent where+ parseJSON = withObject "LabelEvent" $ \o -> LabelEvent+ <$> o .: "action"+ <*> o .: "label"+ <*> o .: "repository"+ <*> o .:? "organization"+ <*> o .: "sender"++instance FromJSON MemberEvent where+ parseJSON = withObject "MemberEvent" $ \o -> MemberEvent+ <$> o .: "action"+ <*> o .: "member"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON MembershipEvent where+ parseJSON = withObject "MembershipEvent" $ \o -> MembershipEvent+ <$> o .: "action"+ <*> o .: "scope"+ <*> o .: "member"+ <*> o .: "team"+ <*> o .: "organization"+ <*> o .: "sender"++instance FromJSON MilestoneEvent where+ parseJSON = withObject "MilestoneEvent" $ \o -> MilestoneEvent+ <$> o .: "action"+ <*> o .: "milestone"+ <*> o .: "repository"+ <*> o .: "organization"+ <*> o .: "sender"++instance FromJSON OrganizationEvent where+ parseJSON = withObject "OrganizationEvent" $ \o -> OrganizationEvent+ <$> o .: "action"+ <*> o .: "invitation"+ <*> o .: "membership"+ <*> o .: "organization"+ <*> o .: "sender"++instance FromJSON OrgBlockEvent where+ parseJSON = withObject "OrgBlockEvent" $ \o -> OrgBlockEvent+ <$> o .: "action"+ <*> o .: "blocked_user"+ <*> o .: "organization"+ <*> o .: "sender"++instance FromJSON PageBuildEvent where+ parseJSON = withObject "PageBuildEvent" $ \o -> PageBuildEvent+ <$> o .: "id"+ <*> o .: "build"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON ProjectCardEvent where+ parseJSON = withObject "ProjectCardEvent" $ \o -> ProjectCardEvent+ <$> o .: "action"+ <*> o .: "project_card"+ <*> o .: "repository"+ <*> o .: "organization"+ <*> o .: "sender"++instance FromJSON ProjectColumnEvent where+ parseJSON = withObject "ProjectColumnEvent" $ \o -> ProjectColumnEvent+ <$> o .: "action"+ <*> o .: "project_column"+ <*> o .: "repository"+ <*> o .: "organization"+ <*> o .: "sender"++instance FromJSON ProjectEvent where+ parseJSON = withObject "ProjectEvent" $ \o -> ProjectEvent+ <$> o .: "action"+ <*> o .: "project"+ <*> o .: "repository"+ <*> o .: "organization"+ <*> o .: "sender"++instance FromJSON PublicEvent where+ parseJSON = withObject "PublicEvent" $ \o -> PublicEvent+ <$> o .: "repository"+ <*> o .: "sender"++instance FromJSON PullRequestEvent where+ parseJSON = withObject "PullRequestEvent" $ \o -> PullRequestEvent+ <$> o .: "action"+ <*> o .: "number"+ <*> o .: "pull_request"+ <*> o .: "repository"+ <*> o .: "sender"+ <*> (o .: "installation" >>= \i -> i .: "id")++instance FromJSON PullRequestReviewEvent where+ parseJSON = withObject "PullRequestReviewEvent" $ \o -> PullRequestReviewEvent+ <$> o .: "action"+ <*> o .: "review"+ <*> o .: "pull_request"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON PullRequestReviewCommentEvent where+ parseJSON = withObject "PullRequestReviewCommentEvent" $ \o -> PullRequestReviewCommentEvent+ <$> o .: "action"+ <*> o .: "comment"+ <*> o .: "pull_request"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON PushEvent where+ parseJSON = withObject "PushEvent" $ \o -> PushEvent+ <$> o .: "ref"+ <*> o .:? "after"+ <*> o .:? "before"+ <*> o .: "created"+ <*> o .: "deleted"+ <*> o .: "forced"+ <*> o .:? "base_ref"+ <*> o .: "compare"+ <*> o .:? "commits"+ <*> o .:? "head_commit"+ <*> o .: "repository"+ <*> o .:? "organization"+ <*> o .: "sender"++instance FromJSON ReleaseEvent where+ parseJSON = withObject "ReleaseEvent" $ \o -> ReleaseEvent+ <$> o .: "action"+ <*> o .: "release"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON RepositoryEvent where+ parseJSON = withObject "RepositoryEvent" $ \o -> RepositoryEvent+ <$> o .: "action"+ <*> o .: "repository"+ <*> o .: "organization"+ <*> o .: "sender"++instance FromJSON StatusEvent where+ parseJSON = withObject "StatusEvent" $ \o -> StatusEvent+ <$> o .: "id"+ <*> o .: "sha"+ <*> o .: "name"+ <*> o .:? "target_url"+ <*> o .: "context"+ <*> o .:? "description"+ <*> o .: "state"+ <*> o .: "commit"+ <*> o .: "created_at"+ <*> o .: "updated_at"+ <*> o .: "repository"+ <*> o .: "sender"++instance FromJSON TeamEvent where+ parseJSON = withObject "TeamEvent" $ \o -> TeamEvent+ <$> o .: "action"+ <*> o .: "team"+ <*> o .: "organization"+ <*> o .: "sender"++instance FromJSON TeamAddEvent where+ parseJSON = withObject "TeamAddEvent" $ \o -> TeamAddEvent+ <$> o .:? "team"+ <*> o .: "repository"+ <*> o .: "organization"+ <*> o .: "sender"++instance FromJSON WatchEvent where+ parseJSON = withObject "WatchEvent" $ \o -> WatchEvent+ <$> o .: "action"+ <*> o .: "repository"+ <*> o .: "sender"
+ src/GitHub/Data/Webhooks/Payload.hs view
@@ -0,0 +1,1027 @@+--+module GitHub.Data.Webhooks.Payload+ ( -- * Construction Types+ URL(..)+ , getUrl+ , OwnerType(..)+ -- * Webhook Types+ , HookIssue(..)+ , HookRepository(..)+ , HookRepositorySimple(..)+ , HookRepositoryLabel(..)+ , HookUser(..)+ , HookSimpleUser(..)+ , HookOrganization(..)+ , HookOrganizationInvitation(..)+ , HookOrganizationMembership(..)+ , HookTeam(..)+ , HookMilestone(..)+ , HookMembership(..)+ , HookProject(..)+ , HookProjectCard(..)+ , HookProjectColumn(..)+ , HookIssueLabels(..)+ , HookCommit(..)+ , HookRelease(..)+ , HookPullRequest(..)+ , HookPullRequestReview(..)+ , HookInstallation(..)+ , HookDeployment(..)+ , HookDeploymentStatus(..)+ , HookWikiPage(..)+ , HookPageBuildResult(..)+ , HookIssueComment(..)+ , HookCommitComment(..)+ , HookPullRequestReviewComment(..)+ ) where++import Data.Aeson (FromJSON(..), withObject, withText, (.!=), (.:), (.:?))+import Control.DeepSeq (NFData (..))+import Control.DeepSeq.Generics (genericRnf)+import Control.Applicative ((<|>))+import Data.Data (Data, Typeable)+import Data.Time (UTCTime)+import Data.Time.Clock.POSIX (posixSecondsToUTCTime)+import Data.Text (Text)+import qualified Data.Text as T+import Data.Vector (Vector)+import GHC.Generics (Generic)+++-- Types lifted from the @github@ package.++data OwnerType = OwnerUser | OwnerOrganization+ deriving (Eq, Ord, Enum, Bounded, Show, Read, Generic, Typeable, Data)++instance NFData OwnerType++instance FromJSON OwnerType where+ parseJSON = withText "Owner type" $ \t ->+ case T.toLower t of+ "user" -> pure OwnerUser+ "organization" -> pure OwnerOrganization+ _ -> fail $ "Unknown owner type: " ++ T.unpack t+++newtype URL = URL Text+ deriving (Eq, Ord, Show, Generic, Typeable, Data)++instance NFData URL where rnf = genericRnf++instance FromJSON URL where+ parseJSON = withText "URL" (pure . URL)++getUrl :: URL -> Text+getUrl (URL url) = url+++-- Hooks++type IssueState = Text++data HookIssue = HookIssue+ { whIssueUrl :: !URL+ , whIssueLabelsUrl :: !URL+ , whIssueCommentsUrl :: !URL+ , whIssueEventsUrl :: !URL+ , whIssueHtmlUrl :: !URL+ , whIssueId :: !Int+ , whIssueNumber :: !Int+ , whIssueTitle :: !Text+ , whIssueUser :: !HookUser+ , whIssueLabels :: !(Vector HookIssueLabels)+ , whIssueState :: IssueState+ , whIssueIsLocked :: !Bool+ , whIssueAssignee :: !(Maybe HookUser)+ , whIssueMilestone :: !(Maybe HookMilestone)+ , whIssueCommentCount :: !Int+ , whIssueCreatedAt :: !UTCTime+ , whIssueUpdatedAt :: !UTCTime+ , whIssueClosedAt :: !(Maybe UTCTime)+ , whIssueBody :: !Text+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookIssue where rnf = genericRnf+++data HookRepository = HookRepository+ { whRepoId :: !Int+ , whRepoName :: !Text+ , whRepoFullName :: !Text+ , whRepoOwner :: !(Either HookSimpleUser HookUser)+ , whRepoIsPrivate :: !Bool+ , whRepoHtmlUrl :: !URL+ , whRepoDescription :: !Text+ , whRepoIsAFork :: !Bool+ , whRepoUrl :: !URL+ , whRepoForksUrl :: !URL+ , whRepoKeysUrl :: !URL+ , whRepoCollaboratorsUrl :: !URL+ , whRepoTeamsUrl :: !URL+ , whRepoHooksUrl :: !URL+ , whRepoIssueEventsUrl :: !URL+ , whRepoEventsUrl :: !URL+ , whRepoAssigneesUrl :: !URL+ , whRepoBranchesUrl :: !URL+ , whRepoTagsUrl :: !URL+ , whRepoBlobsUrl :: !URL+ , whRepoGitTagsUrl :: !URL+ , whRepoGitRefsUrl :: !URL+ , whRepoTreesUrl :: !URL+ , whRepoStatusesUrl :: !URL+ , whRepoLanguagesUrl :: !URL+ , whRepoStargazersUrl :: !URL+ , whRepoContributorsUrl :: !URL+ , whRepoSubscribersUrl :: !URL+ , whRepoSubscriptionUrl :: !URL+ , whRepoCommitsUrl :: !URL+ , whRepoGitCommitsUrl :: !URL+ , whRepoCommentsUrl :: !URL+ , whRepoIssueCommentsUrl :: !URL+ , whRepoContentsUrl :: !URL+ , whRepoCompareUrl :: !URL+ , whRepoMergesUrl :: !URL+ , whRepoArchiveUrl :: !URL+ , whRepoDownloadsUrl :: !URL+ , whRepoIssuesUrl :: !URL+ , whRepoPullsUrl :: !URL+ , whRepoMilestonesUrl :: !URL+ , whRepoNotificationsUrl :: !URL+ , whRepoLabelsUrl :: !URL+ , whRepoReleasesUrl :: !URL+ , whRepoCreatedAt :: !UTCTime+ , whRepoUpdatedAt :: !UTCTime+ , whRepoPushedAt :: !UTCTime+ , whRepoGitUrl :: !URL+ , whRepoSshUrl :: !URL+ , whRepoCloneUrl :: !URL+ , whRepoSvnUrl :: !URL+ , whRepoHomepage :: !(Maybe URL)+ , whRepoSize :: !Int+ , whRepoStargazersCount :: !Int+ , whRepoWatchersCount :: !Int+ , whRepoLanguage :: !(Maybe Text)+ , whRepoHasIssues :: !Bool+ , whRepoHasDownloads :: !Bool+ , whRepoHasWiki :: !Bool+ , whRepoHasPages :: !Bool+ , whRepoForkCount :: !Int+ , whRepoMirrorUrl :: !(Maybe URL)+ , whRepoOpenIssuesCount :: !Int+ , whRepoDefaultBranchName :: !Text+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookRepository where rnf = genericRnf+++data HookRepositorySimple = HookRepositorySimple+ { whSimplRepoId :: !Int+ , whSimplRepoName :: !Text+ , whSimplRepoFullName :: !Text+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookRepositorySimple where rnf = genericRnf++++data HookRepositoryLabel = HookRepositoryLabel+ { whRepoLabelUrl :: !URL+ , whRepoLabelName :: !Text+ , whRepoLabelColor :: !Text+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookRepositoryLabel where rnf = genericRnf+++data HookUser = HookUser+ { whUserLogin :: !Text+ , whUserId :: !Int+ , whUserAvatarUrl :: !URL+ , whUserGravatarId :: !URL+ , whUserUrl :: !URL+ , whUserHtmlUrl :: !URL+ , whUserFollowersUrl :: !URL+ , whUserFollowingUrl :: !URL+ , whUserGistsUrl :: !URL+ , whUserStarredUrl :: !URL+ , whUserSubscriptionsUrl :: !URL+ , whUserOrganizationsUrl :: !URL+ , whUserReposUrl :: !URL+ , whUserEventsUrl :: !URL+ , whUserReceivedEventsUrl :: !URL+ , whUserType :: !OwnerType+ , whUserIsAdminOfSite :: !Bool+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookUser where rnf = genericRnf+++data HookSimpleUser = HookSimpleUser+ { whSimplUserName :: !Text+ , whSimplUserEmail :: !Text+ , whSimplUserLogin :: !(Maybe Text)+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookSimpleUser where rnf = genericRnf+++data HookOrganization = HookOrganization+ { whOrgLogin :: !Text+ , whOrgId :: !Int+ , whOrgUrl :: !URL+ , whOrgReposUrl :: !URL+ , whOrgEventsUrl :: !URL+ , whOrgHooksUrl :: !(Maybe URL)+ , whOrgIssuesUrl :: !(Maybe URL)+ , whOrgMembersUrl :: !URL+ , whOrgPublicMembersUrl :: !URL+ , whOrgAvatarUrl :: !URL+ , whOrgDescription :: !Text+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookOrganization where rnf = genericRnf+++data HookOrganizationInvitation = HookOrganizationInvitation+ { whOrgInvitationId :: !Int+ , whOrgInvitationLogin :: !Text+ , whOrgInvitationEmail :: !(Maybe Text)+ , whOrgInvitationRole :: !Text+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookOrganizationInvitation where rnf = genericRnf+++data HookOrganizationMembership = HookOrganizationMembership+ { whOrgMembershipUrl :: !URL+ , whOrgMembershipState :: !Text+ , whOrgMembershipRole :: !Text+ , whOrgMembershipOrgUrl :: !URL+ , whOrgMembershipUser :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookOrganizationMembership where rnf = genericRnf+++data HookTeam = HookTeam+ { whTeamName :: !Text+ , whTeamId :: !Int+ , whTeamSlug :: !Text+ , whTeamPermission :: !Text+ , whTeamUrl :: !URL+ , whTeamMembersUrl :: !URL+ , whTeamRepositoriesUrl :: !URL+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookTeam where rnf = genericRnf+++type MilestoneState = Text++data HookMilestone = HookMilestone+ { whMilestoneUrl :: !URL+ , whMilestoneHtmlUrl :: !URL+ , whMilestoneLabelsUrl :: !URL+ , whMilestoneId :: !Int+ , whMilestoneNumber :: !Int+ , whMilestoneTitle :: !Text+ , whMilestoneDescription :: !(Maybe Text)+ , whMilestoneCreator :: !HookUser+ , whMilestoneOpenIssues :: !Int+ , whMilestoneClosedIssues :: !Int+ , whMilestoneState :: !MilestoneState+ , whMilestoneCreatedAt :: !UTCTime+ , whMilestoneUpdatedAt :: !UTCTime+ , whMilestoneDueOn :: !(Maybe UTCTime)+ , whMilestoneClosedAt :: !(Maybe UTCTime)+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookMilestone where rnf = genericRnf+++type MembershipState = Text+type MembershipRole = Text++data HookMembership = HookMembership+ { whMembershipUrl :: !URL+ , whMembershipState :: !MembershipState+ , whMembershipRole :: !MembershipRole+ , whMembershipOrgUrl :: !URL+ , whMembershipUser :: !HookUser+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookMembership where rnf = genericRnf+++type ProjectState = Text++data HookProject = HookProject+ { whProjectOwnerUrl :: !URL+ , whProjectUrl :: !URL+ , whProjectColumnsUrl :: !URL+ , whProjectId :: !Int+ , whProjectName :: !Text+ , whProjectBody :: !Text+ , whProjectNumber :: !Int+ , whProjectState :: !ProjectState+ , whProjectCreator :: !HookUser+ , whProjectCreatedAt :: !UTCTime+ , whProjectUpdatedAt :: !UTCTime+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookProject where rnf = genericRnf+++data HookProjectCard = HookProjectCard+ { whProjectCardUrl :: !URL+ , whProjectCardColumnUrl :: !URL+ , whProjectCardColumnId :: !Int+ , whProjectCardId :: !Int+ , whProjectCardNote :: !(Maybe Text)+ , whProjectCardCreator :: !HookUser+ , whProjectCardCreatedAt :: !UTCTime+ , whProjectCardUpdatedAt :: !UTCTime+ , whProjectCardContentUrl :: !URL+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookProjectCard where rnf = genericRnf+++data HookProjectColumn = HookProjectColumn+ { whProjectColumnUrl :: !URL+ , whProjectColumnProjUrl :: !URL+ , whProjectColumnCardsUrl :: !URL+ , whProjectColumnId :: !Int+ , whProjectColumnName :: !Text+ , whProjectColumnCreatedAt :: !UTCTime+ , whProjectColumnUpdatedAt :: !UTCTime+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookProjectColumn where rnf = genericRnf+++data HookIssueLabels = HookIssueLabels+ { whIssueLabelId :: !(Maybe Int) -- ^ Not always sent.+ , whIssueLabelUrl :: !URL+ , whIssueLabelName :: !Text+ , whIssueLabelColor :: !Text+ , whIssueLabelIsDefault :: !Bool -- ^ Defaults to false when not present.+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookIssueLabels where rnf = genericRnf+++-- FIXME: Missing nested metadata that provides commit description+-- FIXME: Missing property "parent" (no examples provided)+data HookCommit = HookCommit+ { whCommitSha :: !Text -- ^ Sometimes called the commit 'id'.+ , whCommitUrl :: !URL+ , whCommitHtmlUrl :: !(Maybe URL) -- ^ Not always sent.+ , whCommitCommentsUrl :: !(Maybe URL) -- ^ Not always sent.+ , whCommitAuthor :: !(Either HookSimpleUser HookUser)+ , whCommitCommitter :: !(Either HookSimpleUser HookUser)+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookCommit where rnf = genericRnf+++-- FIXME: Missing property "assets" (no examples provided)+data HookRelease = HookRelease+ { whReleaseUrl :: !URL+ , whReleaseAssetsUrl :: !URL+ , whReleaseUploadUrl :: !URL+ , whReleaseHtmlUrl :: !URL+ , whReleaseId :: !Int+ , whReleaseTagName :: !Text+ , whReleaseTargetCommitish :: !Text+ , whReleaseName :: !(Maybe Text)+ , whReleaseIsDraft :: !Bool+ , whReleaseAuthor :: !HookUser+ , whReleaseIsPreRelease :: !Bool+ , whReleaseCreatedAt :: !UTCTime+ , whReleasePublishedAt :: !(Maybe UTCTime)+ , whReleaseTarballUrl :: !URL+ , whReleaseZipballUrl :: !URL+ , whReleaseBody :: !(Maybe Text)+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookRelease where rnf = genericRnf+++-- FIXME: Property "head" missing (not sure)+-- FIXME: Property "base" missing (not sure)+data HookPullRequest = HookPullRequest+ { whPullReqUrl :: !URL+ , whPullReqId :: !Int+ , whPullReqHtmlUrl :: !URL+ , whPullReqDiffUrl :: !URL+ , whPullReqPatchUrl :: !URL+ , whPullReqIssueUrl :: !URL+ , whPullReqNumber :: !Int+ , whPullReqState :: !Text -- FIXME: Smart constructor?+ , whPullReqIsLocked :: !Bool+ , whPullReqTitle :: !Text+ , whPullReqUser :: !HookUser+ , whPullReqBody :: !Text+ , whPullReqCreatedAt :: !UTCTime+ , whPullReqUpdatedAt :: !UTCTime+ , whPullReqClosedAt :: !(Maybe UTCTime)+ , whPullReqMergedAt :: !(Maybe UTCTime)+ , whPullReqMergeCommitSha :: !(Maybe Text)+ , whPullReqAssignee :: !(Maybe HookUser)+ , whPullReqMilestone :: !(Maybe HookMilestone)+ , whPullReqCommitsUrl :: !URL+ , whPullReqRevCommentsUrl :: !URL+ , whPullReqRevCommentUrl :: !URL+ , whPullReqCommentsUrl :: !URL+ , whPullReqStatusesUrl :: !URL+ -- , whPullReqIsMerged :: !Bool+ -- , whPullReqIsMergeable :: !Bool+ -- , whPullReqMergeableState :: !Text+ -- , whPullReqMergedBy :: !(Maybe HookUser)+ , whPullReqCommentCount :: !(Maybe Int) -- ^ Not sent with all events.+ , whPullReqRevCommentCount :: !(Maybe Int) -- ^ Not sent with all events.+ , whPullReqCommitCount :: !(Maybe Int) -- ^ Not sent with all events.+ , whPullReqAdditionsCount :: !(Maybe Int) -- ^ Not sent with all events.+ , whPullReqDeletionsCount :: !(Maybe Int) -- ^ Not sent with all events.+ , whPullReqFileChangeCount :: !(Maybe Int) -- ^ Not sent with all events.+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookPullRequest where rnf = genericRnf+++data HookPullRequestReview = HookPullRequestReview+ { whPullReqReviewId :: !Int+ , whPullReqReviewUser :: !HookUser+ , whPullReqReviewBody :: !Text+ , whPullReqReviewSubmittedAt :: !UTCTime+ , whPullReqReviewState :: !Text+ , whPullReqReviewHtmlUrl :: !URL+ , whPullReqReviewPullUrl :: !URL+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookPullRequestReview where rnf = genericRnf+++data HookInstallation = HookInstallation+ { whInstallationId :: !Int+ , whInstallationAccount :: !HookUser+ , whInstallationRepoSel :: !Text+ , whInstallationTokenUrl :: !URL+ , whInstallationRepoUrl :: !URL+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookInstallation where rnf = genericRnf+++data HookDeployment = HookDeployment+ { whDeploymentUrl :: !URL+ , whDeploymentId :: !Int+ , whDeploymentSha :: !Text+ , whDeploymentRef :: !Text+ , whDeploymentTask :: !Text+ -- , whDeploymentPayload+ , whDeploymentEnv :: !Text+ , whDeploymentDescription :: !(Maybe Text)+ , whDeploymentCreator :: !HookUser+ , whDeploymentCreatedAt :: !UTCTime+ , whDeploymentUpdatedAt :: !UTCTime+ , whDeploymentStatusesUrl :: !URL+ , whDeploymentRepoUrl :: !URL+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookDeployment where rnf = genericRnf+++data HookDeploymentStatus = HookDeploymentStatus+ { whDeploymentStatusUrl :: !URL+ , whDeploymentStatusId :: !Int+ , whDeploymentStatusState :: !Text+ , whDeploymentStatusCreator :: !HookUser+ , whDeploymentStatusDesc :: !(Maybe Text)+ , whDeploymentStatusTargetUrl :: !(Maybe URL)+ , whDeploymentStatusCreatedAt :: !UTCTime+ , whDeploymentStatusUpdatedAt :: !UTCTime+ , whDeploymentStatusDeplUrl :: !URL+ , whDeploymentStatusRepoUrl :: !URL+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookDeploymentStatus where rnf = genericRnf+++data HookWikiPage = HookWikiPage+ { whWikiPageName :: !Text+ , whWikiPageTitle :: !Text+ , whWikiPageSummary :: !(Maybe Text)+ , wkWikiPageAction :: !Text+ , whWikiPageSha :: !Text+ , whWikiPageHtmlUrl :: URL+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookWikiPage where rnf = genericRnf+++data HookPageBuildResult = HookPageBuildResult+ { whPageBuildUrl :: !URL+ , whPageBuildStatus :: !Text+ , whPageBuildError :: !(Maybe Text)+ , whPageBuildPusher :: !HookUser+ , whPageBuildCommitSha :: !Text+ , whPageBuildDuration :: !Int+ , whPageBuildCreatedAt :: !UTCTime+ , whPageBuildUpdatedAt :: !UTCTime+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookPageBuildResult where rnf = genericRnf+++data HookIssueComment = HookIssueComment+ { whIssueCommentUrl :: !URL+ , whIssueCommentHtmlUrl :: !URL+ , whIssueCommentIssueUrl :: !URL+ , whIssueCommentId :: !Int+ , whIssueCommentUser :: !HookUser+ , whIssueCommentCreatedAt :: !UTCTime+ , whIssueCommentUpdatedAt :: !UTCTime+ , whIssueCommentBody :: !Text+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookIssueComment where rnf = genericRnf+++data HookCommitComment = HookCommitComment+ { whCommitCommentUrl :: !URL+ , whCommitCommentHtmlUrl :: !URL+ , whCommitCommentId :: !Int+ , whCommitCommentUser :: !HookUser+ , whCommitCommentPos :: !(Maybe Int)+ , whCommitCommentLine :: !(Maybe Int)+ , whCommitCommentPath :: !(Maybe Text)+ , whCommitCommentCommitSha :: !Text+ , whCommitCommentCreatedAt :: !UTCTime+ , whCommitCommentUpdatedAt :: !UTCTime+ , whCommitCommentBody :: !Text+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookCommitComment where rnf = genericRnf+++data HookPullRequestReviewComment = HookPullRequestReviewComment+ { whPullReqRevComUrl :: !URL+ , whPullReqRevComId :: !Int+ , whPullReqRevComDiffHunk :: !Text+ , whPullReqRevComPath :: !Text+ , whPullReqRevComPos :: !Int+ , whPullReqRevComOrigPos :: !Int+ , whPullReqRevComCommitSha :: !Text+ , whPullReqRevComOrigSha :: !Text+ , whPullReqRevComUser :: !HookUser+ , whPullReqRevComBody :: !Text+ , whPullReqRevComCreatedAt :: !UTCTime+ , whPullReqRevComUpdatedAt :: !UTCTime+ , whPullReqRevComHtmlUrl :: !URL+ , whPullReqRevComPullReqUrl :: !URL+ }+ deriving (Eq, Show, Typeable, Data, Generic)++instance NFData HookPullRequestReviewComment where rnf = genericRnf+++-- Aeson Instances++instance FromJSON HookIssue where+ parseJSON = withObject "HookIssue" $ \o -> HookIssue+ <$> o .: "url"+ <*> o .: "labels_url"+ <*> o .: "comments_url"+ <*> o .: "events_url"+ <*> o .: "html_url"+ <*> o .: "id"+ <*> o .: "number"+ <*> o .: "title"+ <*> o .: "user"+ <*> o .: "labels"+ <*> o .: "state"+ <*> o .: "locked"+ <*> o .: "assignee"+ <*> o .: "milestone"+ <*> o .: "comments"+ <*> o .: "created_at"+ <*> o .: "updated_at"+ <*> o .:? "closed_at"+ <*> o .: "body"++instance FromJSON HookRepository where+ parseJSON = withObject "HookRepository" $ \o -> HookRepository+ <$> o .: "id"+ <*> o .: "name"+ <*> o .: "full_name"+ <*> ((Right <$> o .: "owner") <|> (Left <$> o .: "owner")) -- try complex form first+ <*> o .: "private"+ <*> o .: "html_url"+ <*> o .:? "description" .!= T.empty+ <*> o .: "fork"+ <*> o .: "url"+ <*> o .: "forks_url"+ <*> o .: "keys_url"+ <*> o .: "collaborators_url"+ <*> o .: "teams_url"+ <*> o .: "hooks_url"+ <*> o .: "issue_events_url"+ <*> o .: "events_url"+ <*> o .: "assignees_url"+ <*> o .: "branches_url"+ <*> o .: "tags_url"+ <*> o .: "blobs_url"+ <*> o .: "git_tags_url"+ <*> o .: "git_refs_url"+ <*> o .: "trees_url"+ <*> o .: "statuses_url"+ <*> o .: "languages_url"+ <*> o .: "stargazers_url"+ <*> o .: "contributors_url"+ <*> o .: "subscribers_url"+ <*> o .: "subscription_url"+ <*> o .: "commits_url"+ <*> o .: "git_commits_url"+ <*> o .: "comments_url"+ <*> o .: "issue_comment_url"+ <*> o .: "contents_url"+ <*> o .: "compare_url"+ <*> o .: "merges_url"+ <*> o .: "archive_url"+ <*> o .: "downloads_url"+ <*> o .: "issues_url"+ <*> o .: "pulls_url"+ <*> o .: "milestones_url"+ <*> o .: "notifications_url"+ <*> o .: "labels_url"+ <*> o .: "releases_url"+ -- FIXME: Wrap optional number/stringified UTCTime in a helper function? See PushEvent fixture+ <*> ((o .: "created_at") <|> (posixSecondsToUTCTime <$> o .: "created_at"))+ <*> ((o .: "updated_at") <|> (posixSecondsToUTCTime <$> o .: "updated_at"))+ <*> ((o .: "pushed_at") <|> (posixSecondsToUTCTime <$> o .: "pushed_at"))+ <*> o .: "git_url"+ <*> o .: "ssh_url"+ <*> o .: "clone_url"+ <*> o .: "svn_url"+ <*> o .:? "homepage"+ <*> o .: "size"+ <*> o .: "stargazers_count"+ <*> o .: "watchers_count"+ <*> o .: "language"+ <*> o .: "has_issues"+ <*> o .: "has_downloads"+ <*> o .: "has_wiki"+ <*> o .: "has_pages"+ <*> o .: "forks_count"+ <*> o .:? "mirror_url"+ <*> o .: "open_issues_count"+ <*> o .: "default_branch"++instance FromJSON HookRepositorySimple where+ parseJSON = withObject "HookRepositorySimple" $ \o -> HookRepositorySimple+ <$> o .: "id"+ <*> o .: "name"+ <*> o .: "full_name"++instance FromJSON HookRepositoryLabel where+ parseJSON = withObject "HookRepositoryLabel" $ \o -> HookRepositoryLabel+ <$> o .: "url"+ <*> o .: "name"+ <*> o .: "color"++instance FromJSON HookUser where+ parseJSON = withObject "HookUser" $ \o -> HookUser+ <$> o .: "login"+ <*> o .: "id"+ <*> o .: "avatar_url"+ <*> o .: "gravatar_id"+ <*> o .: "url"+ <*> o .: "html_url"+ <*> o .: "followers_url"+ <*> o .: "following_url"+ <*> o .: "gists_url"+ <*> o .: "starred_url"+ <*> o .: "subscriptions_url"+ <*> o .: "organizations_url"+ <*> o .: "repos_url"+ <*> o .: "events_url"+ <*> o .: "received_events_url"+ <*> o .: "type"+ <*> o .: "site_admin"++instance FromJSON HookSimpleUser where+ parseJSON = withObject "HookSimpleUser" $ \o -> HookSimpleUser+ <$> o .: "name"+ <*> o .: "email"+ <*> o .:? "username"++instance FromJSON HookOrganization where+ parseJSON = withObject "HookOrganization" $ \o -> HookOrganization+ <$> o .: "login"+ <*> o .: "id"+ <*> o .: "url"+ <*> o .: "repos_url"+ <*> o .: "events_url"+ <*> o .:? "hooks_url"+ <*> o .:? "issues_url"+ <*> o .: "members_url"+ <*> o .: "public_members_url"+ <*> o .: "avatar_url"+ <*> o .:? "description" .!= T.empty++instance FromJSON HookOrganizationInvitation where+ parseJSON = withObject "HookOrganizationInvitation" $ \o -> HookOrganizationInvitation+ <$> o .: "id"+ <*> o .: "login"+ <*> o .: "email"+ <*> o .: "role"++instance FromJSON HookOrganizationMembership where+ parseJSON = withObject "HookOrganizationMembership" $ \o -> HookOrganizationMembership+ <$> o .: "url"+ <*> o .: "state"+ <*> o .: "role"+ <*> o .: "organization_url"+ <*> o .: "user"++instance FromJSON HookTeam where+ parseJSON = withObject "HookTeam" $ \o -> HookTeam+ <$> o .: "name"+ <*> o .: "id"+ <*> o .: "slug"+ <*> o .: "permission"+ <*> o .: "url"+ <*> o .: "members_url"+ <*> o .: "repositories_url"++instance FromJSON HookMilestone where+ parseJSON = withObject "HookMilestone" $ \o -> HookMilestone+ <$> o .: "url"+ <*> o .: "html_url"+ <*> o .: "labels_url"+ <*> o .: "id"+ <*> o .: "number"+ <*> o .: "title"+ <*> o .: "description"+ <*> o .: "creator"+ <*> o .: "open_issues"+ <*> o .: "closed_issues"+ <*> o .: "state"+ <*> o .: "created_at"+ <*> o .: "updated_at"+ <*> o .: "due_on"+ <*> o .: "closed_at"++instance FromJSON HookMembership where+ parseJSON = withObject "HookMembership" $ \o -> HookMembership+ <$> o .: "url"+ <*> o .: "state"+ <*> o .: "role"+ <*> o .: "organization_url"+ <*> o .: "user"++instance FromJSON HookProject where+ parseJSON = withObject "HookProject" $ \o -> HookProject+ <$> o .: "owner_url"+ <*> o .: "url"+ <*> o .: "columns_url"+ <*> o .: "id"+ <*> o .: "name"+ <*> o .: "body"+ <*> o .: "number"+ <*> o .: "state"+ <*> o .: "creator"+ <*> o .: "created_at"+ <*> o .: "updated_at"++instance FromJSON HookProjectCard where+ parseJSON = withObject "HookProjectCard" $ \o -> HookProjectCard+ <$> o .: "url"+ <*> o .: "column_url"+ <*> o .: "column_id"+ <*> o .: "id"+ <*> o .:? "note"+ <*> o .: "creator"+ <*> o .: "created_at"+ <*> o .: "updated_at"+ <*> o .: "content_url"++instance FromJSON HookProjectColumn where+ parseJSON = withObject "HookProjectColumn" $ \o -> HookProjectColumn+ <$> o .: "url"+ <*> o .: "project_url"+ <*> o .: "cards_url"+ <*> o .: "id"+ <*> o .: "name"+ <*> o .: "created_at"+ <*> o .: "updated_at"++instance FromJSON HookIssueLabels where+ parseJSON = withObject "HookIssueLabels" $ \o -> HookIssueLabels+ <$> o .:? "id"+ <*> o .: "url"+ <*> o .: "name"+ <*> o .: "color"+ <*> o .:? "default" .!= False++instance FromJSON HookCommit where+ parseJSON = withObject "HookCommit" $ \o -> HookCommit+ <$> (o .: "sha" <|> o .: "id")+ <*> o .: "url"+ <*> o .:? "html_url"+ <*> o .:? "comments_url"+ <*> ((Right <$> o .: "author") <|> (Left <$> o .: "author")) -- try complex form first+ <*> ((Right <$> o .: "committer") <|> (Left <$> o .: "committer")) -- try complex form first++instance FromJSON HookRelease where+ parseJSON = withObject "HookRelease" $ \o -> HookRelease+ <$> o .: "url"+ <*> o .: "assets_url"+ <*> o .: "upload_url"+ <*> o .: "html_url"+ <*> o .: "id"+ <*> o .: "tag_name"+ <*> o .: "target_commitish"+ <*> o .:? "name"+ <*> o .: "draft"+ <*> o .: "author"+ <*> o .: "prerelease"+ <*> o .: "created_at"+ <*> o .:? "published_at"+ <*> o .: "tarball_url"+ <*> o .: "zipball_url"+ <*> o .:? "body"++instance FromJSON HookPullRequest where+ parseJSON = withObject "HookPullRequest" $ \o -> HookPullRequest+ <$> o .: "url"+ <*> o .: "id"+ <*> o .: "html_url"+ <*> o .: "diff_url"+ <*> o .: "patch_url"+ <*> o .: "issue_url"+ <*> o .: "number"+ <*> o .: "state"+ <*> o .: "locked"+ <*> o .: "title"+ <*> o .: "user"+ <*> o .: "body"+ <*> o .: "created_at"+ <*> o .: "updated_at"+ <*> o .:? "closed_at"+ <*> o .:? "merged_at"+ <*> o .:? "merge_commit_sha"+ <*> o .:? "assignee"+ <*> o .:? "milestone"+ <*> o .: "commits_url"+ <*> o .: "review_comments_url"+ <*> o .: "review_comment_url"+ <*> o .: "comments_url"+ <*> o .: "statuses_url"+ -- <*> o .: "merged"+ -- <*> o .: "mergeable"+ -- <*> o .: "mergeable_state"+ -- <*> o .: "merged_by"+ <*> o .:? "comments"+ <*> o .:? "review_comments"+ <*> o .:? "commits"+ <*> o .:? "additions"+ <*> o .:? "deletions"+ <*> o .:? "changed_files"++instance FromJSON HookPullRequestReview where+ parseJSON = withObject "HookPullRequestReview" $ \o -> HookPullRequestReview+ <$> o .: "id"+ <*> o .: "user"+ <*> o .: "body"+ <*> o .: "submitted_at"+ <*> o .: "state"+ <*> o .: "html_url"+ <*> o .: "pull_request_url"++instance FromJSON HookInstallation where+ parseJSON = withObject "HookInstallation" $ \o -> HookInstallation+ <$> o .: "id"+ <*> o .: "account"+ <*> o .: "repository_selection"+ <*> o .: "access_tokens_url"+ <*> o .: "repositories_url"++instance FromJSON HookDeployment where+ parseJSON = withObject "HookDeployment" $ \o -> HookDeployment+ <$> o .: "url"+ <*> o .: "id"+ <*> o .: "sha"+ <*> o .: "ref"+ <*> o .: "task"+ <*> o .: "environment"+ <*> o .:? "description"+ <*> o .: "creator"+ <*> o .: "created_at"+ <*> o .: "updated_at"+ <*> o .: "statuses_url"+ <*> o .: "repository_url"++instance FromJSON HookDeploymentStatus where+ parseJSON = withObject "HookDeploymentStatus" $ \o -> HookDeploymentStatus+ <$> o .: "url"+ <*> o .: "id"+ <*> o .: "state"+ <*> o .: "creator"+ <*> o .:? "description"+ <*> o .:? "target_url"+ <*> o .: "created_at"+ <*> o .: "updated_at"+ <*> o .: "deployment_url"+ <*> o .: "repository_url"++instance FromJSON HookWikiPage where+ parseJSON = withObject "HookWikiPage" $ \o -> HookWikiPage+ <$> o .: "page_name"+ <*> o .: "title"+ <*> o .:? "summary"+ <*> o .: "action"+ <*> o .: "sha"+ <*> o .: "html_url"++instance FromJSON HookPageBuildResult where+ parseJSON = withObject "HookPageBuildResult" $ \o -> HookPageBuildResult+ <$> o .: "url"+ <*> o .: "status"+ <*> (o .: "error" >>= \e -> e .:? "message")+ <*> o .: "pusher"+ <*> o .: "commit"+ <*> o .: "duration"+ <*> o .: "created_at"+ <*> o .: "updated_at"++instance FromJSON HookIssueComment where+ parseJSON = withObject "HookIssueComment" $ \o -> HookIssueComment+ <$> o .: "url"+ <*> o .: "html_url"+ <*> o .: "issue_url"+ <*> o .: "id"+ <*> o .: "user"+ <*> o .: "created_at"+ <*> o .: "updated_at"+ <*> o .: "body"++instance FromJSON HookCommitComment where+ parseJSON = withObject "HookCommitComment" $ \o -> HookCommitComment+ <$> o .: "url"+ <*> o .: "html_url"+ <*> o .: "id"+ <*> o .: "user"+ <*> o .:? "position"+ <*> o .:? "line"+ <*> o .:? "path"+ <*> o .: "commit_id"+ <*> o .: "created_at"+ <*> o .: "updated_at"+ <*> o .: "body"++instance FromJSON HookPullRequestReviewComment where+ parseJSON = withObject "HookPullRequestReviewComment" $ \o -> HookPullRequestReviewComment+ <$> o .: "url"+ <*> o .: "id"+ <*> o .: "diff_hunk"+ <*> o .: "path"+ <*> o .: "position"+ <*> o .: "original_position"+ <*> o .: "commit_id"+ <*> o .: "original_commit_id"+ <*> o .: "user"+ <*> o .: "body"+ <*> o .: "created_at"+ <*> o .: "updated_at"+ <*> o .: "html_url"+ <*> o .: "pull_request_url"
+ src/GitHub/Data/Webhooks/Secure.hs view
@@ -0,0 +1,52 @@+-- See <https://developer.github.com/webhooks/securing/>.+module GitHub.Data.Webhooks.Secure+ ( isSecurePayload+ , assertSecurePayload+ ) where++import Crypto.Hash.Algorithms (SHA1)+import Crypto.MAC.HMAC (HMAC(..), hmac)+import Control.Monad (unless)+import Control.Exception (Exception, throwIO)+import Data.ByteArray (convert, constEq)+import Data.Monoid ((<>))+import Data.ByteString (ByteString)+import Data.Text (Text)+import qualified Data.ByteString.Base16 as B16+import qualified Data.Text.Encoding as E+++-- The implementation of this module is partially lifted from the @github@ package.+++-- | Returns 'True' if the given HMAC digest (passed in the @X-Hub-Signature@ header)+-- agrees with the provided secret and request body. If not, this request may be forged.+isSecurePayload+ :: Text+ -> Maybe Text+ -> ByteString+ -> Bool+isSecurePayload secret shaOpt payload = maybe False (constEq ourSig) theirSig+ where+ hexDigest = B16.encode . convert . hmacGetDigest+ theirSig = E.encodeUtf8 <$> shaOpt+ ourSig = "sha1=" <> hexDigest (hmac (E.encodeUtf8 secret) payload :: HMAC SHA1)+++-- | An exception indicating that the given payload is not secure.+data PayloadNotSecure = PayloadNotSecure++instance Exception PayloadNotSecure++instance Show PayloadNotSecure where+ showsPrec _ PayloadNotSecure = showString "the origin of this request may not originate from GitHub"++-- | Like 'isSecurePayload', but throws 'PayloadNotSecure' if the payload is not secure.+assertSecurePayload+ :: Text+ -> Maybe Text+ -> ByteString+ -> IO ()+assertSecurePayload secret shaOpt payload = do+ let secure = isSecurePayload secret shaOpt payload+ unless secure $! throwIO PayloadNotSecure
+ stack.yaml view
@@ -0,0 +1,74 @@+# This file was automatically generated by 'stack init'+#+# Some commonly used options have been documented as comments in this file.+# For advanced use and comprehensive documentation of the format, please see:+# https://docs.haskellstack.org/en/stable/yaml_configuration/++# Resolver to choose a 'specific' stackage snapshot or a compiler version.+# A snapshot resolver dictates the compiler version and the set of packages+# to be used for project dependencies. For example:+#+# resolver: lts-3.5+# resolver: nightly-2015-09-21+# resolver: ghc-7.10.2+# resolver: ghcjs-0.1.0_ghc-7.10.2+# resolver:+# name: custom-snapshot+# location: "./custom-snapshot.yaml"+resolver: lts-10.0++# User packages to be built.+# Various formats can be used as shown in the example below.+#+# packages:+# - some-directory+# - https://example.com/foo/bar/baz-0.0.2.tar.gz+# - location:+# git: https://github.com/commercialhaskell/stack.git+# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a+# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a+# extra-dep: true+# subdirs:+# - auto-update+# - wai+#+# A package marked 'extra-dep: true' will only be built if demanded by a+# non-dependency (i.e. a user package), and its test suites and benchmarks+# will not be run. This is useful for tweaking upstream packages.+packages:+- .+- location: ./examples/servant-simple+ extra-dep: true+- location: ./examples/servant+ extra-dep: true+- location: ./examples/scotty+ extra-dep: true++# Dependency packages to be pulled from upstream that are not in the resolver+# (e.g., acme-missiles-0.3)+extra-deps:+- servant-github-webhook-0.3.2.1 # for github-webhooks-servant-example++# Override default flag values for local packages and extra-deps+flags: {}++# Extra package databases containing global packages+extra-package-dbs: []++# Control whether we use the GHC we find on the path+# system-ghc: true+#+# Require a specific version of stack, using version ranges+# require-stack-version: -any # Default+# require-stack-version: ">=1.5"+#+# Override the architecture used by stack, especially useful on Windows+# arch: i386+# arch: x86_64+#+# Extra directories used by stack for building+# extra-include-dirs: [/path/to/dir]+# extra-lib-dirs: [/path/to/dir]+#+# Allow a newer minor version of GHC than the snapshot specifies+# compiler-check: newer-minor