|
1 |
| -#' #' Meetup pro functions |
2 |
| -#' #' |
3 |
| -#' #' The pro functions only work if the querying users |
4 |
| -#' #' had a meetup pro account. |
5 |
| -#' #' |
6 |
| -#' #' \describe{ |
7 |
| -#' #' \item{get_pro_groups}{Get the current meetup members from a pro meetup group} |
8 |
| -#' #' \item{get_pro_events}{Get pro group events for the enxt 30 days} |
9 |
| -#' #' } |
10 |
| -#' #' |
11 |
| -#' #' @template urlname |
12 |
| -#' #' @template verbose |
13 |
| -#' #' |
14 |
| -#' #' @references |
15 |
| -#' #' \url{https://www.meetup.com/meetup_api/docs/pro/:urlname/groups/} |
16 |
| -#' #' \url{https://www.meetup.com/meetup_api/docs/:urlname/events/#list} |
17 |
| -#' #' |
18 |
| -#' #' @examples |
19 |
| -#' #' \dontrun{ |
20 |
| -#' #' urlname <- "rladies" |
21 |
| -#' #' members <- get_pro_groups(urlname) |
22 |
| -#' #' |
23 |
| -#' #' past_events <- get_events(urlname = urlname, |
24 |
| -#' #' event_status = "past") |
25 |
| -#' #' upcoming_events <- get_events(urlname = urlname, |
26 |
| -#' #' event_status = "upcoming") |
27 |
| -#' #'} |
28 |
| -#' #' |
29 |
| -#' #' @return A tibble with meetup information |
| 1 | +#' Meetup pro functions |
30 | 2 | #'
|
| 3 | +#' The pro functions only work if the querying users |
| 4 | +#' had a meetup pro account. |
31 | 5 | #'
|
32 |
| -#' #' @rdname meetup_pro |
33 |
| -#' #' @export |
34 |
| -#' #' @importFrom purrr map_int map_chr map_dbl |
35 |
| -#' #' @importFrom tibble tibble |
36 |
| -#' get_pro_groups <- function( |
37 |
| -#' urlname, |
38 |
| -#' ..., |
39 |
| -#' extra_graphql = NULL, |
40 |
| -#' token = meetup_token() |
41 |
| -#' ) { |
42 |
| -#' ellipsis::check_dots_empty() |
| 6 | +#' @template urlname |
| 7 | +#' @param ... Should be empty. Used for parameter expansion |
| 8 | +#' @template extra_graphql |
| 9 | +#' @template token |
| 10 | +#' @param status Which status the events should have. |
43 | 11 | #'
|
44 |
| -#' dt <- gql_events( |
45 |
| -#' urlname = urlname, |
46 |
| -#' .extra_graphql = extra_graphql, |
47 |
| -#' .token = token |
48 |
| -#' ) |
| 12 | +#' @references |
| 13 | +#' \url{https://www.meetup.com/api/schema/#ProNetwork} |
49 | 14 | #'
|
50 |
| -#' tibble( |
51 |
| -#' group_sorter(res), |
52 |
| -#' created = .date_helper(map_dbl(res, "founded_date")), |
53 |
| -#' members = map_chr(res, "member_count"), |
54 |
| -#' upcoming_events = map_int(res, "upcoming_events"), |
55 |
| -#' past_events = map_int(res, "past_events"), |
56 |
| -#' res = res |
57 |
| -#' ) |
58 |
| -#' } |
59 |
| -#' |
60 |
| -#' |
61 |
| -#' #' @rdname meetup_pro |
62 |
| -#' #' @importFrom tibble tibble |
63 |
| -#' #' @export |
64 |
| -#' get_pro_events <- function(urlname, |
65 |
| -#' verbose = meetupr_verbose() |
66 |
| -#' ){ |
67 |
| -#' |
68 |
| -#' api_path <- sprintf("pro/%s/events", urlname) |
69 |
| -#' res <- .fetch_results(api_path = api_path, verbose = verbose) |
70 |
| -#' |
71 |
| -#' group <- lapply(res, function(x) x[["chapter"]]) |
72 |
| -#' group <- tibble(group_sorter(group), res = group) |
73 |
| -#' names(group) <- paste0("group_", names(group)) |
74 |
| -#' |
75 |
| -#' events <- lapply(res, function(x) x[[1]]) |
| 15 | +#' @examples |
| 16 | +#' \dontrun{ |
| 17 | +#' urlname <- "rladies" |
| 18 | +#' members <- get_pro_groups(urlname) |
76 | 19 | #'
|
77 |
| -#' tibble( |
78 |
| -#' event_sorter(events), |
79 |
| -#' group |
80 |
| -#' ) |
| 20 | +#' past_events <- get_pro_events(urlname = urlname, |
| 21 | +#' status = "PAST") |
| 22 | +#' upcoming_events <- get_pro_events(urlname = urlname, |
| 23 | +#' status = "UPCOMING") |
| 24 | +#' all_events <- get_pro_events(urlname = urlname) |
81 | 25 | #' }
|
| 26 | +#' @name meetup_pro |
| 27 | +#' @return A tibble with meetup pro information |
| 28 | +NULL |
| 29 | + |
| 30 | +#' Get pro groups information |
| 31 | +#' @export |
| 32 | +#' @describeIn meetup_pro retrieve groups in a pro network |
| 33 | +get_pro_groups <- function( |
| 34 | + urlname, |
| 35 | + ..., |
| 36 | + extra_graphql = NULL, |
| 37 | + token = meetup_token() |
| 38 | +) { |
| 39 | + ellipsis::check_dots_empty() |
| 40 | + |
| 41 | + dt <- gql_get_pro_groups( |
| 42 | + urlname = urlname, |
| 43 | + .extra_graphql = extra_graphql, |
| 44 | + .token = token |
| 45 | + ) |
| 46 | + dt <- rename(dt, |
| 47 | + created = foundedDate, |
| 48 | + members = memberships.count, |
| 49 | + join_mode = joinMode, |
| 50 | + category_id = category.id, |
| 51 | + category_name = category.name, |
| 52 | + country = country_name, |
| 53 | + past_events_count = pastEvents.count, |
| 54 | + upcoming_events_count = upcomingEvents.count, |
| 55 | + membership_status = membershipMetadata.status, |
| 56 | + is_private = isPrivate |
| 57 | + |
| 58 | + ) |
| 59 | + |
| 60 | + dt$created <- anytime::anytime(dt$created) |
| 61 | + dt |
| 62 | +} |
| 63 | + |
| 64 | +#' Get pro events information |
| 65 | +#' @export |
| 66 | +#' @describeIn meetup_pro retrieve events from a pro network |
| 67 | +get_pro_events <- function( |
| 68 | + urlname, |
| 69 | + status = NULL, |
| 70 | + ..., |
| 71 | + extra_graphql = NULL, |
| 72 | + token = meetup_token() |
| 73 | +) { |
| 74 | + ellipsis::check_dots_empty() |
| 75 | + |
| 76 | + dt <- gql_get_pro_events( |
| 77 | + urlname = urlname, |
| 78 | + status = status, |
| 79 | + .extra_graphql = extra_graphql, |
| 80 | + .token = token |
| 81 | + ) |
| 82 | + if(nrow(dt) == 0) return(NULL) |
| 83 | + |
| 84 | + # replace dot with underscore |
| 85 | + names(dt) <- gsub("\\.", "_", names(dt)) |
| 86 | + |
| 87 | + dt <- rename(dt, |
| 88 | + link = eventUrl, |
| 89 | + event_type = eventType, |
| 90 | + venue_zip = venue_postalCode |
| 91 | + ) |
| 92 | + dt$time <- anytime::anytime(dt$dateTime) |
| 93 | + |
| 94 | + remove(dt, |
| 95 | + dateTime) |
| 96 | +} |
0 commit comments