mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
I was too hopefull, http did not fully work
This commit is contained in:
parent
ea7a66f84d
commit
9273e64fc6
2 changed files with 22 additions and 6 deletions
|
|
@ -37,7 +37,7 @@ BEGIN
|
||||||
l := LEN(buf)-1;
|
l := LEN(buf)-1;
|
||||||
f := 0;
|
f := 0;
|
||||||
r := Platform.Read(fd, p, l, f);
|
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;
|
END Read;
|
||||||
|
|
||||||
PROCEDURE Connect*(host, port: ARRAY OF CHAR; VAR conn: Socket): BOOLEAN;
|
PROCEDURE Connect*(host, port: ARRAY OF CHAR; VAR conn: Socket): BOOLEAN;
|
||||||
|
|
|
||||||
26
http.Mod
26
http.Mod
|
|
@ -1,5 +1,5 @@
|
||||||
MODULE http;
|
MODULE http;
|
||||||
IMPORT Strings, Internet, Logger;
|
IMPORT Strings, Internet, Logger, Out;
|
||||||
CONST
|
CONST
|
||||||
MAXARRAYNUMBER = 10000;
|
MAXARRAYNUMBER = 10000;
|
||||||
MAXARRAYNUMBEREXTENDED = 1000000;
|
MAXARRAYNUMBEREXTENDED = 1000000;
|
||||||
|
|
@ -35,11 +35,25 @@ BEGIN
|
||||||
AppendEOLAndClean(header, buff);
|
AppendEOLAndClean(header, buff);
|
||||||
END addHeader;
|
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);
|
PROCEDURE get(host, path, port: ARRAY OF CHAR; VAR buff: ARRAY OF CHAR);
|
||||||
VAR
|
VAR
|
||||||
socket : Internet.Socket;
|
socket : Internet.Socket;
|
||||||
connectionFlag: BOOLEAN;
|
connectionFlag: BOOLEAN;
|
||||||
send: ARRAY MAXARRAYNUMBER OF CHAR;
|
valueContentLength: REAL;
|
||||||
|
send, valueContentLengthString: ARRAY MAXARRAYNUMBER OF CHAR;
|
||||||
sendClean: PSTRING;
|
sendClean: PSTRING;
|
||||||
httpTail: ARRAY 16 OF CHAR;
|
httpTail: ARRAY 16 OF CHAR;
|
||||||
endOfLine: ARRAY 3 OF CHAR;
|
endOfLine: ARRAY 3 OF CHAR;
|
||||||
|
|
@ -69,14 +83,16 @@ BEGIN
|
||||||
connectionFlag := Internet.Write(socket, sendClean^);
|
connectionFlag := Internet.Write(socket, sendClean^);
|
||||||
|
|
||||||
AppendEOLAndClean("", sendClean);
|
AppendEOLAndClean("", sendClean);
|
||||||
Logger.Log(sendClean^);
|
|
||||||
connectionFlag := Internet.Write(socket, sendClean^);
|
connectionFlag := Internet.Write(socket, sendClean^);
|
||||||
|
|
||||||
REPEAT
|
REPEAT
|
||||||
connectionFlag := Internet.Read(socket, tmpBuff);
|
connectionFlag := Internet.Read(socket, tmpBuff);
|
||||||
Strings.Append(tmpBuff, buff);
|
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);
|
Internet.Disconnect(socket);
|
||||||
END get;
|
END get;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue