R/getcamdata.R

#' Basic querying of the NOLA police bodycam API.
#'
#' @param n Max number of rows returned.
#' @param evidence_id "evidence_id" parameter.
#' @param status "status" parameter.
#' @param title "title" parameter.
#' @param date_uploaded "date_uploaded" parameter.
#' @param date_uploaded_min "date_uploaded" minimum parameter (for use if range wanted).
#' @param date_uploaded_max "date_uploaded" maximum parameter (for use if range wanted).
#' @param created_date_record_start "created_date_record_start" parameter.
#' @param date_record_end "date_record_end" parameter.
#' @param size_mb "size_mb" parameter.
#' @param size_mb_min "size_mb" minimum parameter (for use if range wanted).
#' @param size_mb_max "size_mb" maximum parameter (for use if range wanted).
#' @param duration_seconds "duration_seconds" parameter.
#' @param duration_seconds_min "duration_seconds" minimum parameter (for use if range wanted).
#' @param duration_seconds_max "duration_seconds" maximum parameter  (for use if range wanted).
#' @param location "location" parameter.
#' @param latitude "latitude" parameter.
#' @param latitude_min "latitude" minimum parameter (for use if range wanted).
#' @param latitude_max "latitude" maximum parameter (for use if range wanted).
#' @param longitude "longitude" parameter.
#' @param longitude_min "longitude" minimum parameter (for use if range wanted).
#' @param longitude_max "longitude" maximum parameter (for use if range wanted).
#' @param police_district "police_district" parameter.
#' @return A dataframe containing the rows matching the query.
#' @examples
#' getcamdata(police_district = 1)
#' getcamdata(n = 800, duration_seconds_min = 900, duration_seconds_max = 920, police_district = 2)
#' @importFrom magrittr %>%
#' @export

getcamdata <- function(n = 10, evidence_id = NA, status = NA, title = NA, date_uploaded = NA,
                       created_date_record_start = NA, date_record_end = NA, size_mb = NA, duration_seconds = NA,
                       location = NA, latitude = NA, longitude = NA, police_district = NA,

                       date_uploaded_min = NA, date_uploaded_max = NA, size_mb_min = NA, size_mb_max = NA, duration_seconds_min = NA,
                       duration_seconds_max = NA, latitude_min = NA, latitude_max = NA, longitude_min = NA, longitude_max = NA) {

  endpoint <- "https://data.nola.gov/resource/cntr-x7sf.csv"

  evidence_id_string <- ifelse(is.na(evidence_id), "", stringr::str_c("evidence_id=", evidence_id))
  status_string <- ifelse(is.na(status), "", stringr::str_c("status=", status))
  title_string <- ifelse(is.na(title), "", stringr::str_c("title=", title))
  date_uploaded_string <- ifelse(is.na(date_uploaded), "", stringr::str_c("date_uploaded=", date_uploaded))
  created_date_record_start_string <- ifelse(is.na(created_date_record_start), "", stringr::str_c("created_date_record_start=", created_date_record_start))
  date_record_end_string <- ifelse(is.na(date_record_end), "", stringr::str_c("date_record_end=", date_record_end))
  size_mb_string <- ifelse(is.na(size_mb), "", stringr::str_c("size_mb=", size_mb))
  duration_seconds_string <- ifelse(is.na(duration_seconds), "", stringr::str_c("duration_seconds=", duration_seconds))
  location_string <- ifelse(is.na(location), "", stringr::str_c("location=", location))
  latitude_string <-  ifelse(is.na(latitude), "", stringr::str_c("latitude=", latitude))
  longitude_string <- ifelse(is.na(longitude), "", stringr::str_c("longitude=", longitude))
  police_district_string <- ifelse(is.na(police_district), "", stringr::str_c("police_district=", police_district))

  date_uploaded_min_string <- ifelse(is.na(date_uploaded_min), "", stringr::str_c("date_uploaded>", date_uploaded_min))
  size_mb_min_string <- ifelse(is.na(size_mb_min), "", stringr::str_c("size_mb>", size_mb_min))
  duration_seconds_min_string <- ifelse(is.na(duration_seconds_min), "", stringr::str_c("duration_seconds>", duration_seconds_min))
  latitude_min_string <- ifelse(is.na(latitude_min), "", stringr::str_c("latitude>", latitude_min))
  longitude_min_string <- ifelse(is.na(longitude_min), "", stringr::str_c("longitude>", longitude_min))
  date_uploaded_max_string <- ifelse(is.na(date_uploaded_max), "", stringr::str_c("date_uploaded<", date_uploaded_max))
  size_mb_max_string <- ifelse(is.na(size_mb_max), "", stringr::str_c("size_mb<", size_mb_max))
  duration_seconds_max_string <- ifelse(is.na(duration_seconds_max), "", stringr::str_c("duration_seconds<", duration_seconds_max))
  latitude_max_string <- ifelse(is.na(latitude_max), "", stringr::str_c("latitude<", latitude_max))
  longitude_max_string <- ifelse(is.na(longitude_max), "", stringr::str_c("longitude<", longitude_max))


  query <- stringr::str_c(evidence_id_string, status_string, title_string, date_uploaded_string, created_date_record_start_string,
                 date_record_end_string, size_mb_string, duration_seconds_string, location_string, latitude_string, longitude_string,
                 police_district_string, date_uploaded_min_string, date_uploaded_max_string, size_mb_min_string, size_mb_max_string,
                 duration_seconds_min_string, duration_seconds_max_string, latitude_min_string, latitude_max_string, longitude_min_string,
                 longitude_max_string,
                 sep = "&")


  query <- query %>%
    stringr::str_replace_all("[&]+", "&") %>%
    stringr::str_replace("^&", "") %>%
    stringr::str_replace("&$", "") %>%
    stringr::str_replace_all("&", "%20AND%20")

  query <- ifelse(query != "", stringr::str_c("$where=", query, "&"), query)

  text <- stringr::str_c(endpoint,
                "?",
                query,
                "$limit=", n,
                "&$$app_token=", Sys.getenv("NOLA_APP_TOKEN2"))

  get_result <- httr::GET(text)
  pageview_data <- httr::content(get_result)

  return(pageview_data)

}
danieltadmon/nolacamr documentation built on May 28, 2019, 11:04 p.m.