Skip to content

Commit

Permalink
version 3.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
mrkaye97 authored and cran-robot committed Feb 20, 2023
1 parent c8ae40b commit d800bda
Show file tree
Hide file tree
Showing 47 changed files with 1,735 additions and 805 deletions.
18 changes: 9 additions & 9 deletions DESCRIPTION
Expand Up @@ -2,7 +2,7 @@ Type: Package
Package: slackr
Title: Send Messages, Images, R Objects and Files to 'Slack'
Channels/Users
Version: 3.2.0
Version: 3.3.0
Author: Bob Rudis [aut, cre], Jay Jacobs [ctb], David Severski [ctb],
Quinn Weber [ctb], Konrad Karczewski [ctb], Shinya Uryu [ctb], Gregory
Jefferis [ctb], Ed Niles [ctb], Rick Saporta [ctb], Jonathan Sidi
Expand All @@ -23,16 +23,16 @@ URL: https://github.com/mrkaye97/slackr,
https://mrkaye97.github.io/slackr/
BugReports: https://github.com/mrkaye97/slackr/issues
Depends: R (>= 3.3.0)
Imports: cachem (>= 1.0.4), dplyr, ggplot2, graphics, grDevices, httr
(>= 1.4.2), jsonlite, magrittr, memoise (>= 2.0.0), methods,
rlang, tibble, utils, withr
Suggests: covr, knitr, rmarkdown, svglite, testthat (>= 3.0.0),
texPreview
Imports: cachem (>= 1.0.4), dplyr, graphics, grDevices, httr (>=
1.4.2), jsonlite, magrittr, memoise (>= 2.0.0), rlang, tibble,
utils, withr
Suggests: covr, ggplot2, knitr, rmarkdown, svglite, testthat (>=
3.0.0), texPreview
VignetteBuilder: knitr
Config/testthat/edition: 3
Encoding: UTF-8
RoxygenNote: 7.1.1
RoxygenNote: 7.2.3
NeedsCompilation: no
Packaged: 2021-09-20 14:54:49 UTC; matt
Packaged: 2023-02-20 16:23:04 UTC; matt
Repository: CRAN
Date/Publication: 2021-09-20 15:10:02 UTC
Date/Publication: 2023-02-20 16:40:02 UTC
86 changes: 45 additions & 41 deletions MD5
@@ -1,67 +1,71 @@
3f862cd5465b8931b7d165f37d40c8fb *DESCRIPTION
bb49a3120050692970fd5807fb8823ef *DESCRIPTION
b5c243c35e6b712ecfe223711365f790 *LICENSE
d3cde3e3f8253fec0c771c4b9ae659a5 *NAMESPACE
c205826b56e76e29272baff9a4b6a773 *NEWS.md
303a6b14aea92f1cec82012bfb49d704 *R/call_slack_api.R
d98dc0166408a6b5b4178942ecbec893 *R/call_slack_internals.R
0faf10c4e51332c0d4ba6eed42da7db0 *R/gg_slackr.R
15da68dcd2cd5d6a5ba142aee2beff2b *NAMESPACE
8f2d907529aae441ac2d04c5de3593fb *NEWS.md
ae44f30f17edd19187647f9a0ae00b6a *R/call_slack_api.R
8b86a70ec6f77bd7fea7c93caa3455fb *R/call_slack_internals.R
a417e2c39e0b79fe597d6ee581f64f84 *R/gg_slackr.R
3763cb9344d9528905647e6fc5c3ba92 *R/globals.R
9efcb1db246edb1eac937e2d7bc2fd6a *R/internals.R
237c5a9cd2d0ef882eebb1a47d98aa84 *R/register_onexit.R
a97a7b33a6be86759170c051eeb3c0a3 *R/slackr.R
528b3993c3e30256502fa77abcfaa31e *R/slackr_bot.r
50620febe5b1afe513446f27c2ad4bca *R/slackr_csv.R
c756edfb9f2864b1b7f90087785f6d1d *R/slackr_delete.R
831bb33ff735b5837b0764c928ebf8a5 *R/slackr_dev.R
6d8943d49aacf152def7de81635dd685 *R/slackr_history.R
16d0a1ca41c004d4fe75447dddf6ab55 *R/slackr_save.R
501dd5393661f4e0bfe8875da8a3a7db *R/slackr_setup.r
c0303983f5cb7fe4b28c870d4f89635d *R/slackr_tex.R
1cd361bab10f354f9c04d7951e92ca8e *R/slackr_upload.R
4b3ae55640f6896cdddde268c5b0f9c1 *R/slackr_utils.R
04ddfa82a8751369fd88205d52d51791 *R/internals.R
f1a75daa0bdd214e9368100eef031980 *R/register_onexit.R
a42b9ee0dc9230eade6e66a1301a71f5 *R/slackr.R
a4e2674c997685ee0db41b30686ec409 *R/slackr_bot.r
4c1de13243971ef17ce80678fd429bce *R/slackr_csv.R
ba38b2c2908149c45592c39647c33c56 *R/slackr_delete.R
6b9f248a75fdca67c106f3a171a251af *R/slackr_dev.R
89cc4c92e572e93391e84f6025edeb40 *R/slackr_history.R
814a2cd5ac1d09beecb7199a6b145942 *R/slackr_save.R
db707f01ae7148d27b90ecb0a9cdd369 *R/slackr_setup.r
dbe5fd32f50cd4775d05e1bca315e1a7 *R/slackr_tex.R
441f0af66cfeba4d400c55098a6d10ec *R/slackr_upload.R
54875529f97fb0112bc3aaa0127a8b63 *R/slackr_utils.R
99fe491896dd21d912531d569f6cc362 *R/testthat-helpers.R
b56ff2b193ecba52f9ec7f3b10cca008 *R/utils-pipe.R
7fb1ed813aa49d6c7980016f8cb49f02 *build/vignette.rds
9bc38243f4829f69142c1e2d89ca557f *inst/doc/scoped-bot-setup.R
5fb60af98e6b0b06ce7995ad944b0702 *inst/doc/scoped-bot-setup.Rmd
eabe3dd88970ac4eab6baf0a78d02fc0 *inst/doc/scoped-bot-setup.html
9764a54045d1cc21e13c64ed7aafedab *inst/doc/using-slackr.R
bf707a12850358a074bc561b0aab9a26 *inst/doc/using-slackr.Rmd
1fae48c6d28796af8ed0a225d0c29050 *inst/doc/using-slackr.html
7c4e5df64d463152a6b83e7f3028f0fc *build/vignette.rds
b52ecbc2f340680295dc36f80e13ca61 *inst/doc/scoped-bot-setup.R
7c89f7dd6001659d706e7c7769886531 *inst/doc/scoped-bot-setup.Rmd
ecbeb57ec134a0cd514ad16d8abc12b1 *inst/doc/scoped-bot-setup.html
2a67c2f0aa4f9de9269943f51204021c *inst/doc/using-slackr.R
a20362e12811991fe559d9297c0492d0 *inst/doc/using-slackr.Rmd
da27d75c71c0b3edb5098a375a6f2030 *inst/doc/using-slackr.html
3c9e2d06e8560272e30c98b0c827478b *inst/doc/webhook-setup.R
4a4e9871bf3b7814a7dc69d9af28f0af *inst/doc/webhook-setup.Rmd
9608124c945451152a8edff5eb99928c *inst/doc/webhook-setup.html
5dd92e89806ad42c27ce5dc2985d46ba *inst/doc/webhook-setup.html
e692e26589972134a8345cf07a99209f *man/auth_test.Rd
53e16714e58dd252e22b0940033b32d2 *man/call_slack_api.Rd
4b46fe2772f75880f3289966495bcac8 *man/convert_response_to_tibble.Rd
ebfe2beeac5e5cec8b60261fc628b6eb *man/create_config_file.Rd
df25d203cdb13d6de6e107fca889266a *man/create_config_file.Rd
306d03a83a7503a539f3e823903f64f2 *man/figures/logo.png
764058b15c861aaac6f152cc6045b6b6 *man/ggslackr.Rd
4151515c7c27158a6fd5e4e73a73769d *man/ggslackr.Rd
8f4aad003a999fae004ba9361f9a99d6 *man/pipe.Rd
4217725495d65c6b8e4730cc9af0e57f *man/register_onexit.Rd
df8708d656fa87329d25f09a4fb57957 *man/register_onexit.Rd
decaf6965ce1e621d6221aee9961f498 *man/slackr.Rd
c338b1b9c9622aac57c0e2eacba5f80e *man/slackr_bot.Rd
8378ccc73ab8c08104de39d12014aa31 *man/slackr_channels.Rd
c4873055bd99b46f9e65d6d48024e99e *man/slackr_bot.Rd
170eba18067ab8840f534b3d0219a6b2 *man/slackr_channels.Rd
ae521ba5313abff1c2f3b0590ec47e1a *man/slackr_chtrans.Rd
d5aa72b33d2b389711edc8bef1926e85 *man/slackr_csv.Rd
7959ff38baff344d0d641c31b59f8bed *man/slackr_delete.Rd
311d9302d50d7943035417a8d7310e04 *man/slackr_dev.Rd
7a3934132c6cdae5adaedb04da900ae1 *man/slackr_history.Rd
b9fb485017c59f5786ff1a120280a84e *man/slackr_history.Rd
658aebc8add35b573110c3da65f3102f *man/slackr_ims.Rd
74c97cecd92cbabacac469a38dd23c85 *man/slackr_msg.Rd
878a0261cc5373c65b8391ec5fc66e09 *man/slackr_save.Rd
8cc664fcc2145fa442a96abab23f2b13 *man/slackr_setup.Rd
e85902bc1833b665ec152d8769648daa *man/slackr_teardown.Rd
650b54d9a4497a5a14f0f71df62c3c7e *man/slackr_setup.Rd
3fe6e6afbd532af354fd6359d7acc57d *man/slackr_teardown.Rd
8c0302b39b81fa6c869e8682b65c2510 *man/slackr_tex.Rd
b5df0bc161b8ba14f8a66cc2d2092657 *man/slackr_upload.Rd
639e4c8a9106dfc1a754ccff7e86934e *man/slackr_users.Rd
10abf8ff6c2a0a372ea2045c964a9934 *man/warn_for_args.Rd
f7d80f8c10a360df110c62280304c1af *man/with_pagination.Rd
a60ccca7306def1046c65860b91ca6f5 *tests/testthat.R
0daf7d92b763992f5b78ec3c42b48e1a *tests/testthat/Rplots.pdf
18d23525e7ababf8d18d9d5675435852 *tests/testthat/test-connection.R
678c7164c7dd2092511dddd2d472821f *tests/testthat/test-helpers.R
3dc5c77329e42a8daa8b5acf8dab60d0 *tests/testthat/test-posting.R
e132e71ab7654adde8f4f8e2269ae24e *tests/testthat/test-zconfig.R
5fb60af98e6b0b06ce7995ad944b0702 *vignettes/scoped-bot-setup.Rmd
bf707a12850358a074bc561b0aab9a26 *vignettes/using-slackr.Rmd
2033315e06011f6106f0bb59bc1a320b *tests/testthat/test-aaa-setup.R
ff43db2f4c2059e0da36ccc578dff71e *tests/testthat/test-connection.R
0b52cb527142b2f30e8c9412ea698a45 *tests/testthat/test-dev-tex.R
6fdf95996d5184553f1e28ea2cee6a01 *tests/testthat/test-history.R
99b4d4e33f210bc5fa3593b24a3ab64e *tests/testthat/test-internals.R
bfcc13c29ff97f0ab123a722cc26071e *tests/testthat/test-posting.R
08c1d391d32cad08605636127a45a1c6 *tests/testthat/test-zzz-teardown.R
7c89f7dd6001659d706e7c7769886531 *vignettes/scoped-bot-setup.Rmd
a20362e12811991fe559d9297c0492d0 *vignettes/using-slackr.Rmd
4a4e9871bf3b7814a7dc69d9af28f0af *vignettes/webhook-setup.Rmd
8 changes: 2 additions & 6 deletions NAMESPACE
Expand Up @@ -32,15 +32,9 @@ importFrom(dplyr,distinct)
importFrom(dplyr,left_join)
importFrom(dplyr,rename)
importFrom(dplyr,setdiff)
importFrom(ggplot2,aes)
importFrom(ggplot2,geom_point)
importFrom(ggplot2,ggplot)
importFrom(ggplot2,ggsave)
importFrom(ggplot2,last_plot)
importFrom(grDevices,dev.copy)
importFrom(grDevices,dev.off)
importFrom(grDevices,png)
importFrom(graphics,par)
importFrom(httr,GET)
importFrom(httr,POST)
importFrom(httr,add_headers)
Expand All @@ -56,10 +50,12 @@ importFrom(magrittr,"%>%")
importFrom(memoise,memoise)
importFrom(rlang,abort)
importFrom(rlang,call2)
importFrom(rlang,check_installed)
importFrom(rlang,inform)
importFrom(rlang,warn)
importFrom(tibble,as_tibble)
importFrom(tibble,tibble)
importFrom(tools,file_ext)
importFrom(utils,URLencode)
importFrom(utils,write.csv)
importFrom(withr,local_options)
22 changes: 22 additions & 0 deletions NEWS.md
@@ -1,3 +1,25 @@
# slackr 3.3.0
User-facing changes:

