octohat 0.1.1 → 0.1.2
raw patch · 6 files changed
+29/−19 lines, 6 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Network.Octohat.Types: OrganizationName :: Text -> OrganizationName
+ Network.Octohat.Types: TeamName :: Text -> TeamName
+ Network.Octohat.Types: newtype OrganizationName
+ Network.Octohat.Types: newtype TeamName
+ Network.Octohat.Types: unOrganizationName :: OrganizationName -> Text
+ Network.Octohat.Types: unTeamName :: TeamName -> Text
- Network.Octohat: addUserToTeam :: Text -> Text -> Text -> GitHub StatusInTeam
+ Network.Octohat: addUserToTeam :: Text -> OrganizationName -> TeamName -> GitHub StatusInTeam
- Network.Octohat: keysOfTeamInOrganization :: Text -> Text -> GitHub [MemberWithKey]
+ Network.Octohat: keysOfTeamInOrganization :: OrganizationName -> TeamName -> GitHub [MemberWithKey]
- Network.Octohat: membersOfTeamInOrganization :: Text -> Text -> GitHub [Member]
+ Network.Octohat: membersOfTeamInOrganization :: OrganizationName -> TeamName -> GitHub [Member]
- Network.Octohat: teamForTeamNameInOrg :: Text -> Text -> GitHub Team
+ Network.Octohat: teamForTeamNameInOrg :: OrganizationName -> TeamName -> GitHub Team
- Network.Octohat.Members: addTeamToOrganization :: Text -> Text -> Text -> GitHub Team
+ Network.Octohat.Members: addTeamToOrganization :: TeamName -> Text -> OrganizationName -> GitHub Team
- Network.Octohat.Members: membersForOrganization :: Text -> GitHub [Member]
+ Network.Octohat.Members: membersForOrganization :: OrganizationName -> GitHub [Member]
- Network.Octohat.Members: teamsForOrganization :: Text -> GitHub [Team]
+ Network.Octohat.Members: teamsForOrganization :: OrganizationName -> GitHub [Team]
Files
- octohat.cabal +1/−1
- spec/Network/Octohat/TestData.hs +1/−1
- spec/Network/Octohat/TestUtil.hs +1/−1
- src/Network/Octohat.hs +9/−9
- src/Network/Octohat/Members.hs +7/−7
- src/Network/Octohat/Types.hs +10/−0
octohat.cabal view
@@ -1,6 +1,6 @@ Name: octohat Synopsis: A tested, minimal wrapper around GitHub's API.-Version: 0.1.1+Version: 0.1.2 License: MIT Author: Stack Builders Maintainer: hackage@stackbuilders.com
spec/Network/Octohat/TestData.hs view
@@ -50,7 +50,7 @@ loadTestOrganizationName = organization `fmap` loadEnv loadOwnerTeam :: GitHub Team-loadOwnerTeam = liftIO (organization `fmap` loadEnv) >>= flip teamForTeamNameInOrg "Owners"+loadOwnerTeam = liftIO (OrganizationName `fmap` (organization `fmap` loadEnv)) >>= flip teamForTeamNameInOrg (TeamName "Owners") loadTestAccountOne :: GitHub Member loadTestAccountOne = liftIO (accountOne `fmap` loadEnv) >>= userForUsername
spec/Network/Octohat/TestUtil.hs view
@@ -17,7 +17,7 @@ deleteAllTeams :: GitHub [DidDelete] deleteAllTeams = do testOrganization <- liftIO loadTestOrganizationName- allTeams <- teamsForOrganization testOrganization+ allTeams <- teamsForOrganization (OrganizationName testOrganization) let teamsToDelete = map teamId $ filter (\t -> teamName t /= "Owners") allTeams mapM deleteTeamFromOrganization teamsToDelete
src/Network/Octohat.hs view
@@ -16,21 +16,21 @@ -- | Gets all the members of the organization-membersOfTeamInOrganization :: T.Text -- ^ GitHub organization name- -> T.Text -- ^ GitHub team name+membersOfTeamInOrganization :: OrganizationName -- ^ GitHub organization name+ -> TeamName -- ^ GitHub team name -> GitHub [Member] membersOfTeamInOrganization nameOfOrg nameOfTeam = teamId `liftM` teamForTeamNameInOrg nameOfOrg nameOfTeam >>= membersForTeam -- | Adds a user with @nameOfUser@ to the team named @nameOfTeam@ within the organization named `nameOfOrg` addUserToTeam :: T.Text -- ^ GitHub username- -> T.Text -- ^ GitHub organization name- -> T.Text -- ^ GitHub team name+ -> OrganizationName -- ^ GitHub organization name+ -> TeamName -- ^ GitHub team name -> GitHub StatusInTeam addUserToTeam nameOfUser nameOfOrg nameOfTeam = teamId `liftM` teamForTeamNameInOrg nameOfOrg nameOfTeam >>= addMemberToTeam nameOfUser -- | Retrieves a list of members in a given team within an organization together with their public keys-keysOfTeamInOrganization :: T.Text -- ^ GitHub organization name- -> T.Text -- ^ GitHub team name+keysOfTeamInOrganization :: OrganizationName -- ^ GitHub organization name+ -> TeamName -- ^ GitHub team name -> GitHub [MemberWithKey] keysOfTeamInOrganization nameOfOrg nameOfTeam = do members <- membersOfTeamInOrganization nameOfOrg nameOfTeam@@ -38,12 +38,12 @@ let memberFingerprints = publicKeySetToFingerprints pubKeys return $ makeMembersWithKey members pubKeys memberFingerprints -teamForTeamNameInOrg :: T.Text -- ^ Organization name- -> T.Text -- ^ Team name+teamForTeamNameInOrg :: OrganizationName -- ^ Organization name+ -> TeamName -- ^ Team name -> GitHub Team teamForTeamNameInOrg nameOfOrg nameOfTeam = do teams <- teamsForOrganization nameOfOrg- tryHead NotFound (teamsWithName nameOfTeam teams)+ tryHead NotFound (teamsWithName (unTeamName nameOfTeam) teams) teamsWithName :: T.Text -> [Team] -> [Team] teamsWithName nameOfTeam = filter (hasName nameOfTeam)
src/Network/Octohat/Members.hs view
@@ -23,11 +23,11 @@ -- | Takes a new team name, the description of a team and the organization where to create the team -- and creates a new team. Regular GitHub authorization/authentication applies.-addTeamToOrganization :: T.Text -- ^ Name of new team+addTeamToOrganization :: TeamName -- ^ Name of new team -> T.Text -- ^ Description of new team- -> T.Text -- ^ Organization name where the team will be created+ -> OrganizationName -- ^ Organization name where the team will be created -> GitHub Team-addTeamToOrganization nameOfNewTeam descOfTeam orgName =+addTeamToOrganization (TeamName nameOfNewTeam) descOfTeam (OrganizationName orgName) = postRequestTo (composeEndpoint ["orgs", orgName, "teams"]) (TeamCreateRequest nameOfNewTeam descOfTeam) -- | Deletes a team from an organization using its team ID.@@ -36,9 +36,9 @@ deleteTeamFromOrganization idOfTeam = deleteRequestTo (composeEndpoint ["teams", T.pack $ show idOfTeam]) -- | Returns a list of members of an organization with the given name.-membersForOrganization :: T.Text -- ^ The organization name+membersForOrganization :: OrganizationName -- ^ The organization name -> GitHub [Member]-membersForOrganization nameOfOrg = getRequestTo (composeEndpoint ["orgs", nameOfOrg, "members"])+membersForOrganization (OrganizationName nameOfOrg) = getRequestTo (composeEndpoint ["orgs", nameOfOrg, "members"]) -- | Returns a list of members of a team with the given team ID. membersForTeam :: Integer -- ^ The team ID@@ -46,9 +46,9 @@ membersForTeam idOfTeam = getRequestTo (composeEndpoint ["teams", T.pack $ show idOfTeam, "members"]) -- | Returns a list of teams for the organization with the given name-teamsForOrganization :: T.Text -- ^ The organization name+teamsForOrganization :: OrganizationName -- ^ The organization name -> GitHub [Team]-teamsForOrganization nameOfOrg = getRequestTo (composeEndpoint ["orgs", nameOfOrg, "teams"])+teamsForOrganization (OrganizationName nameOfOrg) = getRequestTo (composeEndpoint ["orgs", nameOfOrg, "teams"]) -- | Adds a member to a team, might invite or add the member. Refer to 'StatusInTeam' addMemberToTeam :: T.Text -- ^ The GitHub username to add to a team
src/Network/Octohat/Types.hs view
@@ -5,6 +5,8 @@ , MemberWithKey(..) , Team(..) , BearerToken(..)+ , OrganizationName(..)+ , TeamName(..) , StatusInTeam(..) , EmptyBody(..) , DidDelete(..)@@ -141,6 +143,14 @@ -- | GitHub's OAuth 2.0 bearer token. This is simply added in an -- Authorization header newtype BearerToken = BearerToken { unBearerToken :: T.Text }++-- | OrganizationName is added in order to have type safety in functions where the+-- Organization name and the Team name are both strings and may be confused+newtype OrganizationName = OrganizationName { unOrganizationName :: T.Text }++-- | TeamName is added in order to have type safety in functions where the+-- Team name and the Organization name are both strings and may be confused+newtype TeamName = TeamName { unTeamName :: T.Text } -- | The monad transformer where all operations run. Supports initial configuration -- through a Reader monad and the possibility of failure through Either