R/yadirGetBalance.R

Defines functions yadirGetBalance

Documented in yadirGetBalance

yadirGetBalance <- function(Logins = NULL, Token = NULL){

   if(is.null(Token)){
     stop("Token is a require argument!")
   }

   #Äëÿ ïðàâèëüíîãî ôîðìèðîâàíèÿ JSON ñìîòðèì ê-âî ëîãèíîâ è â ñëó÷àå åñëè ëîãèí 1 òî ïðåîáðàçóåì åãî â lost
   if(length(Logins)==1){
     Logins <- list(Logins)
    }

   #Ôîðìèðóåì òåëî çàïðîñà
  body_list <-  list(method = "AccountManagement",
                     param  = list(Action = "Get",
                                   SelectionCriteria = list(Logins = Logins)),
                     locale = "ru",
                     token = Token)

  #Ôîðìèðóåì òåëî çàïðîñà
  body_json <- toJSON(body_list,auto_unbox = T, pretty=TRUE)

  #Îáðàùàåìñÿ ê API
  answer <- POST("https://api.direct.yandex.ru/live/v4/json/", body = body_json)
  
  #Îñòàâëèâàåì ïðè îøèáêå
  stop_for_status(answer)
  
  #ïàðñèì ðåçóëüòàò
  dataRaw <- content(answer, "parsed", "application/json")
  
  #Åù¸ îäíà ïðîâåðêà íà îøèáêè
  if(!is.null(dataRaw$error_code)){
    stop(paste0("Error: code - ",dataRaw$error_code, ", message - ",dataRaw$error_str, ", detail - ",dataRaw$error_detail))
  }
  
  #Ïðåîáðàçóåì ïîëó÷åííûé ðåçóëüòàò â òàáëèöó
  result <- fromJSON(content(answer, "text", "application/json"),flatten = TRUE)$data$Accounts
  
  #Ïðîâåðÿåì âñå ëè ëîãèíû çàãðóçèëèñü
  errors_list <- fromJSON(content(answer, "text", "application/json"),flatten = TRUE)$data$ActionsResult
  
  if(length(errors_list) > 0){
  error <- data.frame(login = errors_list$Login, do.call(rbind.data.frame, errors_list$Errors))
  packageStartupMessage(paste0("Next ",nrow(error)," account",ifelse(nrow(error) > 1, "s","")," get error with try get ballance:"), appendLF = T)
  
  for(err in 1:nrow(error)){
  packageStartupMessage(paste0("Login: ", error$login[err]), appendLF = T)
  packageStartupMessage(paste0("....Code: ", error$FaultCode[err]), appendLF = T)
  packageStartupMessage(paste0("....String: ", error$FaultString[err]), appendLF = T)  
  packageStartupMessage(paste0("....Detail: ", error$FaultDetail[err]), appendLF = T)
  }}
    
  return(result)}
alex-www-marketing/ryandexdirect_edit documentation built on May 4, 2019, 10:57 a.m.