* `ggslackr` now relies on dots (`...`) to pass arguments through to `ggsave`
* `ggplot2` is now in `suggests`, so the user doesn't need it installed to use `slackr`. `ggslackr` will prompt to install if it's not already.
* Fixes a "bug" with pagination in `slackr_history` causing an almost infinite loop
* Fixes a bug in `slackr_save` where `initial_comment` would do nothing
* Improves documentation of `slackr_history` to be more helpful in pointing the user to the Slack API docs

Backend changes:

* Gets rid of default args in some un-exported functions to make tracking down bugs easier
* Adds significant test coverage

# slackr 3.2.2

* Fixes a bug where specifying specifying `duration` had no effect in `slackr_history()` if posted_from_time was not specified also. [linked issue](https://github.com/mrkaye97/slackr/issues/181)

# slackr 3.2.1

* Fixes a bug where specifying a `thread_ts` or `reply_broadcast` in `slackr` did nothing

# slackr 3.2.0

* `slackr` and `slackr_bot` no longer rely on `reprex`, as `prex_r` would fail when an eval environment needed to be specified, but couldn't.
Expand Down
27 changes: 15 additions & 12 deletions R/call_slack_api.R
Expand Up @@ -14,8 +14,8 @@ POST <- "POST"
#' @noRd
#'
stop_for_status <- function(r) {
# note that httr::stop_for_status should be called explicitly

# note that httr::stop_for_status should be called explicitly
httr::stop_for_status(r)
cr <- content(r, encoding = "UTF-8")

Expand Down Expand Up @@ -56,7 +56,7 @@ with_retry <- function(fun) {
r <- fun()
if (r$status_code == 429) {
retry_after <- headers(r)[["retry-after"]]
inform("\nPausing for ", retry_after, " seconds due to Slack API rate limit")
inform(paste("\nPausing for", retry_after, "seconds due to Slack API rate limit"))
Sys.sleep(retry_after)
} else {
ok <- TRUE
Expand All @@ -80,10 +80,16 @@ with_retry <- function(fun) {
#' @return The API response (a named list)
#' @export
#'
call_slack_api <- function(path, ..., body = NULL, .method = c("GET", "POST"),
token,
.verbose = Sys.getenv("SLACKR_VERBOSE", "FALSE"),
.next_cursor = "") {
call_slack_api <- function(
path,
...,
body = NULL,
.method = c("GET", "POST"),
token,
.verbose = Sys.getenv("SLACKR_VERBOSE", "FALSE"),
.next_cursor = ""
) {

if (missing(token) || is.null(token)) {
token <- Sys.getenv("SLACK_TOKEN", "")
}
Expand All @@ -98,9 +104,7 @@ call_slack_api <- function(path, ..., body = NULL, .method = c("GET", "POST"),
if (.verbose == "TRUE") {
old_config <- set_config(verbose())
on.exit(set_config(old_config), add = TRUE)
} # else {
# set_config(httr::verbose(data_out = FALSE, data_in = FALSE, info = FALSE, ssl = FALSE))
# }
}

# Set up the API call
call_api <- function() {
Expand All @@ -112,7 +116,6 @@ call_slack_api <- function(path, ..., body = NULL, .method = c("GET", "POST"),
.headers = c(Authorization = paste("Bearer", token))
),
query = add_cursor_get(..., .next_cursor = .next_cursor)
# ...
)
} else if (.method == "POST") {
POST(
Expand All @@ -135,7 +138,6 @@ call_slack_api <- function(path, ..., body = NULL, .method = c("GET", "POST"),
add_cursor_get <- function(..., .next_cursor = "") {
z <- list(...)
if (!is.null(.next_cursor) && .next_cursor != "") {
# inform("Appending cursor to query")
z <- append(z, list(cursor = .next_cursor))
}
z
Expand Down Expand Up @@ -207,7 +209,8 @@ with_pagination <- function(fun, extract) {
result <- convert_response_to_tibble(r, extract)
} else {
result <- bind_rows(
result, convert_response_to_tibble(r, extract)
result,
convert_response_to_tibble(r, extract)
)
}
}
Expand Down
46 changes: 25 additions & 21 deletions R/call_slack_internals.R
Expand Up @@ -9,7 +9,7 @@
#' @keywords internal
#' @noRd
#' @references https://api.slack.com/methods/conversations.list
list_channels <- function(token = Sys.getenv("SLACK_TOKEN"), types = "public_channel", exclude_archived = TRUE, ...) {
list_channels <- function(token, types, exclude_archived, ...) {
with_pagination(
function(cursor) {
call_slack_api(
Expand All @@ -33,7 +33,7 @@ list_channels <- function(token = Sys.getenv("SLACK_TOKEN"), types = "public_cha
#' @keywords internal
#' @noRd
#' @references https://api.slack.com/methods/users.list
list_users <- function(token = Sys.getenv("SLACK_TOKEN"), ...) {
list_users <- function(token, ...) {
with_pagination(
function(cursor) {
call_slack_api(
Expand Down Expand Up @@ -61,21 +61,22 @@ list_users <- function(token = Sys.getenv("SLACK_TOKEN"), ...) {
#' @param token A Slack API token.
#'
#' @references https://api.slack.com/methods/chat.postMessage
post_message <- function(txt,
channel,
emoji = "",
username = Sys.getenv("SLACK_USERNAME"),
token = Sys.getenv("SLACK_TOKEN"),
...) {
r <-
call_slack_api(
post_message <- function(
txt,
channel,
emoji,
username,
token,
...
) {
r <- call_slack_api(
"/api/chat.postMessage",
.method = POST,
token = token,
body = list(
text = txt,
channel = channel,
username = username,
text = txt,
channel = channel,
username = username,
link_names = 1,
icon_emoji = emoji,
...
Expand Down Expand Up @@ -104,27 +105,30 @@ post_message <- function(txt,
#'
#'
#' @references https://api.slack.com/methods/files.upload
files_upload <- function(file,
channels,
initial_comment = NULL,
token = Sys.getenv("SLACK_TOKEN"),
...) {
files_upload <- function(
file,
channels,
initial_comment,
token,
...
) {
r <- call_slack_api(
"/api/files.upload",
.method = POST,
token = token,
body = list(
file = upload_file(file),
file = upload_file(file),
initial_comment = initial_comment,
channels = paste(channels, collapse = ","),
channels = paste(channels, collapse = ","),
...
)
)

invisible(content(r))
}


list_scopes <- function(token = Sys.getenv("SLACK_TOKEN")) {
list_scopes <- function(token) {
r <- call_slack_api(
"/api/apps.permissions.scopes.list",
.method = GET,
Expand Down

0 comments on commit d800bda

Please sign in to comment.