diff options
Diffstat (limited to 'src/main/model/http/Http.java')
-rw-r--r-- | src/main/model/http/Http.java | 45 |
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; + } +} |