Иконка ресурса

addons REST in Pawn 1.0.6

Нет прав для скачивания
Установка
  • Скачать, распаковать архив.
  • Удалить лишний "бинарник" в extensions:
    • Если сервер на Windows, удаляйте *.so файл
    • Если сервер на Linux, удаляйте *.dll файл
  • Загрузить на удалённый игровой сервер содержимое папки, соблюдая структуру.
Расширение будет само загружаться в память сервера, когда какой-то плагин запросит его работу.
API
Всё расширение выполнено с использованием новой "киллер-фичи" SourcePawn 1.8 - методмапами аля "псевдо-классы".

Методмап HTTPClient:
  • Конструктор: public native HTTPClient(const char[] baseURL);
    Принимает на вход базовый URL
  • Установка заголовков: public native void SetHeader(const char[] name, const char[] value);
    Устанавливает "клиенту" глобальный заголовок для запроса с указанным названием и значением.
  • GET-запрос: public native void Get(const char[] endpoint, HTTPRequestCallback callback, any value = 0);
    Выполняет GET-запрос к указанному энд-поинту. Передаёт результат запроса на указанный каллбек. Возможно передать одно кастомное любое значение.
  • POST-запрос: public native void Post(const char[] endpoint, JSON data, HTTPRequestCallback callback, any value = 0);
    Выполняет POST-запрос к указанному энд-поинту, отправляя так же переданный JSON-объект. Передаёт результат запроса на указанный каллбек. Возможно передать одно кастомное любое значение.
  • PUT-запрос: public native void Put(const char[] endpoint, JSON data, HTTPRequestCallback callback, any value = 0);
    Выполняет PUT-запрос к указанному энд-поинту, отправляя так же переданный JSON-объект. Передаёт результат запроса на указанный каллбек. Возможно передать одно кастомное любое значение.
  • PATCH-запрос: public native void Patch(const char[] endpoint, JSON data, HTTPRequestCallback callback, any value = 0);
    Выполняет PATCH-запрос к указанному энд-поинту, отправляя так же переданный JSON-объект. Передаёт результат запроса на указанный каллбек. Возможно передать одно кастомное любое значение.
  • DELETE-запрос: public native void Delete(const char[] endpoint, HTTPRequestCallback callback, any value = 0);
    Выполняет DELETE-запрос к указанному энд-поинту. Передаёт результат запроса на указанный каллбек. Возможно передать одно кастомное любое значение.
  • Свойство Timeout: установка таймаута ожидания ответа от веб-сервера. В секундах.
    Код:
    property int Timeout {
        public native get();
        public native set(int iTimeout);
    }
  • Свойство ConnectTimeout: установка таймаута ожидания соединения с веб-сервером. В секундах.
    Код:
    property int ConnectTimeout {
        public native get();
        public native set(int iConnectTimeout);
    }
    Свойство FollowLocation: обрабатывать редиректы? Заставляет клиент повторять запрос снова и снова на адреса, которые получает в заголовке Location вместе с 3ХХ кодом. bool.
    Код:
    property bool FollowLocation {
        public native get();
        public native set(bool bFollowLocation);
    }
Прототипы HTTPRequestCallback:
  • function void (HTTPResponse response, any value);
    response - ответ
    value - параметр, переданный при вызове функции выполнения запроса
  • function void (HTTPResponse response, any value, const char[] szError);
    response - ответ
    value - параметр, переданный при вызове функции выполнения запроса
    szError - текст ошибки, если есть
Методмап HTTPResponse:
  • Свойство Data: JSON-объект, пришедший в ответ от сервера. Если не удалось распарсить, или сервер его вообще не вернул, равен null.
    Код:
    property JSON Data {
        public native get();
    }
  • Свойство Status: Код ответа веб-сервера.
    Код:
    property HTTPStatus Status {
        public native get();
    }
Энум HTTPStatus:
Код:
enum HTTPStatus
{
    HTTPStatus_Invalid = 0,

    // 1xx Informational
    HTTPStatus_Continue = 100,
    HTTPStatus_SwitchingProtocols = 101,

    // 2xx Success
    HTTPStatus_OK = 200,
    HTTPStatus_Created = 201,
    HTTPStatus_Accepted = 202,
    HTTPStatus_NonAuthoritativeInformation = 203,
    HTTPStatus_NoContent = 204,
    HTTPStatus_ResetContent = 205,
    HTTPStatus_PartialContent = 206,

    // 3xx Redirection
    HTTPStatus_MultipleChoices = 300,
    HTTPStatus_MovedPermanently = 301,
    HTTPStatus_Found = 302,
    HTTPStatus_SeeOther = 303,
    HTTPStatus_NotModified = 304,
    HTTPStatus_UseProxy = 305,
    HTTPStatus_TemporaryRedirect = 307,

    // 4xx Client Error
    HTTPStatus_BadRequest = 400,
    HTTPStatus_Unauthorized = 401,
    HTTPStatus_PaymentRequired = 402,
    HTTPStatus_Forbidden = 403,
    HTTPStatus_NotFound = 404,
    HTTPStatus_MethodNotAllowed = 405,
    HTTPStatus_NotAcceptable = 406,
    HTTPStatus_ProxyAuthenticationRequired = 407,
    HTTPStatus_RequestTimeout = 408,
    HTTPStatus_Conflict = 409,
    HTTPStatus_Gone = 410,
    HTTPStatus_LengthRequired = 411,
    HTTPStatus_PreconditionFailed = 412,
    HTTPStatus_RequestEntityTooLarge = 413,
    HTTPStatus_RequestURITooLarge = 414,
    HTTPStatus_UnsupportedMediaType = 415,
    HTTPStatus_RequestedRangeNotSatisfiable = 416,
    HTTPStatus_ExpectationFailed = 417,

    // 5xx Server Error
    HTTPStatus_InternalServerError = 500,
    HTTPStatus_NotImplemented = 501,
    HTTPStatus_BadGateway = 502,
    HTTPStatus_ServiceUnavailable = 503,
    HTTPStatus_GatewayTimeout = 504,
    HTTPStatus_HTTPVersionNotSupported = 505,
};
Доступные JSON-методы см. в инклуде.
Доступные инклуды:
Сверху Снизу