فهرست منبع

* Enable CORS

git-svn-id: trunk@44305 -
michael 5 سال پیش
والد
کامیت
482b5a87a3

+ 17 - 27
packages/fcl-web/examples/jsonrpc/demo1/demo.lpi

@@ -1,15 +1,15 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <CONFIG>
   <ProjectOptions>
-    <Version Value="9"/>
+    <Version Value="12"/>
     <General>
       <Flags>
         <SaveOnlyProjectUnits Value="True"/>
         <MainUnitHasCreateFormStatements Value="False"/>
         <Runnable Value="False"/>
+        <CompatibilityMode Value="True"/>
       </Flags>
       <SessionStorage Value="InProjectDir"/>
-      <MainUnit Value="0"/>
       <Title Value="FPC JSON-RPC demo "/>
       <ResourceType Value="res"/>
       <UseXPManifest Value="True"/>
@@ -17,51 +17,47 @@
     <VersionInfo>
       <Language Value=""/>
       <CharSet Value=""/>
-      <StringTable ProductVersion=""/>
     </VersionInfo>
     <BuildModes Count="1">
       <Item1 Name="default" Default="True"/>
     </BuildModes>
     <PublishOptions>
       <Version Value="2"/>
-      <IgnoreBinaries Value="False"/>
-      <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
-      <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
     </PublishOptions>
     <RunParams>
       <local>
-        <FormatVersion Value="1"/>
-        <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+        <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T &apos;Lazarus Run Output&apos; -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
       </local>
+      <FormatVersion Value="2"/>
+      <Modes Count="1">
+        <Mode0 Name="default">
+          <local>
+            <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T &apos;Lazarus Run Output&apos; -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+          </local>
+        </Mode0>
+      </Modes>
     </RunParams>
-    <RequiredPackages Count="3">
+    <RequiredPackages Count="1">
       <Item1>
-        <PackageName Value="WebLaz"/>
-      </Item1>
-      <Item2>
-        <PackageName Value="LCL"/>
-      </Item2>
-      <Item3>
         <PackageName Value="FCL"/>
-      </Item3>
+      </Item1>
     </RequiredPackages>
     <Units Count="2">
       <Unit0>
         <Filename Value="demo.lpr"/>
         <IsPartOfProject Value="True"/>
-        <UnitName Value="demo"/>
       </Unit0>
       <Unit1>
         <Filename Value="wmdemo.pp"/>
         <IsPartOfProject Value="True"/>
-        <ComponentName Value="FPWebModule1"/>
+        <ComponentName Value="EchoModule"/>
+        <HasResources Value="True"/>
         <ResourceBaseClass Value="DataModule"/>
-        <UnitName Value="wmdemo"/>
       </Unit1>
     </Units>
   </ProjectOptions>
   <CompilerOptions>
-    <Version Value="10"/>
+    <Version Value="11"/>
     <SearchPaths>
       <IncludeFiles Value="$(ProjOutDir)"/>
     </SearchPaths>
@@ -70,12 +66,6 @@
         <UseHeaptrc Value="True"/>
       </Debugging>
     </Linking>
-    <Other>
-      <CompilerMessages>
-        <UseMsgFile Value="True"/>
-      </CompilerMessages>
-      <CompilerPath Value="$(CompPath)"/>
-    </Other>
   </CompilerOptions>
   <Debugging>
     <Exceptions Count="3">

+ 10 - 1
packages/fcl-web/examples/jsonrpc/demo1/wmdemo.lfm

@@ -1,4 +1,4 @@
-object FPWebModule1: TFPWebModule1
+object EchoModule: TEchoModule
   OnCreate = DataModuleCreate
   OldCreateOrder = False
   Actions = <  
@@ -6,41 +6,50 @@ object FPWebModule1: TFPWebModule1
       Name = 'Manual'
       Default = True
       OnRequest = TFPWebActions0Request
+      Template.AllowTagParams = False
     end  
     item
       Name = 'Dispatch'
       Default = False
       OnRequest = TFPWebActions1Request
+      Template.AllowTagParams = False
     end  
     item
       Name = 'Registered'
       Default = False
       OnRequest = TFPWebActions2Request
+      Template.AllowTagParams = False
     end  
     item
       Name = 'ExtDirect'
       Default = False
       OnRequest = TFPWebActions3Request
