I was too hopefull, http did not fully work

This commit is contained in:
Ruben Shekspir 2019-05-04 19:51:07 +04:00
parent ea7a66f84d
commit 9273e64fc6
2 changed files with 22 additions and 6 deletions

View file

@ -37,7 +37,7 @@ BEGIN
l := LEN(buf)-1;
f := 0;
r := Platform.Read(fd, p, l, f);
IF r > 0 THEN RETURN TRUE ELSE RETURN FALSE END
IF r >= 0 THEN RETURN TRUE ELSE RETURN FALSE END
END Read;
PROCEDURE Connect*(host, port: ARRAY OF CHAR; VAR conn: Socket): BOOLEAN;

View file

@ -1,5 +1,5 @@
MODULE http;
IMPORT Strings, Internet, Logger;
IMPORT Strings, Internet, Logger, Out;
CONST
MAXARRAYNUMBER = 10000;
MAXARRAYNUMBEREXTENDED = 1000000;
@ -35,11 +35,25 @@ BEGIN
AppendEOLAndClean(header, buff);
END addHeader;
PROCEDURE getHeader(buff, key: ARRAY OF CHAR; VAR val: ARRAY OF CHAR);
VAR
positionStart, valPositionStart, i: LONGINT;
BEGIN
positionStart := Strings.Pos(key, buff, 0);
valPositionStart := positionStart + Strings.Length(key);
i := 0;
REPEAT
val[i] := buff[valPositionStart + i];
INC(i);
UNTIL val[i]; (* TODO: check value char number *)
END getHeader;
PROCEDURE get(host, path, port: ARRAY OF CHAR; VAR buff: ARRAY OF CHAR);
VAR
socket : Internet.Socket;
connectionFlag: BOOLEAN;
send: ARRAY MAXARRAYNUMBER OF CHAR;
valueContentLength: REAL;
send, valueContentLengthString: ARRAY MAXARRAYNUMBER OF CHAR;
sendClean: PSTRING;
httpTail: ARRAY 16 OF CHAR;
endOfLine: ARRAY 3 OF CHAR;
@ -69,14 +83,16 @@ BEGIN
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);
UNTIL ~connectionFlag;
getHeader(buff, "Content-Length", valueContentLengthString);
Strings.StrToReal(valueContentLengthString, valueContentLength);
Out.Real(valueContentLength, 20);
Out.Ln;
UNTIL ~connectionFlag OR (Strings.Length(buff) > valueContentLength);
Internet.Disconnect(socket);
END get;