Skip to content

Commit

Permalink
Merge pull request #1 from seankross/dev
Browse files Browse the repository at this point in the history
twilio 0.1.0
  • Loading branch information
seankross authored Mar 6, 2017
2 parents ab4467a + 836512c commit 8ddc69c
Show file tree
Hide file tree
Showing 24 changed files with 296 additions and 147 deletions.
1 change: 1 addition & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
^.*\.Rproj$
^\.Rproj\.user$
^\.travis\.yml$
^cran-comments\.md$
22 changes: 20 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r
language: r

matrix:
include:
- r: release
- r: oldrel
- r: devel

language: R
sudo: false
cache: packages

env:
global:
- secure: cbwv6W6sCFyRhZRKF4TXcLnASB6pmXMIqObWjubFDKm5NG99RXztoVu6pErM8LSqEMjlNdqg13g0Z2Ir14XW6mLNL/LtRgOnGMbyLELFQXPj6VXjOtfLzVDds5r93VQoeTjbc5IKGaHpU1nllyaiqbHq6FUKP+YREKFOHv4QIou6CPku111aLPO4POSGVOTifhoWggTk47zZAYOmdeujfWEhEHuYtZLXGoU9KF/gm2I31ugTX3B4/54s0/eqD/H43MnIUp+uN51RBo7199t0vnorrlgNM5ADnwN2e+Wnp9WTa2moTV1Q8r6JGZzqy9EokOHB29wUXkZM22ImmOhN3+vN5cT/u0tTPk3UvNrg6LjCFZoEx6sqcNe/ygvArTd0uoPwXxJ9sUqM9oO2WdSWtd7YuEoIGoLud5CD8TyeDGAcLtXZZCdoWVvFg6Jl0LRPFfTpBSBHCZLJVyPqyubqdNYSKIv5Oj9LRDUdMeIsZmHH+qMSGEc1tZBHjN7m5+WRVqjSh36DzKj6xfIYNfdndIq/gOL5zSrKNPGSDFiv/4BWu7VdhKynjOmZ1BZNZNbDQg8v40ZfUg9O8YnNQY6B6b4qaGH98Ug+NPS+qEKFPJaUJejEfIXMeEK1v0QdhW3aYvv48kOGVt0JuBsqqTfm0+iXm/3tm30rUxdEuclk+JI=
- secure: DQNnCm9/9CsOJ8lk6qyfOS9JMhqBx4VKse5P55meMPwM9y2auX5ERYNBS/uDnU8ogJZFZTcE5x2qwvxsRiQpNh4Zwv3XIOguJxhu1/OdrXjFdzzJPWMsLDzRUK1QljDjn10xs5MaK6Z8GjCXVoKT+Z4dF9azGMz0yEFkURUx7QFPtjIjS3QGKPcJ8rZK3NfawAee0H6epbvR9simhltZeB8NE6+OHkw2B0KZsJf/tKTv6A80A2e6mIk0DTVkWqbcFK71dFWIaM9UkM3u6utcqeSzAcEocbzSZwD476WU8htcRq8hrsS42hCL31JT8Z1o+LfDOYqcKcfefvwYjAqayVsI2zfl7qL1jrdVGC/h4dD+NklohrLiJA9KIbShKV5AZKsIxLbkiEi1pbNwAQqz4fb3AtplXs8V9dwFexYcm/jp6eKf0n5HRfH0hyk0BbgxRZgtgWrSZ4QZD3IEPW5vtqbfOZ+kBOYk4Aa2J9x1jlMaatAl/FD9EABmGH5i2ddIw623k89NX/nPJN06NSvelTFD92W4KeQwyPmuWGmvkqiIxn32YSb9P1Zo5KytQD084xeWNQgWY50Nr42S36UK6zj5TvB86zxG0hX3g45pkyKe2I3fElypcjqOp21Ya+BcMlTrT1a2BKdjAqco8KBSbaFM/M0rb3vtrJiPwzDYP1w=
- secure: cG6fUQPA23CzTpb95wNwOfhwn/LThJTRzcqkheksa+JFGoAE3ey0McvVhK54OmnPQqkQsOceH+mEp8Gel6QrMBbnVln6r1u/pD17Y0C8A7iXMTX48yEJC2DXyprGN7hxMtUzCJLZYhKrhxODlrvHJcXiAJoMbyhc6HGmSWJuiQ+9Sbjhn+TYBU9B/bxsRWwbCgEJAbV4+5rtSSX2/A4fyasDVKM0njj0+Fpe/PiDgRakl18d6ukRLP3fMNYUce64XLyy3v2/cppD4k2GMhzQUL3/dSGkxickYMgLV1LKgqNKC/TlDVxStRY7QH/ntifzh80doSdl8SsoZodpuyKwByPGyGuYH1+rp/Zp4db9VpRoJ7uXxOprEyiIjLmGnJPKqqIi2hcHbiMoE3cEyJgM5xyBy2yyMBfrnhRvJqgXSUG/vKj2wBvtTjKOfrQNIXjNCrRvRG6BYOoW4Mz/kccH1Bvc0MDJ7zNX1VlWkvzp03cNqHoSaXznCXfSO/vJXDfpSY5NYUzEK80uAiRj5aLzCUUl0HxZ6GG7r0UycljmUdhiCGRRYZnvrjjImTZmOYgI7G/6v2WgLDQjpbjxjev+cXgErbHGW4F9bPQB+uXa7zI9YpZxW4btLJupN1JCBEMKYI6RXvSm7OBqI+uuYXGbQ08tJiCVLE2mlPf4H3jtIkw=
- secure: WLKNHB99pysXDkzvAN6mXJJHhMX7mb5ecMvAy1IveSrRrMwyXyK1EGDdASVHd9C1zciqua4KgpYOeeXQSrIbeW2MczyjccxUQSBqQzMUTeECwYpGCI3Q6OlGOEOlSbmYLYe9wj9UVQJ1fyY2FaST2eDg0pxFuHht2Ka6E2u94hqXYcNOF+IS2hP2Awyd/xyrE4IkWq/aRAcbYvz3ce0nmQ6+WyMrslZXpm8/8uDx63lV9X0k1vLxAIDLQUANOrHyjcFqYnuYJWiw4cpAsrrHhmt+SJu8R0FQAqxQvQ40ZBKGahPi0gJ2RAOvNuCnzOX+LHwX/dvUbWt8AscFe61zFdXfetBtoK2f11zCIbS2owXILUX6BKvBoQP/90+uLbdkcyFSOA58fIpvd/Uf6yRWp+m3UAMSdZmfhKo1W47BuAIg+kSOhxDy8cREKqq1ldMu/7uSFC0p8NeBLMXnbDTYXXaJNfUsFjL4YqeEjQFd6Maa/4iXpq9F+gNlX2gILrCxnLSXVrJZLdY5XqM+Z4hH03tV8+lOE4SjtqHQZ5XkCJ5ecInMxjZRdR0agJDWe1kqXAlVsn5OKAKpvhlbzEKKdVABeVDtDwOJ+NpMYv7bBy3/3Z1sWkgTCiSIb8kCptlFWhFMny6dNWdDhuu6iTZtCgnkSmRn5SZ2+pO8JfzeSn8=
- secure: NbJI8ImXPbOz1ZDz/o3ESImxZ3jlloh9PFh0wEJdwwIH+Pos3K01I48Vo6nWQe/gPOh/CtuHbNOXaHBV0/k04A7N7Jrd85cBiRR7U5lgoDW/NGUjspLd0zB2WHT7pZGq5gOUdE5bO1vHV8GALTkIbM0uYHmOsDmBJYmf6tsm4dOhx7Z1tnj3ZOh7XR3fdXe6WSc1u8gfi71C923l5SUsnAov6Chkn4avewM0Z6K8lfwinCMWJoeCe06JJ+/jeKy8Vej7Es+O9fxuZ2uYxiAwnYBHIv9BZXIpB57rrKzL8sIPfIiaHmdP5J9rqaJMhLYd37jRC24fJCm8b8cpWEEXvFh0UCTl+Rswm5+stDIY472FPV5uxAAa2FuF1VIzFnRmJeQEljVqFL4im0Ctew7bhtBfPP00K7NhuukkBISpY2HIxMjqsqOk+bhW9crsnMArMQtlQ63KG7i8q095J0m13RqzFnTHz5uVmYoC1LndlWofkLFE1dEkOegYfSbR3lxAJeb+Zbqdp7MtslGPII9N7NhnPSbV+R8OxbgNqgBgR30l7b5GhzQ4eS6LJaumA8/lpVbZuNnFdwRXOP5rysnQ7+9uukPAHXB+0et1061dJ8MTtBQGLkuLTV7Wm15dx63xMU9xjSuQE6olxsradpUnaD5PVjjWa7/MJFPg7TVV0vY=

