/*
|
Mediazentrale - Personal Media Center
|
Copyright (C) 2021 Ulrich Hilger
|
|
This program is free software: you can redistribute it and/or modify
|
it under the terms of the GNU Affero General Public License as
|
published by the Free Software Foundation, either version 3 of the
|
License, or (at your option) any later version.
|
|
This program 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 Affero General Public License for more details.
|
|
You should have received a copy of the GNU Affero General Public License
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
*/
|
package de.uhilger.mediaz.api;
|
|
import com.sun.net.httpserver.HttpExchange;
|
import de.uhilger.mediaz.App;
|
import de.uhilger.mediaz.Server;
|
import de.uhilger.mediaz.store.StorageFile;
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.OutputStream;
|
import java.util.ArrayList;
|
import java.util.logging.Logger;
|
|
/**
|
*
|
* @author ulrich
|
*/
|
public class ListFileHandler extends FileHandler {
|
|
/* Der Logger fuer diesen ListFileHandler */
|
private static final Logger logger = Logger.getLogger(ListFileHandler.class.getName());
|
|
public ListFileHandler(String absoluteDirectoryPathAndName) {
|
super(absoluteDirectoryPathAndName);
|
}
|
|
@Override
|
public void handle(HttpExchange e) throws IOException {
|
String path = e.getRequestURI().toString();
|
logger.fine(path);
|
if(path.endsWith(App.getRs(Server.RB_SLASH))) {
|
String fName = getFileName(e);
|
logger.fine(fName);
|
File dir = new File(fileBase, fName);
|
logger.fine(dir.getAbsolutePath());
|
File[] files = dir.listFiles();
|
ArrayList list = new ArrayList();
|
if(files != null) {
|
for(File file : files) {
|
StorageFile sf = new StorageFile();
|
String fname = file.getName();
|
sf.setName(fname);
|
if(file.isDirectory()) {
|
sf.setTyp(StorageFile.TYP_FOLDER);
|
} else {
|
if(fname.endsWith(".mp3")) {
|
sf.setTyp(StorageFile.TYP_AUDIO);
|
} else if(fname.endsWith(".mp4") || fname.endsWith(".m4v")) {
|
sf.setTyp(StorageFile.TYP_VIDEO);
|
} else {
|
sf.setTyp(StorageFile.TYP_FILE);
|
}
|
}
|
list.add(sf);
|
}
|
}
|
String json = jsonWithCustomType(list, "Medialiste");
|
logger.fine(json);
|
e.sendResponseHeaders(200, json.length());
|
OutputStream os = e.getResponseBody();
|
os.write(json.getBytes());
|
os.close();
|
} else {
|
super.handle(e);
|
}
|
}
|
|
|
}
|