Esempio n. 1
0
Status
pluginDataSet(const Account &account, const std::string &plugin,
    const std::string &key, const std::string &data)
{
    ABC_CHECK(fileEnsureDir(pluginsDirectory(account)));
    ABC_CHECK(fileEnsureDir(pluginDirectory(account, plugin)));

    PluginDataFile json;
    json.keySet(key);
    json.dataSet(data);
    ABC_CHECK(json.save(keyFilename(account, plugin, key), account.login.dataKey()));

    return Status();
}
Esempio n. 2
0
std::list<std::string>
pluginDataKeys(const Account &account, const std::string &plugin)
{
    std::list<std::string> out;

    std::string outer = pluginDirectory(account, plugin);
    DIR *dir = opendir(outer.c_str());
    if (!dir)
        return out;

    struct dirent *de;
    while (nullptr != (de = readdir(dir)))
    {
        PluginDataFile json;
        if (fileIsJson(de->d_name)
                && json.load(outer + de->d_name, account.login.dataKey())
                && json.keyOk())
            out.push_back(json.key());
    }

    closedir(dir);
    return out;
}
Esempio n. 3
0
Status
pluginDataSet(const Account &account, const std::string &plugin,
              const std::string &key, const std::string &data)
{
    ABC_CHECK(fileEnsureDir(pluginsDirectory(account)));
    ABC_CHECK(fileEnsureDir(pluginDirectory(account, plugin)));

    const auto namePath = pluginDirectory(account, plugin) + "Name.json";
    if (!fileExists(namePath))
    {
        PluginNameJson json;
        ABC_CHECK(json.nameSet(plugin));
        json.save(namePath, account.login.dataKey());
    }

    PluginDataFile json;
    json.keySet(key);
    json.dataSet(data);
    ABC_CHECK(json.save(keyFilename(account, plugin, key),
                        account.login.dataKey()));

    return Status();
}
Esempio n. 4
0
Status
pluginDataGet(const Account &account, const std::string &plugin,
              const std::string &key, std::string &data)
{
    PluginDataFile json;
    ABC_CHECK(json.load(keyFilename(account, plugin, key),
                        account.login.dataKey()));
    ABC_CHECK(json.keyOk());
    ABC_CHECK(json.dataOk());

    if (json.key() != key)
        return ABC_ERROR(ABC_CC_JSONError, "Plugin filename does not match contents");

    data = json.data();
    return Status();
}