Skip to content

Commit

Permalink
feat: get groups for user
Browse files Browse the repository at this point in the history
  • Loading branch information
Tomeriko96 committed Jan 4, 2024
1 parent d1dc393 commit 9ecf48e
Show file tree
Hide file tree
Showing 31 changed files with 148 additions and 1 deletion.
1 change: 1 addition & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export(download_workbooks_server_pdf)
export(download_workbooks_server_powerpoint)
export(get_actions)
export(get_folders)
export(get_groups_for_user)
export(get_hierarchy)
export(get_nodenames)
export(get_parameter)
Expand Down
54 changes: 54 additions & 0 deletions R/get_groups_for_user.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#' Get Groups for a User
#'
#' Gets a list of groups that the specified user is a member of.
#'
#' @param tableau A list containing the Tableau authentication variables: `base_url`, `token`, `user_id`, and `site_id`.
#' @param api_version The API version to use (default: 3.19).
#' @param user_id The ID of the user whose group memberships are listed.
#' @param page_size
#' (Optional) The number of items to return in one response. The minimum is 1. The maximum is 1000. The default is 100. For more information, see Paginating Results.
#' @param page_number
#' (Optional) The offset for paging. The default is 1. For more information, see Paginating Results.
#' @param include_metadata Logical indicating whether to include metadata columns in the result (default: FALSE).
#'
#' @return A table containing the groups for the specified user.
#' @export
#' @family Tableau REST API
get_groups_for_user <- function(tableau, api_version = 3.19, user_id, page_size = 100, page_number = 1, include_metadata = FALSE) {
base_url <- tableau$base_url
site_id <- tableau$site_id
token <- tableau$token

url <- paste0(
base_url,
"api/",
api_version,
"/sites/",
site_id,
"/users/",
user_id,
"/groups"
)

api_response <- httr::GET(url,
httr::add_headers("X-Tableau-Auth" = token),
httr::content_type("application/xml"),
httr::accept_json())

if (httr::status_code(api_response) != 200) {
stop("API call failed.")
}

jsonResponseText <- httr::content(api_response, as = "text")

df <- jsonlite::fromJSON(jsonResponseText) %>%
as.data.frame(check.names = FALSE) %>%
dplyr::rename_with(~ stringr::str_remove(., "groups.group."), dplyr::everything())

if (!include_metadata) {
df <- df %>%
dplyr::select(-dplyr::starts_with("pagination"))
}

return(df)
}
2 changes: 1 addition & 1 deletion TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@
- [ ] Create Group
- [ ] Delete Group
- [ ] Delete Users from Site with CSV
- [ ] Get Groups for a User
- [x] Get Groups for a User
- [x] Get Users in Group
- [x] Get Users on Site
- [ ] Import Users to Site from CSV
Expand Down
1 change: 1 addition & 0 deletions man/add_tags_to_view.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/add_tags_to_workbook.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/add_user_to_group.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/add_user_to_site.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/authenticate_server.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/download_filtered_tableau_image.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/download_tableau_crosstab_excel.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/download_tableau_data.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/download_workbooks_server.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/download_workbooks_server_pdf.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/download_workbooks_server_powerpoint.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

65 changes: 65 additions & 0 deletions man/get_groups_for_user.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_connected_apps.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_datasources.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_groups.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_info.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_jobs.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_projects.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_refresh_tasks.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_schedules.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_user_favorites.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_users.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_views.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_server_workbooks.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_table_assets.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/get_users_in_group.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/remove_user_from_group.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/remove_user_from_site.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 9ecf48e

Please sign in to comment.