From 44ec3f45d8f2d9df394ce749050a48172dac555f Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 26 Jul 2023 12:58:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=84?= =?UTF-8?q?=D1=83=D0=BD=D0=BA=D1=86=D0=B8=20`ac=5Fget=5Fuser=5Fgroups()`,?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B7=D0=B2=D0=BE=D0=BB=D1=8F=D1=8E=D1=89=D0=B0?= =?UTF-8?q?=D1=8F=20=D0=B7=D0=B0=D0=BF=D1=80=D0=B0=D1=88=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BC=D0=B5=D1=82=D0=B0=D0=B4=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=B3=D1=80=D1=83=D0=BF=D0=BF=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DESCRIPTION | 4 +-- NAMESPACE | 1 + NEWS.md | 6 +++- R/ac_get_user_groups.R | 59 +++++++++++++++++++++++++++++++++++++++ README.md | 1 + man/ac_get_user_groups.Rd | 22 +++++++++++++++ 6 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 R/ac_get_user_groups.R create mode 100644 man/ac_get_user_groups.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 40f695f..423b83b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: ractivecampaign Type: Package Title: Loading Data from 'ActiveCampaign API v3' -Version: 0.3.0.9000 +Version: 0.5.0 Authors@R: c(person(given = "Alexey", family = "Seleznev", @@ -17,4 +17,4 @@ Imports: dplyr, httr, pbapply, stringr, tidyr, cli, retry License: MIT + file LICENSE Encoding: UTF-8 LazyData: true -RoxygenNote: 7.1.2 +RoxygenNote: 7.2.3 diff --git a/NAMESPACE b/NAMESPACE index cc30374..e91e0ff 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -16,6 +16,7 @@ export(ac_get_messages) export(ac_get_deal_piplines) export(ac_get_deal_activities) export(ac_get_users) +export(ac_get_user_groups) export(ac_get_contact_tags) export(ac_get_tags) export(ac_get_tasks) diff --git a/NEWS.md b/NEWS.md index 94ca2bc..a5d4621 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,8 @@ -# ractivecampaign (development version) +# ractivecampaign 0.5.0 + +* В пакет добавлена функци `ac_get_user_groups()`, позволяющая запрашивать метаданные групп пользователей. + +# ractivecampaign 0.4.0 * В функции `ac_get_deal_activities()` исправлена ошибка возникающая если по сделки не было никаких действий. diff --git a/R/ac_get_user_groups.R b/R/ac_get_user_groups.R new file mode 100644 index 0000000..31ad621 --- /dev/null +++ b/R/ac_get_user_groups.R @@ -0,0 +1,59 @@ +#' Return list of all existing user groups +#' +#' @return tibble with users group metadata +#' @export +#' @seealso See \href{https://developers.activecampaign.com/reference/list-all-groups}{ActiveCampaign API documentation} +#' +#' @examples +#' \dontrun{ +#' users <- ac_get_users() +#' } +ac_get_user_groups <- function() { + + ac_check_auth() + + # vars + is_first_iteration <- TRUE + limit <- 100 + offset <- 0 + total <- NA + res <- list() + + while ( (is.na(total) | offset <= total) | is_first_iteration ) { + + # send request + retry( + { + ans <- GET(str_glue("{Sys.getenv('ACTIVECAMPAGN_API_URL')}/api/3/groups/"), + query = list(limit = limit, + offset = offset), + add_headers("Api-Token" = Sys.getenv('ACTIVECAMPAGN_API_TOKEN'))) + }, + until = ~ status_code(.) == 200, + interval = getOption('ractivecampaig.interval'), + max_tries = getOption('ractivecampaig.max_tries') + ) + + data <- content(ans) + + if ( status_code(ans) > 299 ) { + stop(data$message) + } + + out_data <- tibble(data = data$groups) %>% + unnest_wider(data) + + is_first_iteration <- FALSE + offset <- offset + limit + total <- as.numeric(data$meta$total) + res <- append(res, list(out_data)) + + Sys.sleep(0.25) + + } + + res <- bind_rows(res) + + return(res) + +} diff --git a/README.md b/README.md index e6beed3..c6dafda 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ * `ac_get_deal_activities()` - Список активностей по сделке * `ac_get_deal_notes()` - Список заметок к сделке * `ac_get_users()` - Список пользователей +* `ac_get_user_groups()` - Список групп пользователей * `ac_get_tags()` - Получить список всех созданных тегов * `ac_get_contacts()` - Список контактов * `ac_get_custom_contact_fields_values()` - Значения пользовательских полей контактов diff --git a/man/ac_get_user_groups.Rd b/man/ac_get_user_groups.Rd new file mode 100644 index 0000000..1efb20e --- /dev/null +++ b/man/ac_get_user_groups.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ac_get_user_groups.R +\name{ac_get_user_groups} +\alias{ac_get_user_groups} +\title{Return list of all existing user groups} +\usage{ +ac_get_user_groups() +} +\value{ +tibble with users group metadata +} +\description{ +Return list of all existing user groups +} +\examples{ +\dontrun{ +users <- ac_get_users() +} +} +\seealso{ +See \href{https://developers.activecampaign.com/reference/list-all-groups}{ActiveCampaign API documentation} +}