+      Template.AllowTagParams = False
     end  
     item
       Name = 'Content'
       Default = False
       OnRequest = TFPWebActions4Request
+      Template.AllowTagParams = False
     end  
     item
       Name = 'ExtDirectAPI'
       Default = False
       OnRequest = TFPWebActions5Request
+      Template.AllowTagParams = False
     end  
     item
       Name = 'Module'
       Default = False
       OnRequest = TFPWebActions6Request
+      Template.AllowTagParams = False
     end>
   ActionVar = 'Action'
   CreateSession = False
+  Kind = wkOneShot
   Height = 260
   HorizontalOffset = 578
   VerticalOffset = 373
   Width = 442
+  PPI = 96
 end

+ 24 - 19
packages/fcl-web/examples/jsonrpc/demo1/wmdemo.pp

@@ -5,13 +5,14 @@ unit wmdemo;
 interface
 
 uses
-  Classes, SysUtils, HTTPDefs, websession, fpHTTP, fpWeb; 
+  Classes, SysUtils, HTTPDefs, fpHTTP, fpWeb, jsonreader;
 
 type
 
-  { TFPWebModule1 }
+  { TEchoModule }
 
-  TFPWebModule1 = class(TFPWebModule)
+  TEchoModule = class(TFPWebModule)
+    procedure DataModuleCreate(Sender: TObject);
     procedure TFPWebActions0Request(Sender: TObject; ARequest: TRequest;
       AResponse: TResponse; var Handled: Boolean);
     procedure TFPWebActions1Request(Sender: TObject; ARequest: TRequest;
@@ -33,17 +34,22 @@ type
   end; 
 
 var
-  FPWebModule1: TFPWebModule1; 
+  EchoModule: TEchoModule;
 
 implementation
 
 {$R *.lfm}
 
-Uses fpjson,jsonparser,fpjsonrpc,webjsonrpc, fpextdirect;
+Uses fpjson,jsonparser,fpjsonrpc,webjsonrpc, jsonscanner, fpextdirect;
 
-{ TFPWebModule1 }
+{ TEchoModule }
 
-procedure TFPWebModule1.TFPWebActions0Request(Sender: TObject;
+procedure TEchoModule.DataModuleCreate(Sender: TObject);
+begin
+  Cors.Enabled:=True;
+end;
+
+procedure TEchoModule.TFPWebActions0Request(Sender: TObject;
   ARequest: TRequest; AResponse: TResponse; var Handled: Boolean);
 {
   Demo 1. Manually do everything.
@@ -64,7 +70,7 @@ begin
   Err:=Nil;
   ID:=Nil;
   try
-    P:=TJSONParser.Create(ARequest.Content);
+    P:=TJSONParser.Create(ARequest.Content,[joUTF8]);
     try
       Req:=P.Parse;
       try
@@ -117,7 +123,7 @@ begin
   Handled:=True;
 end;
 
-procedure TFPWebModule1.TFPWebActions1Request(Sender: TObject;
+procedure TEchoModule.TFPWebActions1Request(Sender: TObject;
   ARequest: TRequest; AResponse: TResponse; var Handled: Boolean);
 
 {
@@ -142,7 +148,7 @@ begin
       O:=Disp.Options;
       Include(O,jdoRequireClass);
       Disp.Options:=O;
-      P:= TJSONParser.Create(ARequest.Content);
+      P:= TJSONParser.Create(ARequest.Content,[joUTF8]);
       try
         Req:=P.Parse;
         try
@@ -173,7 +179,7 @@ begin
 
 end;
 
-procedure TFPWebModule1.TFPWebActions2Request(Sender: TObject;
+procedure TEchoModule.TFPWebActions2Request(Sender: TObject;
   ARequest: TRequest; AResponse: TResponse; var Handled: Boolean);
 {
   Demo 3. Use a dispatcher to dispatch the requests.
@@ -195,7 +201,7 @@ begin
       O:=Disp.Options;
       Include(O,jdoSearchRegistry);
       Disp.Options:=O;
-      P:= TJSONParser.Create(ARequest.Content);
+      P:= TJSONParser.Create(ARequest.Content,[joUTF8]);
       try
         Req:=P.Parse;
         try
@@ -225,7 +231,7 @@ begin
   end;
 end;
 
-procedure TFPWebModule1.TFPWebActions3Request(Sender: TObject;
+procedure TEchoModule.TFPWebActions3Request(Sender: TObject;
   ARequest: TRequest; AResponse: TResponse; var Handled: Boolean);
 
 {
@@ -248,7 +254,7 @@ begin
       O:=Disp.Options;
       Include(O,jdoSearchRegistry);
       Disp.Options:=O;
-      P:= TJSONParser.Create(ARequest.Content);
+      P:= TJSONParser.Create(ARequest.Content,[joUTF8]);
       try
         Req:=P.Parse;
         try
@@ -279,7 +285,7 @@ begin
   end;
 end;
 
-procedure TFPWebModule1.TFPWebActions4Request(Sender: TObject;
+procedure TEchoModule.TFPWebActions4Request(Sender: TObject;
   ARequest: TRequest; AResponse: TResponse; var Handled: Boolean);
 
 {
@@ -317,7 +323,7 @@ begin
   end;
 end;
 
-procedure TFPWebModule1.TFPWebActions5Request(Sender: TObject;
+procedure TEchoModule.TFPWebActions5Request(Sender: TObject;
   ARequest: TRequest; AResponse: TResponse; var Handled: Boolean);
 {
   Demo 6. Creating an API response for Ext.Direct
@@ -327,7 +333,6 @@ procedure TFPWebModule1.TFPWebActions5Request(Sender: TObject;
 
 Var
   D : TExtDirectDispatcher;
-  I : Integer;
 
 begin
   JSONRpcHandlerManager.RegisterHandler('test','echo',TJSONRPCEcho);
@@ -346,7 +351,7 @@ begin
   end;
 end;
 
-procedure TFPWebModule1.TFPWebActions6Request(Sender: TObject;
+procedure TEchoModule.TFPWebActions6Request(Sender: TObject;
   ARequest: TRequest; AResponse: TResponse; var Handled: Boolean);
 {
   Demo 6. Using a TJSONRPCModule instance to handle the request.
@@ -373,6 +378,6 @@ begin
 end;
 
 initialization
-  RegisterHTTPModule('echo', TFPWebModule1);
+  RegisterHTTPModule('echo', TEchoModule);
 end.
 

+ 1 - 0
packages/fcl-web/examples/jsonrpc/extdirect/extdemo.lpi

@@ -63,6 +63,7 @@
     </Target>
     <SearchPaths>
       <IncludeFiles Value="$(ProjOutDir)"/>
+      <OtherUnitFiles Value="../../../src/jsonrpc"/>
     </SearchPaths>
   </CompilerOptions>
   <Debugging>

+ 4 - 0
packages/fcl-web/examples/jsonrpc/extdirect/wmext.lfm

@@ -1,11 +1,15 @@
 object DemoClass: TDemoClass
+  OnCreate = DataModuleCreate
   OldCreateOrder = False
+  DispatchOptions = [jdoSearchRegistry, jdoSearchOwner, jdoJSONRPC1, jdoJSONRPC2, jdoNotifications]
   APIPath = 'API'
   RouterPath = 'Router'
+  CreateSession = False
   Height = 313
   HorizontalOffset = 548
   VerticalOffset = 230
   Width = 359
+  PPI = 96
   object Add: TJSONRPCHandler
     OnExecute = AddExecute
     Options = []

+ 10 - 5
packages/fcl-web/examples/jsonrpc/extdirect/wmext.pp

@@ -14,13 +14,11 @@ type
 
   TDemoClass = class(TExtDirectModule)
     Add: TJSONRPCHandler;
-    procedure AddExecute(Sender: TObject; const Params: TJSONData; out
-      Res: TJSONData);
+    procedure AddExecute(Sender: TObject; const Params: TJSONData; out   Res: TJSONData);
+    procedure DataModuleCreate(Sender: TObject);
   private
     { private declarations }
-  public
-    { public declarations }
-  end; 
+  end;
 
 var
   DemoClass: TDemoClass;
@@ -31,6 +29,7 @@ implementation
 
 { TDemoClass }
 
+
 procedure TDemoClass.AddExecute(Sender: TObject;
   const Params: TJSONData; out Res: TJSONData);
 
@@ -46,6 +45,12 @@ begin
     end;
 end;
 
+procedure TDemoClass.DataModuleCreate(Sender: TObject);
+begin
+  Kind:=wkOneShot;
+  Cors.Enabled:=True;
+end;
+
 initialization
   RegisterHTTPModule('demo', TDemoClass);
 end.