mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-02 11:10:36 +02:00
* Add options to request
This commit is contained in:
parent
d8d7d49568
commit
a5811a35a9
@ -18,7 +18,7 @@ program convcgi;
|
|||||||
{ $DEFINE USEHTTPAPP}
|
{ $DEFINE USEHTTPAPP}
|
||||||
|
|
||||||
uses
|
uses
|
||||||
sysutils, classes, cgutils,
|
typinfo, sysutils, classes, cgutils, tstopas,
|
||||||
{$IFDEF USEHTTPAPP} fphttpapp{$ELSE} fpcgi {$ENDIF},
|
{$IFDEF USEHTTPAPP} fphttpapp{$ELSE} fpcgi {$ENDIF},
|
||||||
httpdefs, httproute;
|
httpdefs, httproute;
|
||||||
|
|
||||||
@ -98,25 +98,54 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function GetRequestOptions(ARequest: TRequest) : TConversionOptions;
|
||||||
|
|
||||||
|
Var
|
||||||
|
T : TConversionOption;
|
||||||
|
S,N : String;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result:=[];
|
||||||
|
For T in TConversionOption do
|
||||||
|
begin
|
||||||
|
N:=GetEnumName(TypeInfo(TConversionOption),Ord(T));
|
||||||
|
S:=aRequest.QueryFields.Values[N];
|
||||||
|
if (S='1') or (S='true') then
|
||||||
|
Include(Result,T);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure DoConvertFile(ARequest: TRequest; AResponse: TResponse);
|
procedure DoConvertFile(ARequest: TRequest; AResponse: TResponse);
|
||||||
|
|
||||||
Var
|
Var
|
||||||
S : TSettings;
|
S : TSettings;
|
||||||
aPas : TStrings;
|
aPas,aLog : TStrings;
|
||||||
aFileName : string;
|
aFileName,aUnitName,aOutput : string;
|
||||||
|
Opts : TConversionOptions;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
S:=GetSettings;
|
S:=GetSettings;
|
||||||
|
aLog:=Nil;
|
||||||
aPas:=TStringList.Create;
|
aPas:=TStringList.Create;
|
||||||
try
|
try
|
||||||
|
Opts:=GetRequestOptions(aRequest);
|
||||||
aFileName:=aRequest.QueryFields.Values['file'];
|
aFileName:=aRequest.QueryFields.Values['file'];
|
||||||
cgUtils.ConvertFile(S.BaseDir,aFileName,'',[],aPas,Nil);
|
aUnitName:=aRequest.QueryFields.Values['unit'];
|
||||||
aResponse.Content:=aPas.text;
|
if aRequest.QueryFields.Values['prependlog']='1' then
|
||||||
|
aLog:=TStringList.Create;
|
||||||
|
cgUtils.ConvertFile(S.BaseDir,aFileName,aUnitName,Opts,aPas,aLog);
|
||||||
|
if Assigned(aLog) then
|
||||||
|
aOutput:='(* // Conversion log:'+sLineBreak+aLog.Text+sLineBreak+'*)'+sLineBreak
|
||||||
|
else
|
||||||
|
aOutput:='';
|
||||||
|
aOutput:=aOutput+aPas.text;
|
||||||
|
aResponse.Content:=aOutput;
|
||||||
aResponse.ContentLength:=Length(aResponse.Content);
|
aResponse.ContentLength:=Length(aResponse.Content);
|
||||||
aResponse.ContentType:='text/x-pascal';
|
aResponse.ContentType:='text/x-pascal';
|
||||||
aResponse.SendResponse;
|
aResponse.SendResponse;
|
||||||
Finally
|
Finally
|
||||||
aPas.Free;
|
aPas.Free;
|
||||||
|
aLog.Free;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user