Persoenliche Mediazentrale
ulrich
2021-04-07 7c22a2a2f3568841b0830e4339bdb6f8ec69262f
commit | author | age
86bbf7 1 /*
U 2  * To change this license header, choose License Headers in Project Properties.
3  * To change this template file, choose Tools | Templates
4  * and open the template in the editor.
5  */
6 package de.uhilger.mediaz.api;
7
8 import com.sun.net.httpserver.HttpExchange;
9 import de.uhilger.mediaz.App;
10 import de.uhilger.mediaz.Server;
11 import de.uhilger.mediaz.store.StorageFile;
12 import java.io.File;
13 import java.io.IOException;
14 import java.io.OutputStream;
15 import java.util.ArrayList;
16 import java.util.logging.Logger;
17
18 /**
19  *
20  * @author ulrich
21  */
22 public class ListFileHandler extends FileHandler {
23   
24   /* Der Logger fuer diesen ListFileHandler */
25   private static final Logger logger = Logger.getLogger(ListFileHandler.class.getName());
26   
27   public ListFileHandler(String absoluteDirectoryPathAndName) {
28     super(absoluteDirectoryPathAndName);
29   }
30
31   @Override
32   public void handle(HttpExchange e) throws IOException {
33     String path = e.getRequestURI().toString();
34     logger.fine(path);
35     if(path.endsWith(App.getRs(Server.RB_SLASH))) {
36       String fName = getFileName(e);
37       logger.fine(fName);
38       File dir = new File(fileBase, fName);
39       logger.fine(dir.getAbsolutePath());
40       File[] files = dir.listFiles();
41       ArrayList list = new ArrayList();
42       if(files != null) {
43         for(File file : files) {
44           StorageFile sf = new StorageFile();
7c22a2 45           String fname = file.getName();
U 46           sf.setName(fname);
86bbf7 47           if(file.isDirectory()) {
822ddf 48             sf.setTyp(StorageFile.TYP_FOLDER);
86bbf7 49           } else {
7c22a2 50             if(fname.endsWith(".mp3")) {
U 51               sf.setTyp(StorageFile.TYP_AUDIO);              
52             } else if(fname.endsWith(".mp4") || fname.endsWith(".m4v")) {
53               sf.setTyp(StorageFile.TYP_VIDEO);                            
54             } else {
55               sf.setTyp(StorageFile.TYP_FILE);
56             }
86bbf7 57           }
U 58           list.add(sf);
59         }
60       }
61       //Gson gson = new Gson();
62       //String json = gson.toJson(fileNames);
63       String json = jsonWithCustomType(list, "Medialiste");
64       logger.fine(json);
65       e.sendResponseHeaders(200, json.length());
66       OutputStream os = e.getResponseBody();
67       os.write(json.getBytes());
68       os.close();        
69     } else {
70       super.handle(e);
71     }
72   }
73   
74   
75 }