/* * Copyright (C) 2020 Emeric Poupon * * This file is part of LMS. * * LMS is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * LMS 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with LMS. If not, see . */ #include "Scan.hpp" #include "scanner/IScanner.hpp" #include "utils/Service.hpp" namespace API::Subsonic::Scan { using namespace Scanner; static Response::Node createStatusResponseNode() { Response::Node statusResponse; const IScanner::Status scanStatus {Service::get()->getStatus()}; statusResponse.setAttribute("scanning", scanStatus.currentState == IScanner::State::InProgress); if (scanStatus.currentState == IScanner::State::InProgress) { std::size_t count{}; if (scanStatus.currentScanStepStats && scanStatus.currentScanStepStats->currentStep == ScanProgressStep::ScanningFiles) count = scanStatus.currentScanStepStats->processedElems; statusResponse.setAttribute("count", count); } return statusResponse; } Response handleGetScanStatus(RequestContext& context) { Response response {Response::createOkResponse(context)}; response.addNode("scanStatus", createStatusResponseNode()); return response; } Response handleStartScan(RequestContext& context) { Service::get()->requestImmediateScan(false); Response response {Response::createOkResponse(context)}; response.addNode("scanStatus", createStatusResponseNode()); return response; } }