class Gitlab::Client

Wrapper for the Gitlab REST API.

Public Instance Methods

create_group_access_token(group_id, name, scopes, access_level = nil, expires_at = nil) click to toggle source

Create group access token

@example

Gitlab.create_group_access_token(2, "token", ["api", "read_user"])
Gitlab.create_group_access_token(2, "token", ["api", "read_user"], 20)
Gitlab.create_group_access_token(2, "token", ["api", "read_user"], 20, "1970-01-01")

@param [Integer] group_id The ID of the group. @param [String] name Name for group access token. @param [Array<String>] scopes Array of scopes for the group access token @param [Integer] access_level Project access level (10: Guest, 20: Reporter, 30: Developer, 40: Maintainer, 50: Owner). @param [String] expires_at Date for group access token expiration in ISO format. @return [Gitlab::ObjectifiedHash]

# File lib/gitlab/client/groups.rb, line 489
def create_group_access_token(group_id, name, scopes, access_level = nil, expires_at = nil)
  body = { name: name, scopes: scopes }
  body[:access_level] = access_level if access_level
  body[:expires_at] = expires_at if expires_at
  post("/groups/#{group_id}/access_tokens", body: body)
end
group_access_token(group_id, group_access_token_id) click to toggle source

Get group access token information

@example

Gitlab.group_access_token(1, 1)

@param [Integer] group_id The ID of the group. @param [Integer] group_access_token_id ID of the group access token. @return [Gitlab::ObjectifiedHash]

# File lib/gitlab/client/groups.rb, line 472
def group_access_token(group_id, group_access_token_id)
  get("/groups/#{group_id}/access_tokens/#{group_access_token_id}")
end
group_access_tokens(group_id) click to toggle source

Get all access tokens for a group

@example

Gitlab.group_access_tokens(1)

@param [Integer] group_id The ID of the group. @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/groups.rb, line 460
def group_access_tokens(group_id)
  get("/groups/#{group_id}/access_tokens")
end
inspect() click to toggle source

Text representation of the client, masking private token.

@return [String]

Calls superclass method
# File lib/gitlab/client.rb, line 78
def inspect
  inspected = super
  inspected = redact_private_token(inspected, @private_token) if @private_token
  inspected
end
revoke_group_access_token(group_id, group_access_token_id) click to toggle source

Revoke a group access token

@example

Gitlab.revoke_group_access_token(1, 1)

@param [Integer] user_id The ID of the group. @param [Integer] group_access_token_id ID of the group access token. @return [Gitlab::ObjectifiedHash]

# File lib/gitlab/client/groups.rb, line 504
def revoke_group_access_token(group_id, group_access_token_id)
  delete("/groups/#{group_id}/access_tokens/#{group_access_token_id}")
end
url_encode(url) click to toggle source

Utility method for URL encoding of a string. Copied from ruby-doc.org/stdlib-2.7.0/libdoc/erb/rdoc/ERB/Util.html

@return [String]

# File lib/gitlab/client.rb, line 88
def url_encode(url)
  url.to_s.b.gsub(/[^a-zA-Z0-9_\-.~]/n) { |m| sprintf('%%%02X', m.unpack1('C')) } # rubocop:disable Style/FormatString
end

Private Instance Methods

only_show_last_four_chars(token) click to toggle source
# File lib/gitlab/client.rb, line 99
def only_show_last_four_chars(token)
  return '****' if token.size <= 4

  "#{'*' * (token.size - 4)}#{token[-4..]}"
end
redact_private_token(inspected, private_token) click to toggle source
# File lib/gitlab/client.rb, line 94
def redact_private_token(inspected, private_token)
  redacted = only_show_last_four_chars(private_token)
  inspected.sub %(@private_token="#{private_token}"), %(@private_token="#{redacted}")
end