mirror of
https://github.com/jlengrand/github-api.git
synced 2026-04-17 08:21:22 +00:00
Added the membership API for the authenticated user.
This commit is contained in:
84
src/main/java/org/kohsuke/github/GHMembership.java
Normal file
84
src/main/java/org/kohsuke/github/GHMembership.java
Normal file
@@ -0,0 +1,84 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* Represents a membership of a user in an organization.
|
||||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
* @see GHMyself#listOrgMemberships()
|
||||
*/
|
||||
public class GHMembership /* extends GHObject --- but it doesn't have id, created_at, etc. */ {
|
||||
GitHub root;
|
||||
|
||||
String url;
|
||||
String state;
|
||||
String role;
|
||||
GHUser user;
|
||||
GHOrganization organization;
|
||||
|
||||
public URL getUrl() {
|
||||
return GitHub.parseURL(url);
|
||||
}
|
||||
|
||||
public State getState() {
|
||||
return Enum.valueOf(State.class, state.toUpperCase(Locale.ENGLISH));
|
||||
}
|
||||
|
||||
public Role getRole() {
|
||||
return Enum.valueOf(Role.class, role.toUpperCase(Locale.ENGLISH));
|
||||
}
|
||||
|
||||
public GHUser getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
public GHOrganization getOrganization() {
|
||||
return organization;
|
||||
}
|
||||
|
||||
/**
|
||||
* Accepts a pending invitation to an organization.
|
||||
*
|
||||
* @see GHMyself#getMembership(GHOrganization)
|
||||
*/
|
||||
public void activate() throws IOException {
|
||||
root.retrieve().method("PATCH").with("state",State.ACTIVE).to(url,this);
|
||||
}
|
||||
|
||||
/*package*/ GHMembership wrap(GitHub root) {
|
||||
this.root = root;
|
||||
if (user!=null) user = root.getUser(user.wrapUp(root));
|
||||
if (organization!=null) organization.wrapUp(root);
|
||||
return this;
|
||||
}
|
||||
|
||||
/*package*/ static void wrap(GHMembership[] page, GitHub root) {
|
||||
for (GHMembership m : page)
|
||||
m.wrap(root);
|
||||
}
|
||||
|
||||
/**
|
||||
* Role of a user in an organization.
|
||||
*/
|
||||
public enum Role {
|
||||
/**
|
||||
* Organization owner.
|
||||
*/
|
||||
ADMIN,
|
||||
/**
|
||||
* Non-owner organization member.
|
||||
*/
|
||||
MEMBER;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether a role is currently active or waiting for acceptance (pending)
|
||||
*/
|
||||
public enum State {
|
||||
ACTIVE,
|
||||
PENDING;
|
||||
}
|
||||
}
|
||||
@@ -178,6 +178,39 @@ public class GHMyself extends GHUser {
|
||||
return listRepositories();
|
||||
}
|
||||
|
||||
/**
|
||||
* List your organization memberships
|
||||
*/
|
||||
public PagedIterable<GHMembership> listOrgMemberships() {
|
||||
return listOrgMemberships(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* List your organization memberships
|
||||
*
|
||||
* @param state
|
||||
* Filter by a specific state
|
||||
*/
|
||||
public PagedIterable<GHMembership> listOrgMemberships(final GHMembership.State state) {
|
||||
return new PagedIterable<GHMembership>() {
|
||||
public PagedIterator<GHMembership> _iterator(int pageSize) {
|
||||
return new PagedIterator<GHMembership>(root.retrieve().with("state",state).asIterator("/user/memberships/orgs", GHMembership[].class, pageSize)) {
|
||||
@Override
|
||||
protected void wrapUp(GHMembership[] page) {
|
||||
GHMembership.wrap(page,root);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets your membership in a specific organization.
|
||||
*/
|
||||
public GHMembership getMembership(GHOrganization o) throws IOException {
|
||||
return root.retrieve().to("/user/memberships/orgs/"+o.getLogin(),GHMembership.class).wrap(root);
|
||||
}
|
||||
|
||||
// public void addEmails(Collection<String> emails) throws IOException {
|
||||
//// new Requester(root,ApiVersion.V3).withCredential().to("/user/emails");
|
||||
// root.retrieveWithAuth3()
|
||||
|
||||
@@ -214,4 +214,9 @@ public class GHUser extends GHPerson {
|
||||
if (tail.length()>0 && !tail.startsWith("/")) tail='/'+tail;
|
||||
return "/users/" + login + tail;
|
||||
}
|
||||
|
||||
/*package*/ GHUser wrapUp(GitHub root) {
|
||||
super.wrapUp(root);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -340,7 +340,7 @@ public class GitHub {
|
||||
/**
|
||||
* Interns the given {@link GHUser}.
|
||||
*/
|
||||
protected GHUser getUser(GHUser orig) throws IOException {
|
||||
protected GHUser getUser(GHUser orig) {
|
||||
GHUser u = users.get(orig.getLogin());
|
||||
if (u==null) {
|
||||
orig.root = this;
|
||||
|
||||
Reference in New Issue
Block a user