Спецификация API для работы с сервером проверки на уникальность

Последнее изменение 12.04.2024

Запрос к серверу:

Адрес: http://{xxx.xxx.xxx.xxx}:{порт}/etxt_antiplagiat

POST-параметры для различных действий:

1) Получение текущего состояния сервера:

try=1

2) Постановка пакета в очередь на проверку

xmlUrl={Адрес к xml-пакету с текстами на проверку}
xmlAnswerUrl={Адрес к скрипту, принимающего результаты проверки, должен в конце возвращать "ok" латинскими символами (без кавычек)}


Примечание:

  • пакет успешно поставлен в очередь на проверку, если код ответа сервера Code=1
  • если скрипт, принимающий результаты проверки не будет возвращать в конце "ok", то сервер будет вновь и вновь повторять попытки отправки результатов проверки

Ответ сервера (в JSON формате):

Code - Возвращает код ответа сервера:

0 - Неизвестная ошибка
1 - Задача на пакетную обработку принята
3 - Неверно указан (или вообще не указан) адрес к xml-файлу с пакетом документов для обработки
4 - Неверно указан адрес при запросе к серверу (должен быть в форме http://{xxx.xxx.xxx.xxx}:{порт}/etxt_antiplagiat)
5 - Неверно указан (или вообще не указан) адрес к скрипту, принимающего результаты обработки проверки
6 - Запрос на состояние сервера успешно обработан
7 - Отсутствует доступ к Интернет
8 - Принята команда на остановку сервера
9 - Запрос на получение трассировочной информации с сервера успешно обработан
10 - Запрос отклонен из-за невозможности проверить доступ клиента к сервису. Можно повторить попытку немного позже
11 - Запрос отклонен из-за отсутствия доступа к сервису (скорей всего из-за нулевого баланса)
12 - Запрос отклонен из-за превышения макс-го кол-ва пакетов в очереди (50 по умолчанию)
13 - Запрос отклонен из-за истечения срока тестового доступа

Description - Возвращает текстовое описание ответа сервера
NumPacketsInQueue - Возвращает текущее число пакетов в очереди
AvgDocumentTime - Возвращает среднее время обработки документа в пакете, в минутах. Будет меньше нуля, если пока эту характеристику невозможно вычислить
CurrentPacketTime - Текущее время обработки текущего пакета, в минутах (целое число). Будет =-1, если оно не вычислялось.
CurDocProgress - Прогресс обработки текущего проверяемого документа в пакете, в процентах (целое число). Будет =-1, если он не вычислялся.

Пример ответа:
{"Code":3,"Description":"В запросе отсутствует адрес с пакетом данных для обработки","NumPacketsInQueue":2,"AvgDocumentTime":-1.000000E+000, "CurrentPacketTime":-1, "CurDocProgress": -1}

Получение результата:

Результат получает скрипт, адрес которого был указан в POST-параметре при запросе к серверу. Ему будут доступны следующие POST-поля:

  • XmlFileName - Имя файла Xml-пакета с документами
  • NumDocsInPacket - Число документов в пакете
  • PacketTime - Время обработки пакета, в минутах
  • DocumentTime - Среднее время обработки документа в пакете, в минутах
  • ServerType - Параметр, полученный от клиента в Xml-пакете при запросе
  • TotalWords - Общее число слов всех документов из пакета после канонизации
  • Xml - Результат проверки Xml-пакета, зашифрованный, а затем и кодированный в Base64
  • Error - Содержит ошибку, если не удалось проверить Xml-пакет (в этом случае все строковые POST-поля будут пустыми (кроме XmlFileName), а целочисленные - нулевые). Закодирован в Base64
  • ServerId - Id сервера (Ip/порт вида {xxx.xxx.xxx.xxx}:{порт})

Формат Xml-пакета (ЗАПРОС)

Примечания:

  • символами [] обозначается опциональность присутствия узлов/атрибутов
  • выражение (x|y|z) обозначает выбор одного из перечисленных значений, то есть либо x, либо y, либо z
  • text[format] - по умолчанию равен "html", то есть html-текст в UTF-8
  • text[ftext2] - если "true", то сервер вернет доп. поле ftext2 - форматированный html, где совпавшие шинглы отмечены через имена css-классов (их можно подсветить через них, сами классы соотв-х url с совпадениями пишутся в url[className])
  • text[noUrlLimit] - если "true", то в ответе не будет ограничения на кол-во найденных url с совпадениями (по умолчанию передаются только максимум 5 url с наибольшими совпадениями)

Формат Xml-пакета (ОТВЕТ)

Примечания:

  • символами [...] обозначается опциональность присутствия узлов/атрибутов
  • если уникальность проверенного текста = 100, то поле ftext отсутствует (но если text[format] был задан в отличное значение от "txt", то ftext будет возвращаться при любой уникальности)
  • в полях url возвращаются (максимум 5) url страниц с наибольшим процентом совпадений с проверяемым текстом
  • атрибуты uniqShin и uniqFreq присутствуют только при методе сравнения ShingleFrequency, также в этом случае ftext[uniq] и url[unique] - это уникальность по методу шинглов (если CompareMethodUniq = Shingle) либо уникальность по методу на рерайт (если CompareMethodUniq = Frequency) либо минимальное из соответствующих uniqShin и uniqFreq (если CompareMethodUniq = ShingleFrequency, задано по умолчанию)
  • поле ftext2, а также атрибуты url[className] присутствуют только если в исх. запросе text[ftext2]="true" и уникальность проверенного текста < 100
  • поле fcit присутствует только если опция IgnoreCitation=true и в тексте есть хотя бы одна цитата

PHP-класс для общения с сервером проверки на уникальность

Постановка задания на проверку

Получение ответа от сервера

Поделиться с друзьями