diff --git a/http.Mod b/http.Mod index 0fcf715..f1af3bc 100644 --- a/http.Mod +++ b/http.Mod @@ -1,28 +1,74 @@ MODULE http; -IMPORT Internet, Logger; +IMPORT Strings, Internet, Logger; +CONST + + MAXARRAYNUMBER = 10000; + MAXARRAYNUMBEREXTENDED = 1000000; + +TYPE PSTRING = POINTER TO ARRAY OF CHAR; + VAR - buff: ARRAY 1000 OF CHAR; -PROCEDURE get(host, port: ARRAY OF CHAR; VAR buff: ARRAY OF CHAR); + buff: ARRAY MAXARRAYNUMBEREXTENDED OF CHAR; + +PROCEDURE AppendEOLAndClean(buff: ARRAY OF CHAR; VAR buffClean: PSTRING); +VAR i: LONGINT; +BEGIN + i := Strings.Length(buff); + + NEW(buffClean, i + 3); + + COPY(buff, buffClean^); + + buffClean[i] := 0DX; + buffClean[i + 1] := 0AX; + buffClean[i + 2] := " "; +END AppendEOLAndClean; + +PROCEDURE get(host, path, port: ARRAY OF CHAR; VAR buff: ARRAY OF CHAR); VAR socket : Internet.Socket; connectionFlag: BOOLEAN; - send: ARRAY 7 OF CHAR; + send: ARRAY MAXARRAYNUMBER OF CHAR; + sendClean: PSTRING; + httpTail: ARRAY 16 OF CHAR; + endOfLine: ARRAY 3 OF CHAR; + tmpBuff: ARRAY MAXARRAYNUMBER OF CHAR; BEGIN + COPY("", buff); + httpTail := " HTTP/1.1"; + connectionFlag := Internet.Connect(host, port, socket); - send[0] := "G"; - send[1] := "E"; - send[2] := "T"; - send[3] := 0DX; - send[4] := 0AX; - send[5] := " "; - (* Somewhy it's ignoring the last byte *) + + send := "GET "; - connectionFlag := Internet.Write(socket, send); - connectionFlag := Internet.Read(socket, buff); + Strings.Append(path, send); + + AppendEOLAndClean(send, sendClean); + Logger.Log(sendClean^); + connectionFlag := Internet.Write(socket, sendClean^); + send := "HOST: "; + + Strings.Append(host, send); + + AppendEOLAndClean(send, sendClean); + Logger.Log(sendClean^); + connectionFlag := Internet.Write(socket, sendClean^); + + AppendEOLAndClean("", sendClean); + Logger.Log(sendClean^); + connectionFlag := Internet.Write(socket, sendClean^); + + REPEAT + connectionFlag := Internet.Read(socket, tmpBuff); + Strings.Append(tmpBuff, buff); + Logger.Log(tmpBuff); + UNTIL ~connectionFlag; + Internet.Disconnect(socket); END get; BEGIN - get("voto.am", "80", buff); + get("norayr.am", "/seq.txt", "80", buff); Logger.Log(buff); + END http. \ No newline at end of file diff --git a/makefile b/makefile index fd2e23d..6bc76a4 100644 --- a/makefile +++ b/makefile @@ -26,7 +26,6 @@ clean: run: ./builds/opium install -file: - cd builds && \ - $(VOC) -s \ - ../FileManager.Mod -m \ No newline at end of file + +http: + $(VOC) -s time.Mod logger.Mod types.Mod sockets.Mod netdb.Mod Internet.Mod http.Mod -m \ No newline at end of file