Michaël Van Canneyt 3 лет назад
Родитель
Сommit
a5811a35a9
1 измененных файлов с 34 добавлено и 5 удалено
  1. 34 5
      packages/fcl-js/examples/convcgi.lpr

+ 34 - 5
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;