add source code that does not have location annotations.
[IRC.git] / Robust / src / Interface / HTTPServices.java
1 package Interface;
2 import java.net.*;
3 import java.io.*;
4 import java.util.*;
5
6 public class HTTPServices {
7
8   static private String webRoot = ".";
9
10   static private FileInputStream get_reader(String fileName,HTTPResponse resp) throws IOException {
11 //          if(fileName.equals("/daytime")){
12 //              String date_str = (new Date()).toString();
13 //              resp.sentBytes = date_str.length();
14 //              return
15 //                  new StringReader(date_str);
16 //          }
17
18     if(fileName.equals("/viewlog"))
19       fileName = LogFile.log_file_name;
20     else
21       fileName = webRoot + fileName;
22
23     File f = new File(fileName);
24     resp.sentBytes = f.length();
25     return new FileInputStream(f);
26   }
27
28   public static void GET_handler(String fileName, OutputStream out, HTTPResponse resp) {
29
30     FileInputStream reader  = null;
31     byte buffer[];
32     int size;
33
34     if((reader = HEAD_handler_int(fileName,out,resp)) == null) return;
35
36     buffer = new byte[1024];
37
38     try {
39       while((size = reader.read(buffer,0,buffer.length)) != -1)
40         out.write(buffer,0,size);
41       reader.close();
42     } catch(IOException e) {
43       e.printStackTrace();
44       resp.returnCode = 501;       // error during transmision
45     }
46
47   }
48
49   public static void POST_handler(String fileName, OutputStream out, HTTPResponse resp) {
50     GET_handler(fileName,out, resp);
51   }
52
53   static private FileInputStream HEAD_handler_int(String fileName,
54                                                   OutputStream out,HTTPResponse resp) {
55     FileInputStream reader = null;
56
57     try {
58       reader = get_reader(fileName, resp);
59       resp.returnCode = 200;
60     } catch(IOException e) {
61       resp.returnCode = 404;       // file not found
62     }
63
64     if(resp.returnCode == 200)
65       HTTPHeader.send_header(out, resp.returnCode, fileName, resp.sentBytes);
66     else {
67       HTTPHeader.send_header(out, resp.returnCode, fileName, 0);
68       return null;
69     }
70
71     return reader;
72   }
73
74
75   public static void HEAD_handler(String fileName,
76                                   OutputStream out, HTTPResponse resp) {
77     HEAD_handler_int(fileName,out,resp);
78   }
79 }
80