2 * Copyright (C) 2015-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.
10 #include "EventsDirectory.h"
13 #include "ServiceBroker.h"
15 #include "events/EventLog.h"
16 #include "utils/StringUtils.h"
18 using namespace XFILE
;
20 bool CEventsDirectory::GetDirectory(const CURL
& url
, CFileItemList
&items
)
22 items
.ClearProperties();
23 items
.SetContent("events");
25 auto log
= CServiceBroker::GetEventLog();
28 std::string hostname
= url
.GetHostName();
33 bool includeHigherLevels
= false;
34 // check if we should only retrieve events from a specific level or
35 // also from all higher levels
36 if (StringUtils::EndsWith(hostname
, "+"))
38 includeHigherLevels
= true;
40 // remove the "+" from the end of the hostname
41 hostname
= hostname
.substr(0, hostname
.size() - 1);
44 EventLevel level
= CEventLog::EventLevelFromString(hostname
);
46 // get the events of the specified level(s)
47 events
= log
->Get(level
, includeHigherLevels
);
50 for (const auto& eventItem
: events
)
51 items
.Add(EventToFileItem(eventItem
));
56 std::shared_ptr
<CFileItem
> CEventsDirectory::EventToFileItem(
57 const std::shared_ptr
<const IEvent
>& eventItem
)
60 return CFileItemPtr();
62 CFileItemPtr
item(new CFileItem(eventItem
));
64 item
->SetProperty(PROPERTY_EVENT_IDENTIFIER
, eventItem
->GetIdentifier());
65 item
->SetProperty(PROPERTY_EVENT_LEVEL
, CEventLog::EventLevelToString(eventItem
->GetLevel()));
66 item
->SetProperty(PROPERTY_EVENT_DESCRIPTION
, eventItem
->GetDescription());