Commandes en erreur 403

Pour ceux qui on un problème de refresh du token (date dans le passé par exemple), j’ai rapidement fait un bout de code à coller dans un bloc « code » d’un scénario qui s’exécute toutes les 5 minutes.

$pluginId = "tesla";

//get "refreshToken" cron from tesla plugin
$cron = cron::byClassAndFunction($pluginId, "refreshToken");

if($cron != false) {
  $scenario->setLog("Current cron infos: ". $cron->getClass() . ' / ' . $cron->getFunction() . ' / ' . $cron->getSchedule());

  //get expireDate config value (return a string date like "22 Mar 2024 19h55")
  $tokenExpireFromConfig = config::byKey("expireDate", $pluginId);

  if($tokenExpireFromConfig != "") {

    //convert string date to datetime
    $tokenExpireDatetime = DateTime::createFromFormat("d M Y H\hi", $tokenExpireFromConfig);
    //convert timestamp to Cron (-5 minutes)
    $cronStrFromDate = cron::convertDateToCron($tokenExpireDatetime->getTimestamp()-(5*60));

    //if calculated cron is different than the stored cron
    if($cronStrFromDate != $cron->getSchedule()) {
      $scenario->setLog("Update refreshToken cron from '".$cron->getSchedule()."' to '".$cronStrFromDate."'");
      $cron->setSchedule($cronStrFromDate);
      $result = $cron->save();
      if($result) {
        $scenario->setLog("Updated cron infos: ". $cron->getClass() . ' / ' . $cron->getFunction() . ' / ' . $cron->getSchedule());
      }
      else {
        $scenario->setLog("Error during the save operation");
      }
    }
    else {
      $scenario->setLog("Cron already ok, nothing to do");
    }
  }
  else {
    $scenario->setLog("expireDate config value not found");
  }
}
else {
  $scenario->setLog("Cron not found");
}
2 « J'aime »