Tools to Work with the 'Splash' JavaScript Rendering Service in R
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
3.0 KiB

4 years ago
  1. #' Retrieve or test content type of a HAR request object
  2. #'
  3. #' @param har_resp_obj HAR response object
  4. #' @export
  5. get_content_type <- function(har_resp_obj) {
  6. ctype <- har_resp_obj$response$content$mimeType
  7. if (ctype == "") return(NA_character_)
  8. if (any(grepl(";", ctype))) ctype <- gsub(";.*$", "", ctype)
  9. ctype
  10. }
  11. #' @md
  12. #' @rdname get_content_type
  13. #' @param type content type to compare to (default: "`application/json`")
  14. #' @export
  15. is_content_type <- function(har_resp_obj, type="application/json") {
  16. get_content_type(har_resp_obj) == type
  17. }
  18. #' @rdname get_content_type
  19. #' @export
  20. is_json <- function(har_resp_obj) { is_content_type(har_resp_obj) }
  21. #' @rdname get_content_type
  22. #' @export
  23. is_xml <- function(har_resp_obj) { is_content_type(har_resp_obj, type="application/xml") }
  24. #' @rdname get_content_type
  25. #' @export
  26. is_css <- function(har_resp_obj) { is_content_type(har_resp_obj, type="text/css") }
  27. #' @rdname get_content_type
  28. #' @export
  29. is_plain <- function(har_resp_obj) { is_content_type(har_resp_obj, type="text/plain") }
  30. #' @rdname get_content_type
  31. #' @export
  32. is_binary <- function(har_resp_obj) { is_content_type(har_resp_obj, type="application/octet-stream") }
  33. #' @rdname get_content_type
  34. #' @export
  35. is_javascript <- function(har_resp_obj) {
  36. is_content_type(har_resp_obj, type="text/javascript") |
  37. is_content_type(har_resp_obj, type="text/x-javascript")
  38. }
  39. #' @rdname get_content_type
  40. #' @export
  41. is_html <- function(har_resp_obj) { is_content_type(har_resp_obj, type="text/html") }
  42. #' @rdname get_content_type
  43. #' @export
  44. is_jpeg <- function(har_resp_obj) { is_content_type(har_resp_obj, type="image/jpeg") }
  45. #' @rdname get_content_type
  46. #' @export
  47. is_png <- function(har_resp_obj) { is_content_type(har_resp_obj, type="image/png") }
  48. #' @rdname get_content_type
  49. #' @export
  50. is_svg <- function(har_resp_obj) { is_content_type(har_resp_obj, type="image/svg+xml") }
  51. #' @rdname get_content_type
  52. #' @export
  53. is_gif <- function(har_resp_obj) { is_content_type(har_resp_obj, type="image/gif") }
  54. #' @rdname get_content_type
  55. #' @export
  56. is_xhr <- function(x) {
  57. if (is.null(x$request$headers)) return(NA)
  58. if (length(x$request$headers)==0) return(NA)
  59. y <- map(x$request$headers, "value")
  60. names(y) <- tolower(map_chr(x$request$headers, "name"))
  61. if ("x-requested-with" %in% names(y)) {
  62. return(tolower("xmlhttprequest") == tolower(y[["x-requested-with"]]))
  63. } else {
  64. return(FALSE)
  65. }
  66. }
  67. #' Retrieve size of content | body | headers
  68. #'
  69. #' @param har_resp_obj HAR response object
  70. #' @export
  71. get_content_size <- function(har_resp_obj) {
  72. csize <- har_resp_obj$response$content$size
  73. if (is.null(csize)) return(NA_real_)
  74. return(as.numeric(csize))
  75. }
  76. #' @rdname get_content_size
  77. #' @export
  78. get_body_size <- function(har_resp_obj) {
  79. bsize <- har_resp_obj$response$bodySize
  80. if (is.null(bsize)) return(NA_real_)
  81. return(as.numeric(bsize))
  82. }
  83. #' @rdname get_content_size
  84. #' @export
  85. get_headers_size <- function(har_resp_obj) {
  86. hsize <- har_resp_obj$response$headersSize
  87. if (is.null(hsize)) return(NA_real_)
  88. return(as.numeric(hsize))
  89. }