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 // }