notifications:
email:
on_success: always
on_failure: always
11 changes: 7 additions & 4 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
Package: twilio
Type: Package
Title: An interface to the Twilio API for R
Version: 0.1.0.9012
Authors@R: person("Sean", "Kross", , "[email protected]", c("aut", "cre"))
Description: Send and retrieve text and picture messages using the Twilio API.
Title: An Interface to the Twilio API for R
Version: 0.1.0
Authors@R: person("Sean", "Kross", email = "[email protected]", role = c("aut", "cre"))
Description: The Twilio web service provides an API for computer programs
to interact with telephony. The included functions wrap the SMS and MMS
portions of Twilio's API, allowing users to send and receive text messages
from R. See <https://www.twilio.com/docs/> for more information.
Depends:
R (>= 3.1.0)
Imports:
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
YEAR: 2016
YEAR: 2017
COPYRIGHT HOLDER: Sean Kross
8 changes: 4 additions & 4 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

S3method(print,twilio_media)
S3method(print,twilio_message)
export(get_message_media)
export(get_messages)
export(message_tbl)
export(send_message)
export(tw_get_message_media)
export(tw_get_messages_list)
export(tw_message_tbl)
export(tw_send_message)
importFrom(httr,GET)
importFrom(httr,POST)
importFrom(httr,authenticate)
Expand Down
13 changes: 13 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# twilio 0.1.0

