R/baixar_pdf_carf.R

Defines functions baixar_pdf_carf

Documented in baixar_pdf_carf

#' Baixar inteiro teor da decisão do Carf
#'
#' @param df tibble com acordao, contribuinte, processo e data_sessao
#' @param diretorio Se não informado, o atual
#'
#' @return Baixa o pdf assim nomeado data_hora_acordao_processo.pdf
#' @export
#'
#' @examples
#' \dontrun{
#' baixar_pdf_carf(df)
#' }
baixar_pdf_carf <- function(df = NULL, diretorio = "."){

  httr::set_config(httr::config(ssl_verifypeer = FALSE))

 df <- df %>%
  dplyr::select(acordao,processo, contribuinte,data_sessao) %>%
  dplyr::mutate_at(1:2,list(~stringr::str_remove_all(.,"\\D+"))) %>%
  dplyr::mutate_at(1:3,list(~stringr::str_squish(.)))

    data_final <- df$data_sessao %>% format("%m/%Y")

    data_inicial <- df$data_sessao %>%
      `-`(365) %>% ## Isso pode não ser exato.
      format("%m/%Y")

purrr::pwalk(list(a = df$acordao, b = df$processo, c = df$contribuinte, d =  data_inicial, e = data_final), function(a,b,c,d,e){

  ## URL consulta
  url1<- "https://carf.fazenda.gov.br/sincon/public/pages/ConsultarJurisprudencia/consultarJurisprudenciaCarf.jsf"

  ## Primeira resposta

  r1<- httr::RETRY("GET",url1)

  ## ViewState

  viewState<-r1 %>%
    httr::content(as="text") %>%
    xml2::read_html() %>%
    xml2::xml_find_first("//*[@id='javax.faces.ViewState']") %>%
    xml2::xml_attr("value")


  body <-
    list(
      AJAXREQUEST = "_viewRoot",
      consultaJurisprudenciaForm = "consultaJurisprudenciaForm",
      uniqueToken = "",
      dataInicialInputDate = d,
      dataInicialInputCurrentDate = d,
      dataFinalInputDate = e,
      dataFinalInputCurrentDate = e,
      campo_pesquisa1 = "3",
      valor_pesquisa1 = a,
      campo_pesquisa2 = "2",
      valor_pesquisa2 = c,
      campo_pesquisa3 = "1",
      valor_pesquisa3 = "",
      javax.faces.ViewState = viewState,
      j_id51 = "j_id51",
      ` ` =  "")

  r2 <- httr::RETRY("POST",url1,body=body,encode='form',httr::timeout(30))


  ## Segundo ViewState
  viewState<-r2 %>%
    httr::content(as="text") %>%
    xml2::read_html() %>%
    xml2::xml_find_first("//*[@id='javax.faces.ViewState']") %>%
    xml2::xml_attr("value")

  body2<-list(
    formAcordaos =	"formAcordaos",
    uniqueToken	= "",
    javax.faces.ViewState	= viewState,
    `tblJurisprudencia:0:numDecisao` =	"tblJurisprudencia:0:numDecisao"

  )

  ## Terceira resquisição
  url2<-"https://carf.fazenda.gov.br/sincon/public/pages/ConsultarJurisprudencia/listaJurisprudenciaCarf.jsf"

  r3 <- httr::RETRY("POST",url2,body=body2,encode="form",httr::timeout(30))
  ## Quarta requisição

  conteudo  <- r3 %>%
    httr::content("text") %>%
    xml2::read_html()

  formAcordaos <- conteudo %>%
    xml2::xml_find_all("//a[contains(@id,'formAcordaos:j')]") %>%
    xml2::xml_attr("id")

  viewState<-conteudo %>%
    xml2::xml_find_first("//*[@id='javax.faces.ViewState']") %>%
    xml2::xml_attr("value")


  body3<-list(
    formAcordaos =	"formAcordaos",
    uniqueToken	= "",
    `javax.faces.ViewState`	= viewState,
    `formAcordaos:_idcl` = formAcordaos
  )

  url3 <- "https://carf.fazenda.gov.br/sincon/public/pages/ConsultarJurisprudencia/listaJurisprudencia.jsf"

  arquivo <- paste0("_",a,"_",b,".pdf")

  httr::RETRY("POST",url3,body=body3,encode="form",
              httr::timeout(30),
              httr::write_disk(file.path(diretorio,
                                         Sys.time() %>%
                                           stringr::str_replace_all("\\D+", "_") %>%
                                           stringr::str_replace("$", arquivo))))

})

}
jjesusfilho/carf documentation built on Nov. 4, 2019, 2:44 p.m.