Работаем с API, часть 3

Работаем с API, часть 3

Доброе время суток, уважаемые читатели!
В поддержку часто поступает вопрос, как можно с помощью API автоматизировать удаление завершеных заданий. В этой статье мы решим эту задачу.
Давайте создадим файл clearqueue.php и в нем опишем клаcc Queue
Код:
class Queue{
     protected $pass,$path;
     function __construct($pass,$path){
         $this->pass = $pass;
         $this->path = $path;
     }
 }
Для удаления задания из очереди нужно знать его ID, поэтому давайте опишем метод который получает список ID завершенных заданий. Для получения списка заданий будем использовать метод getTaskList
Код:
/*метод возвращающий массив id завершенных заданий*/
     function getTaskList(){
         $json = json_encode([
             'password' => $this->pass,
             'action' => 'getTasksList',
             "data" => [
                 'completed' => 1,
             ]
         ]);
         $ch = curl_init($this->path);
        curl_setopt($ch, CURLOPT_POST, 1);
          curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($json)));
          curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain; charset=UTF-8'));
          $response = curl_exec($ch);
           curl_close($ch);
          $response = json_decode($response, true);
          return $response['data'];
     }
Массив заданий мы получили, теперь опишем метод удаляющий задания. Для удаления будем использовать метод ChangeTaskStatus изменяя статус задания на deleting
Код:
/*Метод удаляющий задания из очереди. В качестве параметра принимает массив задач*/
     function ClearQueue($tasks){
         foreach($tasks as $task){
             $json = json_encode([
                 'password' => $this->pass,
                 'action' => 'changeTaskStatus',
                 "data" => [
                     'taskUid' => $task,
                     'toStatus' => 'deleting',
                 ]
             ]);
             $ch = curl_init($this->path);
            curl_setopt($ch, CURLOPT_POST, 1);
              curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
              curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($json)));
              curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain; charset=UTF-8'));
              $response = curl_exec($ch);
               curl_close($ch);
         }
     }
Теперь в index.php создадим объект класса Queue и вызовем метод очищающий очередь.
Код:
<?php
require_once('clearqueue.php');
$queue = new Queue('','http://127.0.0.1:9091/API');
$tasks = $queue->getTaskList();
$queue->ClearQueue($tasks);
Запускаем. Проверяем очередь задач.
11dub_190627181051.png

Задача решена.
С документацией по API вы можете ознакомиться по этой ссылке.
Автор
Support Денис
Просмотры
21
Первый выпуск
Обновление

Рейтинги

0,00 звёзд Оценок: 0

Ещё ресурсы от Support Денис

Назад
Верх