1 module hunt.http.codec.http.model.MultiPartOutputStream; 2 3 // import java.io.FilterOutputStream; 4 // import hunt.Exceptions; 5 // import java.io.OutputStream; 6 // import java.nio.charset.StandardCharsets; 7 8 // class MultiPartOutputStream :FilterOutputStream { 9 10 // private static byte[] __CRLF = { '\r', '\n' }; 11 // private static byte[] __DASHDASH = { '-', '-' }; 12 13 // static string MULTIPART_MIXED = "multipart/mixed"; 14 // static string MULTIPART_X_MIXED_REPLACE = "multipart/x-mixed-replace"; 15 16 // private string boundary; 17 // private byte[] boundaryBytes; 18 19 // private bool inPart = false; 20 21 // MultiPartOutputStream(OutputStream out) throws IOException { 22 // super(out); 23 24 // boundary = "hunt" + System.identityHashCode(this) + to!long(System.currentTimeMillis(), 36); 25 // boundaryBytes = boundary.getBytes(StandardCharsets.ISO_8859_1); 26 // } 27 28 // MultiPartOutputStream(OutputStream out, string boundary) throws IOException { 29 // super(out); 30 31 // this.boundary = boundary; 32 // boundaryBytes = boundary.getBytes(StandardCharsets.ISO_8859_1); 33 // } 34 35 // /** 36 // * End the current part. 37 // * 38 // * @exception IOException 39 // * IOException 40 // */ 41 // override 42 // void close() throws IOException { 43 // try { 44 // if (inPart) 45 // out.write(__CRLF); 46 // out.write(__DASHDASH); 47 // out.write(boundaryBytes); 48 // out.write(__DASHDASH); 49 // out.write(__CRLF); 50 // inPart = false; 51 // } finally { 52 // super.close(); 53 // } 54 // } 55 56 // string getBoundary() { 57 // return boundary; 58 // } 59 60 // OutputStream getOut() { 61 // return out; 62 // } 63 64 // /** 65 // * Start creation of the next Content. 66 // * 67 // * @param contentType 68 // * the content type of the part 69 // * @throws IOException 70 // * if unable to write the part 71 // */ 72 // void startPart(string contentType) throws IOException { 73 // if (inPart) 74 // out.write(__CRLF); 75 // inPart = true; 76 // out.write(__DASHDASH); 77 // out.write(boundaryBytes); 78 // out.write(__CRLF); 79 // if (contentType != null) 80 // out.write(("Content-Type: " + contentType).getBytes(StandardCharsets.ISO_8859_1)); 81 // out.write(__CRLF); 82 // out.write(__CRLF); 83 // } 84 85 // /** 86 // * Start creation of the next Content. 87 // * 88 // * @param contentType 89 // * the content type of the part 90 // * @param headers 91 // * the part headers 92 // * @throws IOException 93 // * if unable to write the part 94 // */ 95 // void startPart(string contentType, string[] headers) throws IOException { 96 // if (inPart) 97 // out.write(__CRLF); 98 // inPart = true; 99 // out.write(__DASHDASH); 100 // out.write(boundaryBytes); 101 // out.write(__CRLF); 102 // if (contentType != null) 103 // out.write(("Content-Type: " + contentType).getBytes(StandardCharsets.ISO_8859_1)); 104 // out.write(__CRLF); 105 // for (int i = 0; headers != null && i < headers.length; i++) { 106 // out.write(headers[i].getBytes(StandardCharsets.ISO_8859_1)); 107 // out.write(__CRLF); 108 // } 109 // out.write(__CRLF); 110 // } 111 112 // override 113 // void write(byte[] b, int off, int len) throws IOException { 114 // out.write(b, off, len); 115 // } 116 // }