/* * Copyright (C) 2012-2018 Team Kodi * This file is part of Kodi - https://kodi.tv * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSES/README.md for more information. */ #include "DbUrl.h" #include "utils/URIUtils.h" CDbUrl::CDbUrl() { Reset(); } CDbUrl::~CDbUrl() = default; void CDbUrl::Reset() { m_valid = false; m_type.clear(); m_url.Reset(); m_options.clear(); } std::string CDbUrl::ToString() const { if (!m_valid) return ""; return m_url.Get(); } bool CDbUrl::FromString(const std::string &dbUrl) { Reset(); m_url.Parse(dbUrl); m_valid = parse(); if (!m_valid) Reset(); return m_valid; } void CDbUrl::AppendPath(const std::string &subPath) { if (!m_valid || subPath.empty()) return; m_url.SetFileName(URIUtils::AddFileToFolder(m_url.GetFileName(), subPath)); } void CDbUrl::AddOption(const std::string &key, const char *value) { if (!validateOption(key, value)) return; CUrlOptions::AddOption(key, value); updateOptions(); } void CDbUrl::AddOption(const std::string &key, const std::string &value) { if (!validateOption(key, value)) return; CUrlOptions::AddOption(key, value); updateOptions(); } void CDbUrl::AddOption(const std::string &key, int value) { if (!validateOption(key, value)) return; CUrlOptions::AddOption(key, value); updateOptions(); } void CDbUrl::AddOption(const std::string &key, float value) { if (!validateOption(key, value)) return; CUrlOptions::AddOption(key, value); updateOptions(); } void CDbUrl::AddOption(const std::string &key, double value) { if (!validateOption(key, value)) return; CUrlOptions::AddOption(key, value); updateOptions(); } void CDbUrl::AddOption(const std::string &key, bool value) { if (!validateOption(key, value)) return; CUrlOptions::AddOption(key, value); updateOptions(); } void CDbUrl::AddOptions(const std::string &options) { CUrlOptions::AddOptions(options); updateOptions(); } void CDbUrl::RemoveOption(const std::string &key) { CUrlOptions::RemoveOption(key); updateOptions(); } bool CDbUrl::validateOption(const std::string &key, const CVariant &value) { return !key.empty(); } void CDbUrl::updateOptions() { // Update the options string in the CURL object std::string options = GetOptionsString(); if (!options.empty()) options = "?" + options; m_url.SetOptions(options); }