Merge pull request #25808 from CastagnaIT/fix_url_parse
[xbmc.git] / xbmc / filesystem / SpecialProtocolDirectory.cpp
blobd1af8b03454c1733837da9948f7f1dc065f517aa
1 /*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #include "SpecialProtocolDirectory.h"
11 #include "Directory.h"
12 #include "FileItem.h"
13 #include "FileItemList.h"
14 #include "SpecialProtocol.h"
15 #include "URL.h"
16 #include "utils/URIUtils.h"
18 using namespace XFILE;
20 CSpecialProtocolDirectory::CSpecialProtocolDirectory(void) = default;
22 CSpecialProtocolDirectory::~CSpecialProtocolDirectory(void) = default;
24 bool CSpecialProtocolDirectory::GetDirectory(const CURL& url, CFileItemList &items)
26 const std::string pathToUrl(url.Get());
27 std::string translatedPath = CSpecialProtocol::TranslatePath(url);
28 if (CDirectory::GetDirectory(translatedPath, items, m_strFileMask, m_flags | DIR_FLAG_GET_HIDDEN))
29 { // replace our paths as necessary
30 items.SetURL(url);
31 for (int i = 0; i < items.Size(); i++)
33 CFileItemPtr item = items[i];
34 if (URIUtils::PathHasParent(item->GetPath(), translatedPath))
35 item->SetPath(URIUtils::AddFileToFolder(pathToUrl, item->GetPath().substr(translatedPath.size())));
37 return true;
39 return false;
42 std::string CSpecialProtocolDirectory::TranslatePath(const CURL &url)
44 return CSpecialProtocol::TranslatePath(url);