From a5811a35a91f955918edf249650b67fd7d8e3dad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Van=20Canneyt?= Date: Thu, 6 Jan 2022 10:05:24 +0100 Subject: [PATCH] * Add options to request --- packages/fcl-js/examples/convcgi.lpr | 39 ++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/packages/fcl-js/examples/convcgi.lpr b/packages/fcl-js/examples/convcgi.lpr index 1dac3bcba6..6dded8cb78 100644 --- a/packages/fcl-js/examples/convcgi.lpr +++ b/packages/fcl-js/examples/convcgi.lpr @@ -18,7 +18,7 @@ program convcgi; { $DEFINE USEHTTPAPP} uses - sysutils, classes, cgutils, + typinfo, sysutils, classes, cgutils, tstopas, {$IFDEF USEHTTPAPP} fphttpapp{$ELSE} fpcgi {$ENDIF}, httpdefs, httproute; @@ -98,25 +98,54 @@ begin 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); Var S : TSettings; - aPas : TStrings; - aFileName : string; + aPas,aLog : TStrings; + aFileName,aUnitName,aOutput : string; + Opts : TConversionOptions; begin S:=GetSettings; + aLog:=Nil; aPas:=TStringList.Create; try + Opts:=GetRequestOptions(aRequest); aFileName:=aRequest.QueryFields.Values['file']; - cgUtils.ConvertFile(S.BaseDir,aFileName,'',[],aPas,Nil); - aResponse.Content:=aPas.text; + aUnitName:=aRequest.QueryFields.Values['unit']; + 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.ContentType:='text/x-pascal'; aResponse.SendResponse; Finally aPas.Free; + aLog.Free; end; end;