Создание плагинов

Для расширенной поддержки серверов в программе используются скрипты на языке Squirrel 2.

Документация языка Squirrel
Документация стандартной библиотеки языка Squirrel

Они должны быть сохранены в кодировке utf-8 в файлах с расширением .nut.

Пример плагина (example.nut):

// Функция, загружающая файл
function  UploadFile(FileName, options)
{
    nm.setUrl("http://example.com/upload.php");
    nm.addQueryParamFile("file", FileName, ExtractFileName(FileName),"");
    nm.addQueryParam("submit", "Upload file!");
    nm.doUploadMultipartData();

    local response = nm.responseBody();
    local directUrl = regex_simple(response, "\\[IMG\\](.+)\\[/IMG\\]",0);
    
    options.setDirectUrl(directUrl);

    return 1; //успех
}

// Вспомогательная функция, упрощающая работу с регулярными выражениями
function regex_simple(data,regStr,start)
{
    local ex = regexp(regStr);
    local res = ex.capture(data, start);
    local resultStr = "";
    if(res != null){    
        resultStr = data.slice(res[1].begin, res[1].end);
    }
    return resultStr;
}

// Необязательные функции:
// Получение списка альбомов(папок, галерей) на сервере
function GetFolderList(list)
{
    // Ваш код
    return 1; //успех
}
 
// Функция, создающая альбомы
function CreateFolder(parentAlbum,album)
{
    // Ваш код
    return 1; //успех
}
 
function ModifyFolder(album)
{
    // Ваш код
    return 1; //успех
}
 
// Функция, возвращающая список видов ограничений доступа к альбому:
// приватный, общедоступный, только для друзей и т.п.
function GetFolderAccessTypeList()
{
    return ["ТипДоступа1", "ТипДоступа2"];
}



В общем случае необходимо реализовать 1 функцию — UploadFile.
Если нужна поддержка серверных альбомов, то необходимо реализовать еще 4 функции — GetFolderList, CreateFolder, ModifyFolder, GetFolderAccessTypeList.