| package gerrit |
| |
| import ( |
| "fmt" |
| ) |
| |
| // AccountsService contains Account related REST endpoints |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html |
| type AccountsService struct { |
| client *Client |
| } |
| |
| // AccountInfo entity contains information about an account. |
| type AccountInfo struct { |
| AccountID int `json:"_account_id,omitempty"` |
| Name string `json:"name,omitempty"` |
| Email string `json:"email,omitempty"` |
| Username string `json:"username,omitempty"` |
| |
| // Avatars lists avatars of various sizes for the account. |
| // This field is only populated if the avatars plugin is enabled. |
| Avatars []struct { |
| URL string `json:"url,omitempty"` |
| Height int `json:"height,omitempty"` |
| } `json:"avatars,omitempty"` |
| } |
| |
| // SSHKeyInfo entity contains information about an SSH key of a user. |
| type SSHKeyInfo struct { |
| Seq int `json:"seq"` |
| SSHPublicKey string `json:"ssh_public_key"` |
| EncodedKey string `json:"encoded_key"` |
| Algorithm string `json:"algorithm"` |
| Comment string `json:"comment,omitempty"` |
| Valid bool `json:"valid"` |
| } |
| |
| // UsernameInput entity contains information for setting the username for an account. |
| type UsernameInput struct { |
| Username string `json:"username"` |
| } |
| |
| // QueryLimitInfo entity contains information about the Query Limit of a user. |
| type QueryLimitInfo struct { |
| Min int `json:"min"` |
| Max int `json:"max"` |
| } |
| |
| // HTTPPasswordInput entity contains information for setting/generating an HTTP password. |
| type HTTPPasswordInput struct { |
| Generate bool `json:"generate,omitempty"` |
| HTTPPassword string `json:"http_password,omitempty"` |
| } |
| |
| // GpgKeysInput entity contains information for adding/deleting GPG keys. |
| type GpgKeysInput struct { |
| Add []string `json:"add"` |
| Delete []string `json:"delete"` |
| } |
| |
| // GpgKeyInfo entity contains information about a GPG public key. |
| type GpgKeyInfo struct { |
| ID string `json:"id,omitempty"` |
| Fingerprint string `json:"fingerprint,omitempty"` |
| UserIDs []string `json:"user_ids,omitempty"` |
| Key string `json:"key,omitempty"` |
| } |
| |
| // EmailInput entity contains information for registering a new email address. |
| type EmailInput struct { |
| Email string `json:"email"` |
| Preferred bool `json:"preferred,omitempty"` |
| NoConfirmation bool `json:"no_confirmation,omitempty"` |
| } |
| |
| // EmailInfo entity contains information about an email address of a user. |
| type EmailInfo struct { |
| Email string `json:"email"` |
| Preferred bool `json:"preferred,omitempty"` |
| PendingConfirmation bool `json:"pending_confirmation,omitempty"` |
| } |
| |
| // AccountInput entity contains information for the creation of a new account. |
| type AccountInput struct { |
| Username string `json:"username,omitempty"` |
| Name string `json:"name,omitempty"` |
| Email string `json:"email,omitempty"` |
| SSHKey string `json:"ssh_key,omitempty"` |
| HTTPPassword string `json:"http_password,omitempty"` |
| Groups []string `json:"groups,omitempty"` |
| } |
| |
| // AccountDetailInfo entity contains detailed information about an account. |
| type AccountDetailInfo struct { |
| AccountInfo |
| RegisteredOn Timestamp `json:"registered_on"` |
| } |
| |
| // AccountNameInput entity contains information for setting a name for an account. |
| type AccountNameInput struct { |
| Name string `json:"name,omitempty"` |
| } |
| |
| // AccountCapabilityInfo entity contains information about the global capabilities of a user. |
| type AccountCapabilityInfo struct { |
| AccessDatabase bool `json:"accessDatabase,omitempty"` |
| AdministrateServer bool `json:"administrateServer,omitempty"` |
| CreateAccount bool `json:"createAccount,omitempty"` |
| CreateGroup bool `json:"createGroup,omitempty"` |
| CreateProject bool `json:"createProject,omitempty"` |
| EmailReviewers bool `json:"emailReviewers,omitempty"` |
| FlushCaches bool `json:"flushCaches,omitempty"` |
| KillTask bool `json:"killTask,omitempty"` |
| MaintainServer bool `json:"maintainServer,omitempty"` |
| Priority string `json:"priority,omitempty"` |
| QueryLimit QueryLimitInfo `json:"queryLimit"` |
| RunAs bool `json:"runAs,omitempty"` |
| RunGC bool `json:"runGC,omitempty"` |
| StreamEvents bool `json:"streamEvents,omitempty"` |
| ViewAllAccounts bool `json:"viewAllAccounts,omitempty"` |
| ViewCaches bool `json:"viewCaches,omitempty"` |
| ViewConnections bool `json:"viewConnections,omitempty"` |
| ViewPlugins bool `json:"viewPlugins,omitempty"` |
| ViewQueue bool `json:"viewQueue,omitempty"` |
| } |
| |
| // DiffPreferencesInfo entity contains information about the diff preferences of a user. |
| type DiffPreferencesInfo struct { |
| Context int `json:"context"` |
| Theme string `json:"theme"` |
| ExpandAllComments bool `json:"expand_all_comments,omitempty"` |
| IgnoreWhitespace string `json:"ignore_whitespace"` |
| IntralineDifference bool `json:"intraline_difference,omitempty"` |
| LineLength int `json:"line_length"` |
| ManualReview bool `json:"manual_review,omitempty"` |
| RetainHeader bool `json:"retain_header,omitempty"` |
| ShowLineEndings bool `json:"show_line_endings,omitempty"` |
| ShowTabs bool `json:"show_tabs,omitempty"` |
| ShowWhitespaceErrors bool `json:"show_whitespace_errors,omitempty"` |
| SkipDeleted bool `json:"skip_deleted,omitempty"` |
| SkipUncommented bool `json:"skip_uncommented,omitempty"` |
| SyntaxHighlighting bool `json:"syntax_highlighting,omitempty"` |
| HideTopMenu bool `json:"hide_top_menu,omitempty"` |
| AutoHideDiffTableHeader bool `json:"auto_hide_diff_table_header,omitempty"` |
| HideLineNumbers bool `json:"hide_line_numbers,omitempty"` |
| TabSize int `json:"tab_size"` |
| HideEmptyPane bool `json:"hide_empty_pane,omitempty"` |
| } |
| |
| // DiffPreferencesInput entity contains information for setting the diff preferences of a user. |
| // Fields which are not set will not be updated. |
| type DiffPreferencesInput struct { |
| Context int `json:"context,omitempty"` |
| ExpandAllComments bool `json:"expand_all_comments,omitempty"` |
| IgnoreWhitespace string `json:"ignore_whitespace,omitempty"` |
| IntralineDifference bool `json:"intraline_difference,omitempty"` |
| LineLength int `json:"line_length,omitempty"` |
| ManualReview bool `json:"manual_review,omitempty"` |
| RetainHeader bool `json:"retain_header,omitempty"` |
| ShowLineEndings bool `json:"show_line_endings,omitempty"` |
| ShowTabs bool `json:"show_tabs,omitempty"` |
| ShowWhitespaceErrors bool `json:"show_whitespace_errors,omitempty"` |
| SkipDeleted bool `json:"skip_deleted,omitempty"` |
| SkipUncommented bool `json:"skip_uncommented,omitempty"` |
| SyntaxHighlighting bool `json:"syntax_highlighting,omitempty"` |
| HideTopMenu bool `json:"hide_top_menu,omitempty"` |
| AutoHideDiffTableHeader bool `json:"auto_hide_diff_table_header,omitempty"` |
| HideLineNumbers bool `json:"hide_line_numbers,omitempty"` |
| TabSize int `json:"tab_size,omitempty"` |
| } |
| |
| // PreferencesInfo entity contains information about a user’s preferences. |
| type PreferencesInfo struct { |
| ChangesPerPage int `json:"changes_per_page"` |
| ShowSiteHeader bool `json:"show_site_header,omitempty"` |
| UseFlashClipboard bool `json:"use_flash_clipboard,omitempty"` |
| DownloadScheme string `json:"download_scheme"` |
| DownloadCommand string `json:"download_command"` |
| CopySelfOnEmail bool `json:"copy_self_on_email,omitempty"` |
| DateFormat string `json:"date_format"` |
| TimeFormat string `json:"time_format"` |
| RelativeDateInChangeTable bool `json:"relative_date_in_change_table,omitempty"` |
| SizeBarInChangeTable bool `json:"size_bar_in_change_table,omitempty"` |
| LegacycidInChangeTable bool `json:"legacycid_in_change_table,omitempty"` |
| MuteCommonPathPrefixes bool `json:"mute_common_path_prefixes,omitempty"` |
| ReviewCategoryStrategy string `json:"review_category_strategy"` |
| DiffView string `json:"diff_view"` |
| My []TopMenuItemInfo `json:"my"` |
| URLAliases string `json:"url_aliases,omitempty"` |
| } |
| |
| // PreferencesInput entity contains information for setting the user preferences. |
| // Fields which are not set will not be updated. |
| type PreferencesInput struct { |
| ChangesPerPage int `json:"changes_per_page,omitempty"` |
| ShowSiteHeader bool `json:"show_site_header,omitempty"` |
| UseFlashClipboard bool `json:"use_flash_clipboard,omitempty"` |
| DownloadScheme string `json:"download_scheme,omitempty"` |
| DownloadCommand string `json:"download_command,omitempty"` |
| CopySelfOnEmail bool `json:"copy_self_on_email,omitempty"` |
| DateFormat string `json:"date_format,omitempty"` |
| TimeFormat string `json:"time_format,omitempty"` |
| RelativeDateInChangeTable bool `json:"relative_date_in_change_table,omitempty"` |
| SizeBarInChangeTable bool `json:"size_bar_in_change_table,omitempty"` |
| LegacycidInChangeTable bool `json:"legacycid_in_change_table,omitempty"` |
| MuteCommonPathPrefixes bool `json:"mute_common_path_prefixes,omitempty"` |
| ReviewCategoryStrategy string `json:"review_category_strategy,omitempty"` |
| DiffView string `json:"diff_view,omitempty"` |
| My []TopMenuItemInfo `json:"my,omitempty"` |
| URLAliases string `json:"url_aliases,omitempty"` |
| } |
| |
| // CapabilityOptions specifies the parameters to filter for capabilities. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#list-account-capabilities |
| type CapabilityOptions struct { |
| // To filter the set of global capabilities the q parameter can be used. |
| // Filtering may decrease the response time by avoiding looking at every possible alternative for the caller. |
| Filter []string `url:"q,omitempty"` |
| } |
| |
| // GetAccount returns an account as an AccountInfo entity. |
| // If account is "self" the current authenticated account will be returned. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-account |
| func (s *AccountsService) GetAccount(account string) (*AccountInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s", account) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(AccountInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // GetAccountDetails retrieves the details of an account. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-detail |
| func (s *AccountsService) GetAccountDetails(accountID string) (*AccountDetailInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/detail", accountID) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(AccountDetailInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // GetAccountName retrieves the full name of an account. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-account-name |
| func (s *AccountsService) GetAccountName(accountID string) (string, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/name", accountID) |
| return getStringResponseWithoutOptions(s.client, u) |
| } |
| |
| // GetUsername retrieves the username of an account. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-username |
| func (s *AccountsService) GetUsername(accountID string) (string, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/username", accountID) |
| return getStringResponseWithoutOptions(s.client, u) |
| } |
| |
| // GetHTTPPassword retrieves the HTTP password of an account. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-http-password |
| func (s *AccountsService) GetHTTPPassword(accountID string) (string, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/password.http", accountID) |
| return getStringResponseWithoutOptions(s.client, u) |
| } |
| |
| // ListAccountEmails returns the email addresses that are configured for the specified user. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#list-account-emails |
| func (s *AccountsService) ListAccountEmails(accountID string) (*[]EmailInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/emails", accountID) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new([]EmailInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // GetAccountEmail retrieves an email address of a user. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-account-email |
| func (s *AccountsService) GetAccountEmail(accountID, emailID string) (*EmailInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/emails/%s", accountID, emailID) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(EmailInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // ListSSHKeys returns the SSH keys of an account. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#list-ssh-keys |
| func (s *AccountsService) ListSSHKeys(accountID string) (*[]SSHKeyInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/sshkeys", accountID) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new([]SSHKeyInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // GetSSHKey retrieves an SSH key of a user. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-ssh-key |
| func (s *AccountsService) GetSSHKey(accountID, sshKeyID string) (*SSHKeyInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/sshkeys/%s", accountID, sshKeyID) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(SSHKeyInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // ListGPGKeys returns the GPG keys of an account. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#list-gpg-keys |
| func (s *AccountsService) ListGPGKeys(accountID string) (*map[string]GpgKeyInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/gpgkeys", accountID) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(map[string]GpgKeyInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // GetGPGKey retrieves a GPG key of a user. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-gpg-key |
| func (s *AccountsService) GetGPGKey(accountID, gpgKeyID string) (*GpgKeyInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/gpgkeys/%s", accountID, gpgKeyID) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(GpgKeyInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // ListAccountCapabilities returns the global capabilities that are enabled for the specified user. |
| // If the global capabilities for the calling user should be listed, self can be used as account-id. |
| // This can be used by UI tools to discover if administrative features are available to the caller, so they can hide (or show) relevant UI actions. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#list-account-capabilities |
| func (s *AccountsService) ListAccountCapabilities(accountID string, opt *CapabilityOptions) (*AccountCapabilityInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/capabilities", accountID) |
| |
| 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 |
| } |
| |
| v := new(AccountCapabilityInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // ListGroups lists all groups that contain the specified user as a member. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#list-groups |
| func (s *AccountsService) ListGroups(accountID string) (*[]GroupInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/groups", accountID) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new([]GroupInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // GetUserPreferences retrieves the user’s preferences. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-user-preferences |
| func (s *AccountsService) GetUserPreferences(accountID string) (*PreferencesInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/preferences", accountID) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(PreferencesInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // GetDiffPreferences retrieves the diff preferences of a user. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-diff-preferences |
| func (s *AccountsService) GetDiffPreferences(accountID string) (*DiffPreferencesInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/preferences.diff", accountID) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(DiffPreferencesInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // GetStarredChanges gets the changes starred by the identified user account. |
| // This URL endpoint is functionally identical to the changes query GET /changes/?q=is:starred. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-starred-changes |
| func (s *AccountsService) GetStarredChanges(accountID string) (*[]ChangeInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/starred.changes", accountID) |
| |
| req, err := s.client.NewRequest("GET", u, nil) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new([]ChangeInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // SuggestAccount suggests users for a given query q and result limit n. |
| // If result limit is not passed, then the default 10 is used. |
| // Returns a list of matching AccountInfo entities. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#query-account |
| func (s *AccountsService) SuggestAccount(opt *QueryOptions) (*[]AccountInfo, *Response, error) { |
| u := "accounts/" |
| |
| 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 |
| } |
| |
| v := new([]AccountInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // CreateAccount creates a new account. |
| // In the request body additional data for the account can be provided as AccountInput. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#create-account |
| func (s *AccountsService) CreateAccount(username string, input *AccountInput) (*AccountInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s", username) |
| |
| req, err := s.client.NewRequest("PUT", u, input) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(AccountInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // SetAccountName sets the full name of an account. |
| // The new account name must be provided in the request body inside an AccountNameInput entity. |
| // |
| // As response the new account name is returned. |
| // If the name was deleted the response is “204 No Content”. |
| // Some realms may not allow to modify the account name. |
| // In this case the request is rejected with “405 Method Not Allowed”. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#set-account-name |
| func (s *AccountsService) SetAccountName(accountID string, input *AccountNameInput) (*string, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/name", accountID) |
| |
| // TODO Use here the getStringResponseWithoutOptions (for PUT requests) |
| |
| req, err := s.client.NewRequest("PUT", u, input) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(string) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // DeleteAccountName deletes the name of an account. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#delete-account-name |
| func (s *AccountsService) DeleteAccountName(accountID string) (*Response, error) { |
| u := fmt.Sprintf("accounts/%s/name", accountID) |
| return s.client.DeleteRequest(u, nil) |
| } |
| |
| // DeleteActive sets the account state to inactive. |
| // If the account was already inactive the response is “404 Not Found”. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#delete-active |
| func (s *AccountsService) DeleteActive(accountID string) (*Response, error) { |
| u := fmt.Sprintf("accounts/%s/active", accountID) |
| return s.client.DeleteRequest(u, nil) |
| } |
| |
| // DeleteHTTPPassword deletes the HTTP password of an account. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#delete-http-password |
| func (s *AccountsService) DeleteHTTPPassword(accountID string) (*Response, error) { |
| u := fmt.Sprintf("accounts/%s/password.http", accountID) |
| return s.client.DeleteRequest(u, nil) |
| } |
| |
| // DeleteAccountEmail deletes an email address of an account. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#delete-account-email |
| func (s *AccountsService) DeleteAccountEmail(accountID, emailID string) (*Response, error) { |
| u := fmt.Sprintf("accounts/%s/emails/%s", accountID, emailID) |
| return s.client.DeleteRequest(u, nil) |
| } |
| |
| // DeleteSSHKey deletes an SSH key of a user. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#delete-ssh-key |
| func (s *AccountsService) DeleteSSHKey(accountID, sshKeyID string) (*Response, error) { |
| u := fmt.Sprintf("accounts/%s/sshkeys/%s", accountID, sshKeyID) |
| return s.client.DeleteRequest(u, nil) |
| } |
| |
| // DeleteGPGKey deletes a GPG key of a user. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#delete-gpg-key |
| func (s *AccountsService) DeleteGPGKey(accountID, gpgKeyID string) (*Response, error) { |
| u := fmt.Sprintf("accounts/%s/gpgkeys/%s", accountID, gpgKeyID) |
| return s.client.DeleteRequest(u, nil) |
| } |
| |
| // SetUsername sets a new username. |
| // The new username must be provided in the request body inside a UsernameInput entity. |
| // Once set, the username cannot be changed or deleted. |
| // If attempted this fails with “405 Method Not Allowed”. |
| // |
| // As response the new username is returned. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#set-username |
| func (s *AccountsService) SetUsername(accountID string, input *UsernameInput) (*string, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/username", accountID) |
| |
| req, err := s.client.NewRequest("PUT", u, input) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(string) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // GetActive checks if an account is active. |
| // |
| // If the account is active the string ok is returned. |
| // If the account is inactive the response is “204 No Content”. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-active |
| func (s *AccountsService) GetActive(accountID string) (string, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/active", accountID) |
| return getStringResponseWithoutOptions(s.client, u) |
| } |
| |
| // SetActive sets the account state to active. |
| // |
| // If the account was already active the response is “200 OK”. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#set-active |
| func (s *AccountsService) SetActive(accountID string) (*Response, error) { |
| u := fmt.Sprintf("accounts/%s/active", accountID) |
| |
| req, err := s.client.NewRequest("PUT", u, nil) |
| if err != nil { |
| return nil, err |
| } |
| return s.client.Do(req, nil) |
| } |
| |
| // SetHTTPPassword sets/Generates the HTTP password of an account. |
| // The options for setting/generating the HTTP password must be provided in the request body inside a HTTPPasswordInput entity. |
| // |
| // As response the new HTTP password is returned. |
| // If the HTTP password was deleted the response is “204 No Content”. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#set-http-password |
| func (s *AccountsService) SetHTTPPassword(accountID string, input *HTTPPasswordInput) (*string, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/password.http", accountID) |
| |
| req, err := s.client.NewRequest("PUT", u, input) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(string) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // CreateAccountEmail registers a new email address for the user. |
| // A verification email is sent with a link that needs to be visited to confirm the email address, unless DEVELOPMENT_BECOME_ANY_ACCOUNT is used as authentication type. |
| // For the development mode email addresses are directly added without confirmation. |
| // A Gerrit administrator may add an email address without confirmation by setting no_confirmation in the EmailInput. |
| // In the request body additional data for the email address can be provided as EmailInput. |
| // |
| // As response the new email address is returned as EmailInfo entity. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#create-account-email |
| func (s *AccountsService) CreateAccountEmail(accountID, emailID string, input *EmailInput) (*EmailInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/emails/%s", accountID, emailID) |
| |
| req, err := s.client.NewRequest("PUT", u, input) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(EmailInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // SetPreferredEmail sets an email address as preferred email address for an account. |
| // |
| // If the email address was already the preferred email address of the account the response is “200 OK”. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#set-preferred-email |
| func (s *AccountsService) SetPreferredEmail(accountID, emailID string) (*Response, error) { |
| u := fmt.Sprintf("accounts/%s/emails/%s/preferred", accountID, emailID) |
| |
| req, err := s.client.NewRequest("PUT", u, nil) |
| if err != nil { |
| return nil, err |
| } |
| return s.client.Do(req, nil) |
| } |
| |
| // GetAvatarChangeURL retrieves the URL where the user can change the avatar image. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#get-avatar-change-url |
| func (s *AccountsService) GetAvatarChangeURL(accountID string) (string, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/avatar.change.url", accountID) |
| return getStringResponseWithoutOptions(s.client, u) |
| } |
| |
| // AddGPGKeys Add or delete one or more GPG keys for a user. |
| // The changes must be provided in the request body as a GpgKeysInput entity. |
| // Each new GPG key is provided in ASCII armored format, and must contain a self-signed certification matching a registered email or other identity of the user. |
| // |
| // As a response, the modified GPG keys are returned as a map of GpgKeyInfo entities, keyed by ID. Deleted keys are represented by an empty object. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#add-delete-gpg-keys |
| func (s *AccountsService) AddGPGKeys(accountID string, input *GpgKeysInput) (*map[string]GpgKeyInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/gpgkeys", accountID) |
| |
| req, err := s.client.NewRequest("POST", u, input) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(map[string]GpgKeyInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // CheckAccountCapability checks if a user has a certain global capability. |
| // |
| // If the user has the global capability the string ok is returned. |
| // If the user doesn’t have the global capability the response is “404 Not Found”. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#check-account-capability |
| func (s *AccountsService) CheckAccountCapability(accountID, capabilityID string) (string, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/capabilities/%s", accountID, capabilityID) |
| return getStringResponseWithoutOptions(s.client, u) |
| } |
| |
| // SetUserPreferences sets the user’s preferences. |
| // The new preferences must be provided in the request body as a PreferencesInput entity. |
| // |
| // As result the new preferences of the user are returned as a PreferencesInfo entity. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#set-user-preferences |
| func (s *AccountsService) SetUserPreferences(accountID string, input *PreferencesInput) (*PreferencesInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/preferences", accountID) |
| |
| req, err := s.client.NewRequest("PUT", u, input) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(PreferencesInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // SetDiffPreferences sets the diff preferences of a user. |
| // The new diff preferences must be provided in the request body as a DiffPreferencesInput entity. |
| // |
| // As result the new diff preferences of the user are returned as a DiffPreferencesInfo entity. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#set-diff-preferences |
| func (s *AccountsService) SetDiffPreferences(accountID string, input *DiffPreferencesInput) (*DiffPreferencesInfo, *Response, error) { |
| u := fmt.Sprintf("accounts/%s/preferences.diff", accountID) |
| |
| req, err := s.client.NewRequest("PUT", u, input) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| v := new(DiffPreferencesInfo) |
| resp, err := s.client.Do(req, v) |
| if err != nil { |
| return nil, resp, err |
| } |
| |
| return v, resp, err |
| } |
| |
| // StarChange star a change. |
| // Starred changes are returned for the search query is:starred or starredby:USER and automatically notify the user whenever updates are made to the change. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#star-change |
| func (s *AccountsService) StarChange(accountID, changeID string) (*Response, error) { |
| u := fmt.Sprintf("accounts/%s/starred.changes/%s", accountID, changeID) |
| |
| req, err := s.client.NewRequest("PUT", u, nil) |
| if err != nil { |
| return nil, err |
| } |
| |
| return s.client.Do(req, nil) |
| } |
| |
| // UnstarChange nstar a change. |
| // Removes the starred flag, stopping notifications. |
| // |
| // Gerrit API docs: https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#unstar-change |
| func (s *AccountsService) UnstarChange(accountID, changeID string) (*Response, error) { |
| u := fmt.Sprintf("accounts/%s/starred.changes/%s", accountID, changeID) |
| return s.client.DeleteRequest(u, nil) |
| } |
| |
| /* |
| Missing Account Endpoints: |
| Add SSH Key |
| Get Avatar |
| */ |