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]`
|
`Compress[ed]`
|
||||||
: Adds support for gzip,deflate compression to the connection.
|
: 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>`
|
`Call <URL>`
|
||||||
: This prepares the actual call by providing the URL to be called.
|
: This prepares the actual call by providing the URL to be called.
|
||||||
Variables in the form of `@<variablename>` are replaced accordingly.
|
Variables in the form of `@<variablename>` are replaced accordingly.
|
||||||
|
|
|
@ -69,6 +69,8 @@ type
|
||||||
procedure CmdBasicAuth(AData: String);
|
procedure CmdBasicAuth(AData: String);
|
||||||
procedure CmdHighlight(AData: String);
|
procedure CmdHighlight(AData: String);
|
||||||
procedure CmdFormField(AData: String);
|
procedure CmdFormField(AData: String);
|
||||||
|
procedure CmdProxy(AData: String);
|
||||||
|
procedure CmdProxyAuth(AData: String);
|
||||||
procedure ProcessCall(AURL: String);
|
procedure ProcessCall(AURL: String);
|
||||||
//Helper
|
//Helper
|
||||||
procedure WriteHelp;
|
procedure WriteHelp;
|
||||||
|
@ -236,6 +238,16 @@ begin
|
||||||
Result := True;
|
Result := True;
|
||||||
FHttp.Compressor := TIdCompressorZLib.Create(FHttp);
|
FHttp.Compressor := TIdCompressorZLib.Create(FHttp);
|
||||||
end else
|
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
|
if AnsiStartsStr('Call ', ALine) then
|
||||||
begin
|
begin
|
||||||
Result := True;
|
Result := True;
|
||||||
|
@ -292,11 +304,7 @@ begin
|
||||||
varName := Trim(Copy(AHeader, 1, i - 1));
|
varName := Trim(Copy(AHeader, 1, i - 1));
|
||||||
varValue := Trim(Copy(AHeader, i + 1, Length(AHeader)));
|
varValue := Trim(Copy(AHeader, i + 1, Length(AHeader)));
|
||||||
|
|
||||||
//Special handling is required for Indy
|
FRequest.RawHeaders.AddValue(varName, varValue);
|
||||||
{if SameText(varName, 'Accept-Encoding') then
|
|
||||||
FHttp.Request.AcceptEncoding := varValue
|
|
||||||
else}
|
|
||||||
FRequest.RawHeaders.AddValue(varName, varValue);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TRestemplateApplication.CmdBasicAuth(AData: String);
|
procedure TRestemplateApplication.CmdBasicAuth(AData: String);
|
||||||
|
@ -334,6 +342,32 @@ begin
|
||||||
FFormFields.AddFormField(Copy(AData, 1, i - 1), Copy(AData, i + 1, Length(AData)));
|
FFormFields.AddFormField(Copy(AData, 1, i - 1), Copy(AData, i + 1, Length(AData)));
|
||||||
end;
|
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);
|
procedure TRestemplateApplication.ProcessCall(AURL: String);
|
||||||
var
|
var
|
||||||
s: String;
|
s: String;
|
||||||
|
|
Loading…
Reference in New Issue