diff --git a/src/elvis_github.erl b/src/elvis_github.erl index 5e8932f..cd3c1f2 100644 --- a/src/elvis_github.erl +++ b/src/elvis_github.erl @@ -26,6 +26,7 @@ add_team_repository/3, add_team_member/3, delete_team_member/3, + team_membership/3, %% Hooks hooks/2, create_webhook/4, @@ -248,6 +249,15 @@ delete_team_member(Cred, TeamId, Username) -> Error end. +-spec team_membership(credentials(), integer(), string()) -> active | pending | none. +team_membership(Cred, TeamId, Username) -> + Url = make_url(team_membership, {TeamId, Username}), + case api_call_json_result(Cred, Url) of + {ok, #{<<"state">> := <<"active">>}} -> active; + {ok, #{<<"state">> := <<"pending">>}} -> pending; + {error, {"404", _, _}} -> none + end. + %% Hooks -spec hooks(credentials(), repository()) -> result(). @@ -362,6 +372,9 @@ make_url(teams, {TeamId, Username}) -> make_url(teams_repos, {TeamId, RepoFullName}) -> Url = ?GITHUB_API ++ "/teams/~p/repos/~s", io_lib:format(Url, [TeamId, RepoFullName]); +make_url(team_membership, {TeamId, Username}) -> + Url = ?GITHUB_API ++ "/teams/~p/membership/~s", + io_lib:format(Url, [TeamId, Username]); %% Repositories make_url(repo, {RepoFullName}) ->