|
|
|
@ -7,6 +7,22 @@ package github |
|
|
|
|
|
|
|
import "fmt" |
|
|
|
|
|
|
|
// Membership represents the status of a user's membership in an organization or team.
|
|
|
|
type Membership struct { |
|
|
|
URL *string `json:"url,omitempty"` |
|
|
|
|
|
|
|
// State is the user's status within the organization or team.
|
|
|
|
// Possible values are: "active", "pending"
|
|
|
|
State *string `json:"state,omitempty"` |
|
|
|
|
|
|
|
// For organization membership, the API URL of the organization.
|
|
|
|
OrganizationURL *string `json:"organization_url,omitempty"` |
|
|
|
} |
|
|
|
|
|
|
|
func (m Membership) String() string { |
|
|
|
return Stringify(m) |
|
|
|
} |
|
|
|
|
|
|
|
// ListMembersOptions specifies optional parameters to the
|
|
|
|
// OrganizationsService.ListMembers method.
|
|
|
|
type ListMembersOptions struct { |
|
|
|
@ -120,3 +136,86 @@ func (s *OrganizationsService) ConcealMembership(org, user string) (*Response, e |
|
|
|
|
|
|
|
return s.client.Do(req, nil) |
|
|
|
} |
|
|
|
|
|
|
|
// ListOrgMembershipsOptions specifies optional parameters to the
|
|
|
|
// OrganizationsService.ListOrgMemberships method.
|
|
|
|
type ListOrgMembershipsOptions struct { |
|
|
|
// Filter memberships to include only those withe the specified state.
|
|
|
|
// Possible values are: "active", "pending".
|
|
|
|
State string `url:"state,omitempty"` |
|
|
|
|
|
|
|
ListOptions |
|
|
|
} |
|
|
|
|
|
|
|
// ListOrgMemberships lists the organization memberships for the authenticated user.
|
|
|
|
//
|
|
|
|
// GitHub API docs: https://developer.github.com/v3/orgs/members/#list-your-organization-memberships
|
|
|
|
func (s *OrganizationsService) ListOrgMemberships(opt *ListOrgMembershipsOptions) ([]Membership, *Response, error) { |
|
|
|
u := "user/memberships/orgs" |
|
|
|
u, err := addOptions(u, opt) |
|
|
|
if err != nil { |
|
|
|
return nil, nil, err |
|
|
|
} |
|
|
|
|
|
|
|
req, err := s.client.NewRequest("GET", u, nil) |
|
|
|
if err != nil { |
|
|
|
return nil, nil, err |
|
|
|
} |
|
|
|
|
|
|
|
// TODO: remove custom Accept header when this API fully launches
|
|
|
|
req.Header.Set("Accept", mediaTypeMembershipPreview) |
|
|
|
|
|
|
|
var memberships []Membership |
|
|
|
resp, err := s.client.Do(req, &memberships) |
|
|
|
if err != nil { |
|
|
|
return nil, resp, err |
|
|
|
} |
|
|
|
|
|
|
|
return memberships, resp, err |
|
|
|
} |
|
|
|
|
|
|
|
// GetOrgMembership gets the membership for the authenticated user for the
|
|
|
|
// specified organization.
|
|
|
|
//
|
|
|
|
// GitHub API docs: https://developer.github.com/v3/orgs/members/#get-your-organization-membership
|
|
|
|
func (s *OrganizationsService) GetOrgMembership(org string) (*Membership, *Response, error) { |
|
|
|
u := fmt.Sprintf("user/memberships/orgs/%v", org) |
|
|
|
req, err := s.client.NewRequest("GET", u, nil) |
|
|
|
if err != nil { |
|
|
|
return nil, nil, err |
|
|
|
} |
|
|
|
|
|
|
|
// TODO: remove custom Accept header when this API fully launches
|
|
|
|
req.Header.Set("Accept", mediaTypeMembershipPreview) |
|
|
|
|
|
|
|
membership := new(Membership) |
|
|
|
resp, err := s.client.Do(req, membership) |
|
|
|
if err != nil { |
|
|
|
return nil, resp, err |
|
|
|
} |
|
|
|
|
|
|
|
return membership, resp, err |
|
|
|
} |
|
|
|
|
|
|
|
// EditOrgMembership edits the membership for the authenticated user for the
|
|
|
|
// specified organization.
|
|
|
|
//
|
|
|
|
// GitHub API docs: https://developer.github.com/v3/orgs/members/#edit-your-organization-membership
|
|
|
|
func (s *OrganizationsService) EditOrgMembership(org string, membership *Membership) (*Membership, *Response, error) { |
|
|
|
u := fmt.Sprintf("user/memberships/orgs/%v", org) |
|
|
|
req, err := s.client.NewRequest("PATCH", u, membership) |
|
|
|
if err != nil { |
|
|
|
return nil, nil, err |
|
|
|
} |
|
|
|
|
|
|
|
// TODO: remove custom Accept header when this API fully launches
|
|
|
|
req.Header.Set("Accept", mediaTypeMembershipPreview) |
|
|
|
|
|
|
|
m := new(Membership) |
|
|
|
resp, err := s.client.Do(req, m) |
|
|
|
if err != nil { |
|
|
|
return nil, resp, err |
|
|
|
} |
|
|
|
|
|
|
|
return m, resp, err |
|
|
|
} |