Added proxy support
This commit is contained in:
parent
b1e455022b
commit
76cd385462
|
@ -106,6 +106,13 @@ Once the first none-empty line is unrecognized (no command found), the parser wi
|
|||
`Compress[ed]`
|
||||
: Adds support for gzip,deflate compression to the connection.
|
||||
|
||||
`Proxy <server> <port>`
|
||||
: Enables HTTP proxy support.
|
||||
|
||||
`ProxyAuth <username> <password>`
|
||||
: Sets authentication for the HTTP proxy.
|
||||
Same syntax as `BasicAuth`.
|
||||
|
||||
`Call <URL>`
|
||||
: This prepares the actual call by providing the URL to be called.
|
||||
Variables in the form of `@<variablename>` are replaced accordingly.
|
||||
|
|
|
@ -69,6 +69,8 @@ type
|
|||
procedure CmdBasicAuth(AData: String);
|
||||
procedure CmdHighlight(AData: String);
|
||||
procedure CmdFormField(AData: String);
|
||||
procedure CmdProxy(AData: String);
|
||||
procedure CmdProxyAuth(AData: String);
|
||||
procedure ProcessCall(AURL: String);
|
||||
//Helper
|
||||
procedure WriteHelp;
|
||||
|
@ -236,6 +238,16 @@ begin
|
|||
Result := True;
|
||||
FHttp.Compressor := TIdCompressorZLib.Create(FHttp);
|
||||
end else
|
||||
if AnsiStartsStr('Proxy ', ALine) then
|
||||
begin
|
||||
Result := True;
|
||||
CmdProxy(Copy(ALine, 7, Length(ALine)));
|
||||
end else
|
||||
if AnsiStartsStr('ProxyAuth', ALine) then
|
||||
begin
|
||||
Result := True;
|
||||
CmdProxy(Copy(ALine, 10, Length(ALine)));
|
||||
end else
|
||||
if AnsiStartsStr('Call ', ALine) then
|
||||
begin
|
||||
Result := True;
|
||||
|
@ -292,10 +304,6 @@ begin
|
|||
varName := Trim(Copy(AHeader, 1, i - 1));
|
||||
varValue := Trim(Copy(AHeader, i + 1, Length(AHeader)));
|
||||
|
||||
//Special handling is required for Indy
|
||||
{if SameText(varName, 'Accept-Encoding') then
|
||||
FHttp.Request.AcceptEncoding := varValue
|
||||
else}
|
||||
FRequest.RawHeaders.AddValue(varName, varValue);
|
||||
end;
|
||||
|
||||
|
@ -334,6 +342,32 @@ begin
|
|||
FFormFields.AddFormField(Copy(AData, 1, i - 1), Copy(AData, i + 1, Length(AData)));
|
||||
end;
|
||||
|
||||
procedure TRestemplateApplication.CmdProxy(AData: String);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
i := 1;
|
||||
while (i < Length(AData)) and (AData[i] <> ' ') do
|
||||
Inc(i);
|
||||
|
||||
FHttp.ProxyParams.ProxyServer := Copy(AData, 1, i - 1);
|
||||
FHttp.ProxyParams.ProxyPort := StrToInt(Copy(AData, i + 1, Length(AData)));
|
||||
end;
|
||||
|
||||
procedure TRestemplateApplication.CmdProxyAuth(AData: String);
|
||||
var
|
||||
separator: Char;
|
||||
i: Integer;
|
||||
begin
|
||||
separator := AData[1];
|
||||
i := 2;
|
||||
while (i < Length(AData)) and (AData[i] <> separator) do
|
||||
Inc(i);
|
||||
|
||||
FHttp.ProxyParams.ProxyUsername := Copy(AData, 2, i - 2);
|
||||
FHttp.ProxyParams.ProxyPassword := Copy(AData, i + 1, Length(AData));
|
||||
end;
|
||||
|
||||
procedure TRestemplateApplication.ProcessCall(AURL: String);
|
||||
var
|
||||
s: String;
|
||||
|
|
Loading…
Reference in New Issue