aboutsummaryrefslogtreecommitdiff
path: root/src/main/model/http/Http.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/model/http/Http.java')
-rw-r--r--src/main/model/http/Http.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/main/model/http/Http.java b/src/main/model/http/Http.java
new file mode 100644
index 0000000..9558c79
--- /dev/null
+++ b/src/main/model/http/Http.java
@@ -0,0 +1,45 @@
+package model.http;
+
+import model.util.Uri;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.Socket;
+
+// no static classes?? o_o
+// add support for http 0.9 and also http 1.1 as 0.9
+public class Http {
+ private static final String CRLF = "\r\n";
+
+ public static HttpResponse fetch(HttpRequest request, int port) throws IOException, HttpResponse.InvalidResponseException {
+ try (Socket socket = new Socket(request.host(), port);
+ PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
+ BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));) {
+ out.println(request.raw());
+ String bufferOne = "";
+ String bufferTwo = "";
+ String response = "";
+ while (!bufferOne.equals(CRLF) && !bufferTwo.equals(CRLF)) {
+ bufferTwo = bufferOne;
+ bufferOne = in.readLine() + CRLF;
+ response += bufferOne;
+ }
+ return HttpResponse.parse(response);
+ } catch (HttpRequest.MalformedRequestException e) {
+ System.out.println("Failed to make request: " + e.getMessage());
+ return new HttpResponse(600, "Malformed Request");
+ }
+ }
+
+ public static HttpResponse get(Uri location) {
+ // todo
+ return null;
+ }
+
+ public static HttpResponse post(Uri location) {
+ // todo
+ return null;
+ }
+}