/**************************************************************************** * Copyright (C) 2016-2023 Savoir-faire Linux Inc. * * Author : Alexandre Viau * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * ***************************************************************************/ #include #include "namedirectory.h" #include "private/namedirectory_p.h" #include "dbus/configurationmanager.h" NameDirectoryPrivate::NameDirectoryPrivate(NameDirectory* q) : q_ptr(q) { ConfigurationManagerInterface& configurationManager = ConfigurationManager::instance(); connect(&configurationManager, &ConfigurationManagerInterface::nameRegistrationEnded, this, &NameDirectoryPrivate::slotNameRegistrationEnded, Qt::QueuedConnection); connect(&configurationManager, &ConfigurationManagerInterface::registeredNameFound, this, &NameDirectoryPrivate::slotRegisteredNameFound, Qt::QueuedConnection); connect(&configurationManager, &ConfigurationManagerInterface::exportOnRingEnded, this, &NameDirectoryPrivate::slotExportOnRingEnded, Qt::QueuedConnection); } NameDirectory::NameDirectory() : QObject(QCoreApplication::instance()) , d_ptr(new NameDirectoryPrivate(this)) {} /// Singleton NameDirectory& NameDirectory::instance() { static auto instance = new NameDirectory; return *instance; } // Name registration ended void NameDirectoryPrivate::slotNameRegistrationEnded(const QString& accountId, int status, const QString& name) { qDebug() << "Name registration ended. Account:" << accountId << "status:" << status << "name:" << name; Q_EMIT q_ptr->nameRegistrationEnded(static_cast(status), name); } // Registered Name found void NameDirectoryPrivate::slotRegisteredNameFound(const QString& accountId, int status, const QString& address, const QString& name) { switch (static_cast(status)) { case NameDirectory::LookupStatus::INVALID_NAME: qDebug() << "lookup name is INVALID: address: " << address << " name: " << name << " accountId: " << accountId; break; case NameDirectory::LookupStatus::NOT_FOUND: qDebug() << "lookup name NOT FOUND: address: " << address << " name: " << name << " accountId: " << accountId; break; case NameDirectory::LookupStatus::ERROR: qDebug() << "lookup name ERROR: address: " << address << " name: " << name << " accountId: " << accountId; break; case NameDirectory::LookupStatus::SUCCESS: break; } Q_EMIT q_ptr->registeredNameFound(static_cast(status), address, name); } // Export account has ended with pin generated void NameDirectoryPrivate::slotExportOnRingEnded(const QString& accountId, int status, const QString& pin) { qDebug() << "Export on ring ended for account: " << accountId << "status: " << status << "PIN: " << pin; Q_EMIT q_ptr->exportOnRingEnded(static_cast(status), pin); } // Lookup a name bool NameDirectory::lookupName(const QString& accountId, const QString& name, const QString& nameServiceURL) const { return ConfigurationManager::instance().lookupName(accountId, nameServiceURL, name); } // Lookup an address bool NameDirectory::lookupAddress(const QString& accountId, const QString& address, const QString& nameServiceURL) const { return ConfigurationManager::instance().lookupAddress(accountId, nameServiceURL, address); } NameDirectory::~NameDirectory() { delete d_ptr; }