* This is the initial release of the twilio package for R!

* tw_send_message() sends SMS and MMS messages.

* tw_get_messages_list() retrieves the messages list from your Twilio account
which is the log of all of your sent and receieved messages.

* tw_message_tbl() transforms the messages list into a data frame.

* tw_get_message_media() retrieves information about photos or videos included
in an MMS.
10 changes: 8 additions & 2 deletions R/get_message_media.R → R/tw_get_message_media.R
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
#' Get Media from a Message
#'
#' Media items that are attached to MMS messages, including photos and videos
#' are stored by Twilio. This function returns a list of \code{twilio_media}
#' objects, one for each piece of media in an MMS. Each object contains
#' information about that piece of media including its URL, Media SID, and
#' content type.
#'
#' @param message_sid An SID for a message that contains media.
#' @return A list containing media information.
#' @importFrom jsonlite fromJSON
Expand All @@ -15,10 +21,10 @@
#' Sys.setenv(TWILIO_TOKEN = "483H9lE05V0Jr362eq1814Li2N1I424t")
#'
#' # Get media information from a message
#' get_message_media("3eo8Jw86Lj6422NzWgb8QxXlD5c45U100v")
#' tw_get_message_media("MMo8Jw86Lj6422NzWgb8QxXlD5c45U100v")
#'
#' }
get_message_media <- function(message_sid){
tw_get_message_media <- function(message_sid){
base_url <- "https://api.twilio.com/"
ua <- user_agent("https://github.com/seankross/twilio")
path <- paste("2010-04-01", "Accounts", get_sid(), "Messages", message_sid, "Media.json", sep = "/")
Expand Down
15 changes: 9 additions & 6 deletions R/get_messages.R → R/tw_get_messages_list.R
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
#' Get Logs of Messages Sent to Your Account
#' Get List of Messages Sent and Received from Your Account
#'
#' @param page The page number of the log you would like to retrieve. Starts at zero.
#' Retrieves a list of Twilio SMS and MMS messages sent and receieved from your
#' account.
#'
#' @param page The page number of the list you would like to retrieve. Starts at zero.
#' @param page_size The number of messages per page. The maximum number allowed is 1000.
#' @return A \code{twilio_message_log} object.
#' @return A \code{twilio_messages_list} object.
#' @importFrom jsonlite fromJSON
#' @importFrom httr modify_url GET authenticate http_type content user_agent
#' @importFrom purrr map
Expand All @@ -16,10 +19,10 @@
#' Sys.setenv(TWILIO_TOKEN = "483H9lE05V0Jr362eq1814Li2N1I424t")
#'
#' # Get messages sent to your account
#' messages <- get_messages()
#' messages <- tw_get_messages_list()
#'
#' }
get_messages <- function(page = 0, page_size = 50){
tw_get_messages_list <- function(page = 0, page_size = 50){
base_url <- "https://api.twilio.com/"
ua <- user_agent("https://github.com/seankross/twilio")
path <- paste("2010-04-01", "Accounts", get_sid(), "Messages.json", sep = "/")
Expand All @@ -36,7 +39,7 @@ get_messages <- function(page = 0, page_size = 50){

structure(
map(parsed$messages, twilio_message),
class = "twilio_message_log"
class = "twilio_messages_list"
)
}

18 changes: 10 additions & 8 deletions R/message_tbl.R → R/tw_message_tbl.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
#' Make a Data Frame from Message Logs
#' Make a Data Frame from a Messages List
#'
#' @param message_log An S3 object with the class \code{twilio_message_log}. Likely
#' the result of a call to \code{\link{get_messages}}.
#' Useful for turning a \code{twilio_messages_list} into a tidy data set.
#'
#' @param messages_list An S3 object with the class \code{twilio_messages_list}. Likely
#' the result of a call to \code{\link{tw_get_messages_list}}.
#' @return A data frame.
#'
#' @importFrom magrittr %>% %<>%
Expand All @@ -17,16 +19,16 @@
#' Sys.setenv(TWILIO_TOKEN = "483H9lE05V0Jr362eq1814Li2N1I424t")
#'
#' # Get messages sent to your account
#' messages <- get_messages()
#' messages <- tw_get_messages_list()
#'
#' # Create data frame from log
#' sms_data <- message_tbl(messages)
#' sms_data <- tw_message_tbl(messages)
#'
#' }
message_tbl <- function(message_log){
stopifnot(identical(class(message_log), "twilio_message_log"))
tw_message_tbl <- function(messages_list){
stopifnot(identical(class(messages_list), "twilio_messages_list"))

raw_log <- as.data.frame(do.call(rbind, message_log), stringsAsFactors = FALSE)
raw_log <- as.data.frame(do.call(rbind, messages_list), stringsAsFactors = FALSE)
raw_log$date_created %<>% map(parse_date_time, orders = "%a %d %b %Y %H:%M:%S %z")
raw_log$date_created <- do.call(c, raw_log$date_created)
raw_log$date_updated %<>% map(parse_date_time, orders = "%a %d %b %Y %H:%M:%S %z")
Expand Down
8 changes: 4 additions & 4 deletions R/send_message.R → R/tw_send_message.R
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@
#' Sys.setenv(TWILIO_TOKEN = "483H9lE05V0Jr362eq1814Li2N1I424t")
#'
#' # Send a simple text message
#' send_message("2125557634", "9178675903", "Hello from R!")
#' tw_send_message("2125557634", "9178675903", "Hello from R!")
#'
#' # Send a picture message
#' send_message("2125557634", "9178675903", media_url = "https://www.r-project.org/logo/Rlogo.png")
#' tw_send_message("2125557634", "9178675903", media_url = "https://www.r-project.org/logo/Rlogo.png")
#'
#' # Send a picture message with text
#' send_message("2125557634", "9178675903", "Do you like the new logo?",
#' tw_send_message("2125557634", "9178675903", "Do you like the new logo?",
#' "https://www.r-project.org/logo/Rlogo.png")
#'
#' }
send_message <- function(to, from, body = NULL, media_url = NULL){
tw_send_message <- function(to, from, body = NULL, media_url = NULL){
if(is.null(body) && is.null(media_url)){
stop("Please specify body, media_url, or both.",
call. = FALSE)
Expand Down
26 changes: 17 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
# Twilio

[![Travis-CI Build Status](https://travis-ci.org/seankross/twilio.svg?branch=master)](https://travis-ci.org/seankross/twilio)
[![CRAN version](http://www.r-pkg.org/badges/version/twilio)](https://cran.r-project.org/package=twilio)
[![Downloads](http://cranlogs.r-pkg.org/badges/twilio)](http://cran-logs.rstudio.com/)

An interface to the [Twilio API](https://www.twilio.com/) for R. You'll need to
create an account at https://www.twilio.com/, then obtain an Account SID and
an Auth Token.

## Installation

```r
install.packages("twilio")
```

Or download the latest development version:

```r
library(ghit)
install_github("seankross/twilio")
install_github("seankross/twilio[dev]")
```

## Demos
Expand All @@ -29,37 +37,37 @@ library(twilio)
### Send a Text Message

```r
send_message("2125557634", "9178675903", "Hello from R 👋")
tw_send_message("2125557634", "9178675903", "Hello from R 👋")
```

### Send a Picture Message

```r
send_message("2125557634", "9178675903", media_url = "https://www.r-project.org/logo/Rlogo.png")
tw_send_message("2125557634", "9178675903", media_url = "https://www.r-project.org/logo/Rlogo.png")
```

### Send a Picture Message with Text

```r
send_message("2125557634", "9178675903", "Do you like the new logo?",
tw_send_message("2125557634", "9178675903", "Do you like the new logo?",
"https://www.r-project.org/logo/Rlogo.png")
```

### Get Message Logs
### Get Messages List

```r
messages <- get_messages()
messages <- tw_get_messages_list()
```

### Makes Logs into a Data Frame
### Make a Data Frame from the Messages List

```r
sms_data <- message_tbl(messages)
sms_data <- tw_message_tbl(messages)
```

### Get Media from a Message

```r
media <- get_message_media(sms_data$sid[1])
media <- tw_get_message_media(sms_data$sid[1])
browseURL(media[[1]]$url)
```
15 changes: 15 additions & 0 deletions cran-comments.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## Release summary

This is the third attempted CRAN release of twilio 0.1.0. The URL in the
`Description` section of the `DESCRIPTION` file has been put between angle
brackets.

## Test environments

* local macOS Sierra install, R 3.3.2
* Ubuntu 12.04 (on travis-ci), R 3.3.2, R 3.2.5, R-devel.
* win-builder (release)

## R CMD check results

There were no ERRORs, WARNINGs or NOTEs.
31 changes: 0 additions & 31 deletions man/get_message_media.Rd

This file was deleted.

33 changes: 0 additions & 33 deletions man/get_messages.Rd

This file was deleted.

35 changes: 0 additions & 35 deletions man/message_tbl.Rd

This file was deleted.

Loading

0 comments on commit 8ddc69c

Please sign in to comment.