3.0.0 2023-12-11 11:54 UTC

This package is not auto-updated.

Last update: 2024-09-30 15:29:44 UTC


README

Version Total Downloads License

Набор классов для организации API

Установка (composer)

composer require 'rusadrako/api'

Установка (manual)

  • Скачать и распоковать библиотеку.
  • Добавить в код инструкцию:
require_once('/api/src/autoload.php')

Аутентификация внешнего подключения

use RusaDrako\api\ClientApi;
use RusaDrako\api\ExceptionClientApi;
use RusaDrako\api\ExceptionToken;

# Уникальный ключ соединения
$key = '0123456789ABCDEF';
# Активация объекта
$apiClient = new ClientApi($key);

# Входящий токен
$token = $_POST['token'];
# Входящий массив данных для проверки токена
$token_data = [
    $_POST['date'],
    $_POST['add_data'],
    ...
];

try {
    # Проверка аутентификации
    $apiClient->auth($token, ...$token_data);
} catch (ExceptionClientApi $e) {
    # Возвращаем ошибку аутентификации
    $apiClient->get_result()->error($e->getCode, $e->getMessage());
} catch (ExceptionToken $e) {
    # Возвращаем ошибку генерации токена
    $apiClient->get_result()->error($e->getCode, $e->getMessage());
}
/* Обработка данных */
# Возвращаем результата
$apiClient->get_result()->result('Ок');

Класс ClientApi

Базовый клас для организации API

use RusaDrako\api\ClientApi;

# Уникальный ключ соединения
$key = '0123456789ABCDEF';

$apiClient = new ClientApi($key);

Метод auth()

Проверяет подлинность токена

/** @var ClientApi $apiClient */
$auth = $apiClient->auth($token, ...$token_data);
  • $token - входящий токен
  • ...$token_data - массив данных для проверки токена используемый объектом RusaDrako\api\Token

Метод возвращает true или прерывает выполнение кода и выводит json-сообщение об ошибке.

Метод generate_token()

Генерирует токен. Возвращает Токен или прерывает выполнение скрипта и выводит json-сообщение об ошибке.

/** @var ClientApi $apiClient */
$token = $apiClient->generate_token(...$token_data);
  • ...$token_data - массив данных для проверки токена используемый объектом RusaDrako\api\Token

Метод set_token()

Задаёт новый объект генерации токена.

/** @var ClientApi $apiClient */
$apiClient->set_token($obj_token);
  • $obj_token - объект генерации токена реализующий интерфейс RusaDrako\api\_inf_token

Метод get_token();

Возвращает объект генерации токена.

/** @var ClientApi $apiClient */
$obj_token = $apiClient->get_token();

Метод get_result()

Возвращает объект вывода результата.

/** @var ClientApi $apiClient */
$result_obj = $apiClient->get_result();

Класс Token

Класс формирования токена API. Можно назначить свой токен

use RusaDrako\api\Token;
$result_obj = new Token($key);
  • $key - секретный ключ.

Метод generate()

Генерирует токен

$datetime = '2023-01-01 15:00:00';
$requiredParameter = '<Любые_данные>';
$notRequiredParameter = '<Любые_данные>';
...
/** @var Token $token_obj */
$token = $token_obj->generate($datetime, $requiredParameter, $notRequiredParameter, ...);
  • $datetime - контрольное время, относительно которого расчитывается токен. Время токена не должно отличаться от текущего время больше чем на +/-10 минут.
  • $requiredParameter - обязательные параметр (отсутствие вызывает ошибку). Обязательный параметр не должен быть пустым.
  • $notRequiredParameter - необязательные параметры (любое количество) (отсутствие не вызывает ошибку).

Класс Result

Класс формирования ответа API

use RusaDrako\api\Result;
$result_obj = new Result();

Метод result()

Формирует и выводит ответ для API

/** @var Result $result_obj */
$result_obj->result($answerData);
  • $answerData - данные для ответа

Метод error()

Формирует и выводит ответ для API с ошибкой

/** @var Result $result_obj */
$result_obj->error($errCode, $errMessage);
  • $errCode - код ошибки
  • $errMessage - сообщение об ошибке

Варианты формирования ответов

Ответ с данными

/** @var ClientApi $apiClient */
$apiClient->get_result()->result("<Любые данные результата>");
{"ok":true,"result":"<Любые данные результата>"}

Ответ с массивом данных

/** @var ClientApi $apiClient */
$apiClient->get_result()->result(['key_1'=>'Текст 1','key_2'=>'Текст 2']);
{"ok":true,"result":{"key_1":"Текст 1","key_2":"Текст 2"}}

Ответ с ошибкой

/** @var ClientApi $apiClient */
$apiClient->get_result()->error("<Код ошибки>", "<Описание ошибки>");
{"ok":false,"result":null,"errCode":"<Код ошибки>","errMessage":"<Описание ошибки>"}

License

Copyright (c) Petukhov Leonid. Distributed under the MIT.