Skip to content

Commit 6b42b30

Browse files
Manage orgs in GitHub Enterprise
1 parent e4d0b9f commit 6b42b30

File tree

5 files changed

+104
-0
lines changed

5 files changed

+104
-0
lines changed

github.cabal

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ library
9090
GitHub.Data.DeployKeys
9191
GitHub.Data.Deployments
9292
GitHub.Data.Email
93+
GitHub.Data.Enterprise.Organizations
9394
GitHub.Data.Events
9495
GitHub.Data.Gists
9596
GitHub.Data.GitData
@@ -116,6 +117,7 @@ library
116117
GitHub.Endpoints.Activity.Notifications
117118
GitHub.Endpoints.Activity.Starring
118119
GitHub.Endpoints.Activity.Watching
120+
GitHub.Endpoints.Enterprise.Organizations
119121
GitHub.Endpoints.Gists
120122
GitHub.Endpoints.Gists.Comments
121123
GitHub.Endpoints.GitData.Blobs

src/GitHub.hs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ module GitHub (
5656
watchersForR,
5757
reposWatchedByR,
5858

59+
-- * Enterprise
60+
-- | See <https://developer.github.com/enterprise/v3/enterprise-admin/>
61+
62+
-- ** Organizations
63+
-- | See <https://developer.github.com/enterprise/v3/enterprise-admin/orgs/>
64+
createOrganizationR,
65+
renameOrganizationR,
66+
5967
-- * Gists
6068
-- | See <https://developer.github.com/v3/gists/>
6169
--
@@ -401,6 +409,7 @@ import GitHub.Endpoints.Activity.Events
401409
import GitHub.Endpoints.Activity.Notifications
402410
import GitHub.Endpoints.Activity.Starring
403411
import GitHub.Endpoints.Activity.Watching
412+
import GitHub.Endpoints.Enterprise.Organizations
404413
import GitHub.Endpoints.Gists
405414
import GitHub.Endpoints.Gists.Comments
406415
import GitHub.Endpoints.GitData.Blobs

src/GitHub/Data.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ module GitHub.Data (
4141
module GitHub.Data.DeployKeys,
4242
module GitHub.Data.Deployments,
4343
module GitHub.Data.Email,
44+
module GitHub.Data.Enterprise.Organizations,
4445
module GitHub.Data.Events,
4546
module GitHub.Data.Gists,
4647
module GitHub.Data.GitData,
@@ -73,6 +74,7 @@ import GitHub.Data.Definitions
7374
import GitHub.Data.DeployKeys
7475
import GitHub.Data.Deployments
7576
import GitHub.Data.Email
77+
import GitHub.Data.Enterprise.Organizations
7678
import GitHub.Data.Events
7779
import GitHub.Data.Gists
7880
import GitHub.Data.GitData
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
-----------------------------------------------------------------------------
2+
-- |
3+
-- License : BSD-3-Clause
4+
-- Maintainer : Oleg Grenrus <[email protected]>
5+
--
6+
module GitHub.Data.Enterprise.Organizations where
7+
8+
import GitHub.Data.Definitions
9+
import GitHub.Data.Name (Name)
10+
import GitHub.Data.URL (URL)
11+
import GitHub.Internal.Prelude
12+
import Prelude ()
13+
14+
data CreateOrganization = CreateOrganization
15+
{ createOrganizationLogin :: !(Name Organization)
16+
, createOrganizationAdmin :: !(Name User)
17+
, createOrganizationProfileName :: !(Maybe Text)
18+
}
19+
deriving (Show, Data, Typeable, Eq, Ord, Generic)
20+
21+
instance NFData CreateOrganization where rnf = genericRnf
22+
instance Binary CreateOrganization
23+
24+
data RenameOrganization = RenameOrganization
25+
{ renameOrganizationLogin :: !(Name Organization)
26+
}
27+
deriving (Show, Data, Typeable, Eq, Ord, Generic)
28+
29+
instance NFData RenameOrganization where rnf = genericRnf
30+
instance Binary RenameOrganization
31+
32+
data RenameOrganizationResponse = RenameOrganizationResponse
33+
{ renameOrganizationResponseMessage :: !Text
34+
, renameOrganizationResponseUrl :: !URL
35+
}
36+
deriving (Show, Data, Typeable, Eq, Ord, Generic)
37+
38+
instance NFData RenameOrganizationResponse where rnf = genericRnf
39+
instance Binary RenameOrganizationResponse
40+
41+
-- JSON Instances
42+
43+
instance ToJSON CreateOrganization where
44+
toJSON (CreateOrganization login admin profileName) =
45+
object $ filter notNull
46+
[ "login" .= login
47+
, "admin" .= admin
48+
, "profile_name" .= profileName
49+
]
50+
where
51+
notNull (_, Null) = False
52+
notNull (_, _) = True
53+
54+
instance ToJSON RenameOrganization where
55+
toJSON (RenameOrganization login) =
56+
object
57+
[ "login" .= login
58+
]
59+
60+
instance FromJSON RenameOrganizationResponse where
61+
parseJSON = withObject "RenameOrganizationResponse" $ \o ->
62+
RenameOrganizationResponse
63+
<$> o .: "message"
64+
<*> o .: "url"
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----------------------------------------------------------------------------
2+
-- |
3+
-- License : BSD-3-Clause
4+
-- Maintainer : Oleg Grenrus <[email protected]>
5+
--
6+
-- The GitHub Enterprise orgs API as described on <https://developer.github.com/enterprise/v3/enterprise-admin/orgs/>.
7+
module GitHub.Endpoints.Enterprise.Organizations (
8+
createOrganizationR,
9+
renameOrganizationR,
10+
module GitHub.Data,
11+
) where
12+
13+
import GitHub.Data
14+
import GitHub.Internal.Prelude
15+
import Prelude ()
16+
17+
-- | Create an organization.
18+
-- See <https://developer.github.com/enterprise/v3/enterprise-admin/orgs/#create-an-organization>
19+
createOrganizationR :: CreateOrganization -> Request 'RW SimpleOrganization
20+
createOrganizationR =
21+
command Post ["admin", "organizations"] . encode
22+
23+
-- | Rename an organization.
24+
-- See <https://developer.github.com/enterprise/v3/enterprise-admin/orgs/#rename-an-organization>
25+
renameOrganizationR :: Name Organization -> RenameOrganization -> Request 'RW RenameOrganizationResponse
26+
renameOrganizationR org =
27+
command Patch ["admin", "organizations", toPathPart org] . encode

0 commit comments

Comments
 (0)