├── samples
├── hello
│ ├── server_EASResource.rc
│ ├── server_EAS.res
│ ├── server_EAS.dres
│ ├── server_EAS.dpr
│ ├── routes
│ ├── server_EAS.skincfg
│ ├── uMyController.pas
│ ├── uMain.pas
│ ├── uMain.dfm
│ └── server_EAS.dproj
├── GET QueryParam
│ ├── GetQueryParamResource.rc
│ ├── GetQueryParam.res
│ ├── GetQueryParam.dres
│ ├── routes
│ ├── GetQueryParam.dpr
│ ├── uMyController.pas
│ ├── uMain.pas
│ ├── GetQueryParam.skincfg
│ ├── uMain.dfm
│ └── GetQueryParam.dproj
├── SimpleStaticHTML
│ ├── SimpleStaticHTML_EASResource.rc
│ ├── SimpleStaticHTML_EAS.dres
│ ├── SimpleStaticHTML_EAS.res
│ ├── routes
│ ├── SimpleStaticHTML_EAS.dpr
│ ├── uMainController.pas
│ ├── uMain.pas
│ ├── uMain.dfm
│ └── SimpleStaticHTML_EAS.dproj
└── ProjectGroup.groupproj
├── src
├── controller.pas
├── HTTPServer.response.page.pas
├── HTTPServer.pas
└── routes.pas
├── .gitignore
├── README.md
└── lib
├── class_.util.pas
└── parameter.pas
/samples/hello/server_EASResource.rc:
--------------------------------------------------------------------------------
1 | routes RCDATA "routes"
2 |
--------------------------------------------------------------------------------
/samples/GET QueryParam/GetQueryParamResource.rc:
--------------------------------------------------------------------------------
1 | routes RCDATA "routes"
2 |
--------------------------------------------------------------------------------
/samples/SimpleStaticHTML/SimpleStaticHTML_EASResource.rc:
--------------------------------------------------------------------------------
1 | routes RCDATA "..\\hello\\routes"
2 |
--------------------------------------------------------------------------------
/src/controller.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gutierrydsn/endpoint-access-service-for-delphi/HEAD/src/controller.pas
--------------------------------------------------------------------------------
/samples/hello/server_EAS.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gutierrydsn/endpoint-access-service-for-delphi/HEAD/samples/hello/server_EAS.res
--------------------------------------------------------------------------------
/samples/hello/server_EAS.dres:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gutierrydsn/endpoint-access-service-for-delphi/HEAD/samples/hello/server_EAS.dres
--------------------------------------------------------------------------------
/samples/GET QueryParam/GetQueryParam.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gutierrydsn/endpoint-access-service-for-delphi/HEAD/samples/GET QueryParam/GetQueryParam.res
--------------------------------------------------------------------------------
/samples/GET QueryParam/GetQueryParam.dres:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gutierrydsn/endpoint-access-service-for-delphi/HEAD/samples/GET QueryParam/GetQueryParam.dres
--------------------------------------------------------------------------------
/samples/SimpleStaticHTML/SimpleStaticHTML_EAS.dres:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gutierrydsn/endpoint-access-service-for-delphi/HEAD/samples/SimpleStaticHTML/SimpleStaticHTML_EAS.dres
--------------------------------------------------------------------------------
/samples/SimpleStaticHTML/SimpleStaticHTML_EAS.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gutierrydsn/endpoint-access-service-for-delphi/HEAD/samples/SimpleStaticHTML/SimpleStaticHTML_EAS.res
--------------------------------------------------------------------------------
/samples/GET QueryParam/routes:
--------------------------------------------------------------------------------
1 | "GET" : {
2 | "/api/hello/" : "uMyController.MyController.hello"
3 | },
4 |
5 |
6 | "POST" : {},
7 |
8 | "DELETE" : {},
9 |
10 | "PUT" : {}
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.dcu
2 | *.exe
3 | *.dll
4 | *.orig
5 | *.bkp
6 | *.bak
7 | *.~*
8 | *.vlb
9 | *.identcache
10 | *.stat
11 | *.local
12 | *.identcache
13 | *.nbLog
14 | .orig
15 | */__recovery/*
16 | */bin/*
17 | */Win32/*
18 | */__history/*
19 |
20 |
--------------------------------------------------------------------------------
/samples/SimpleStaticHTML/routes:
--------------------------------------------------------------------------------
1 | "GET" : {
2 | "/api/version/" : "uMainController.mainController.version",
3 | "/api/ping/" : "uMainController.mainController.ping"
4 |
5 | },
6 | "POST" : {
7 | },
8 |
9 | "DELETE" : {},
10 |
11 | "PUT" : {}
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ABOUT
2 | This library was created to facilitate the development of web services adopting the market standard. Using a mapping file of routes in this way defining the method to be published.
3 |
4 | * [Exemplo de Uso]
5 |
6 | **Free Software, Hell Yeah!**
7 |
8 | [Exemplo de Uso]:
--------------------------------------------------------------------------------
/samples/hello/server_EAS.dpr:
--------------------------------------------------------------------------------
1 | program server_EAS;
2 |
3 | {$R *.dres}
4 |
5 | uses
6 | Vcl.Forms,
7 | uMain in 'uMain.pas' {Form1},
8 | uMyController in 'uMyController.pas';
9 |
10 | {$R *.res}
11 |
12 | begin
13 | Application.Initialize;
14 | Application.MainFormOnTaskbar := True;
15 | Application.CreateForm(TForm1, Form1);
16 | Application.Run;
17 | end.
18 |
--------------------------------------------------------------------------------
/samples/GET QueryParam/GetQueryParam.dpr:
--------------------------------------------------------------------------------
1 | program GetQueryParam;
2 |
3 | {$R *.dres}
4 |
5 | uses
6 | Vcl.Forms,
7 | uMain in 'uMain.pas' {frmMain},
8 | uMyController in 'uMyController.pas';
9 |
10 | {$R *.res}
11 |
12 | begin
13 | Application.Initialize;
14 | Application.MainFormOnTaskbar := True;
15 | Application.CreateForm(TfrmMain, frmMain);
16 | Application.Run;
17 | end.
18 |
--------------------------------------------------------------------------------
/samples/SimpleStaticHTML/SimpleStaticHTML_EAS.dpr:
--------------------------------------------------------------------------------
1 | program SimpleStaticHTML_EAS;
2 |
3 | {$R *.dres}
4 |
5 | uses
6 | Vcl.Forms,
7 | uMain in '..\hello\uMain.pas' {Form1},
8 | uMainController in 'uMainController.pas';
9 |
10 | {$R *.res}
11 | begin
12 | Application.Initialize;
13 | Application.MainFormOnTaskbar := True;
14 | Application.CreateForm(TForm1, Form1);
15 | Application.Run;
16 | end.
17 |
--------------------------------------------------------------------------------
/samples/GET QueryParam/uMyController.pas:
--------------------------------------------------------------------------------
1 | unit uMyController;
2 |
3 | interface
4 | uses System.SysUtils,System.Classes, controller;
5 |
6 | type
7 | MyController = class (TController)
8 | public
9 | function hello : String;
10 | end;
11 |
12 | implementation
13 |
14 | function MyController.hello: String;
15 | begin
16 | result := 'Hello '+ QueryParamByName('nome') +'!';
17 | end;
18 |
19 |
20 | initialization
21 | RegisterClass(MyController);
22 |
23 | finalization
24 | UnRegisterClass(MyController);
25 | end.
26 |
--------------------------------------------------------------------------------
/samples/hello/routes:
--------------------------------------------------------------------------------
1 | "GET" : {
2 | "/api/version" : "uMyController.mainController.version"
3 | "/api/ping" : "uMyController.MyController.ping"
4 |
5 | "/api/hello/:param1" : "uMyController.MyController.helloWithParamInt(param1)"
6 | "/api/hello/:param1/:param2" : "uMyController.MyController.helloWithParam(param1,param2)"
7 |
8 | "/api/hello/:param1/:param2/:param3/:param4" : "uMyController.MyController.helloWithAllParam(param1,param2,param3,param4)"
9 | },
10 |
11 |
12 | "POST" : {},
13 |
14 | "DELETE" : {},
15 |
16 | "PUT" : {}
17 |
--------------------------------------------------------------------------------
/samples/SimpleStaticHTML/uMainController.pas:
--------------------------------------------------------------------------------
1 | unit uMainController;
2 |
3 | interface
4 | uses System.SysUtils,System.Classes, controller;
5 |
6 | type
7 | mainController = class (TController)
8 | public
9 | class var nrVersion : String;
10 |
11 | function version : String;
12 | function ping : String;
13 | end;
14 |
15 | implementation
16 |
17 | function mainController.version: String;
18 | const
19 | response = '{"version" : "%s"}';
20 | begin
21 | result := Format(response, [nrVersion]);
22 | end;
23 |
24 |
25 | function mainController.ping : String;
26 | const
27 | response = '{"response" : "true"}';
28 | begin
29 | result := response;
30 | end;
31 |
32 | initialization
33 | RegisterClass(mainController);
34 |
35 | finalization
36 | UnRegisterClass(mainController);
37 | end.
38 |
--------------------------------------------------------------------------------
/samples/GET QueryParam/uMain.pas:
--------------------------------------------------------------------------------
1 | unit uMain;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, HTTPServer, Vcl.StdCtrls, Vcl.ExtCtrls;
8 |
9 | type
10 | TfrmMain = class(TForm)
11 | pnl_config_porta: TPanel;
12 | edt_porta: TEdit;
13 | value_porta: TEdit;
14 | pnl_bottom: TPanel;
15 | ButtonStart: TButton;
16 | procedure FormCreate(Sender: TObject);
17 | procedure ButtonStartClick(Sender: TObject);
18 | private
19 | { Private declarations }
20 | public
21 | HTTPServer : THTTPServer;
22 | end;
23 |
24 | var
25 | frmMain: TfrmMain;
26 |
27 | implementation
28 |
29 | {$R *.dfm}
30 |
31 | procedure TfrmMain.ButtonStartClick(Sender: TObject);
32 | begin
33 | HTTPServer.DefaultPort := StrToIntDef(value_porta.Text,9090);
34 | HTTPServer.Active := not(HTTPServer.Active);
35 |
36 | if (HTTPServer.Active) then
37 | ButtonStart.Caption := 'Stop'
38 | else
39 | ButtonStart.Caption := 'Start'
40 | end;
41 |
42 | procedure TfrmMain.FormCreate(Sender: TObject);
43 | begin
44 | HTTPServer := THTTPServer.Create(Self);
45 | end;
46 |
47 | end.
48 |
--------------------------------------------------------------------------------
/src/HTTPServer.response.page.pas:
--------------------------------------------------------------------------------
1 | unit HTTPServer.response.page;
2 |
3 | interface
4 |
5 | uses
6 | IdCustomHTTPServer;
7 |
8 | type
9 | HTTPServerResponsePage = class
10 | class function return_404(AResponseInfo: TIdHTTPResponseInfo) : String;
11 | end;
12 |
13 | implementation
14 |
15 | { HTTPServerResponsePage }
16 |
17 | class function HTTPServerResponsePage.return_404(AResponseInfo: TIdHTTPResponseInfo): String;
18 | begin
19 | AResponseInfo.ResponseNo := 404;
20 | result := ' '+
28 | ' '+
29 | '
'+
30 | '
Code status 404
'+
31 | ' '+
32 | ' '+
33 | ' Route does not implement'+
34 | '
'
35 | end;
36 |
37 | end.
38 |
--------------------------------------------------------------------------------
/samples/hello/server_EAS.skincfg:
--------------------------------------------------------------------------------
1 | [ExpressSkins]
2 | Default=0
3 | ShowNotifications=1
4 | Enabled=1
5 | dxSkinBlack=1
6 | dxSkinBlue=1
7 | dxSkinBlueprint=1
8 | dxSkinCaramel=1
9 | dxSkinCoffee=1
10 | dxSkinDarkRoom=1
11 | dxSkinDarkSide=1
12 | dxSkinDevExpressDarkStyle=1
13 | dxSkinDevExpressStyle=1
14 | dxSkinFoggy=1
15 | dxSkinGlassOceans=1
16 | dxSkinHighContrast=1
17 | dxSkiniMaginary=1
18 | dxSkinLilian=1
19 | dxSkinLiquidSky=1
20 | dxSkinLondonLiquidSky=1
21 | dxSkinMcSkin=1
22 | dxSkinMetropolis=1
23 | dxSkinMetropolisDark=1
24 | dxSkinMoneyTwins=1
25 | dxSkinOffice2007Black=1
26 | dxSkinOffice2007Blue=1
27 | dxSkinOffice2007Green=1
28 | dxSkinOffice2007Pink=1
29 | dxSkinOffice2007Silver=1
30 | dxSkinOffice2010Black=1
31 | dxSkinOffice2010Blue=1
32 | dxSkinOffice2010Silver=1
33 | dxSkinOffice2013DarkGray=1
34 | dxSkinOffice2013LightGray=1
35 | dxSkinOffice2013White=1
36 | dxSkinOffice2016Colorful=1
37 | dxSkinOffice2016Dark=1
38 | dxSkinPumpkin=1
39 | dxSkinSeven=1
40 | dxSkinSevenClassic=1
41 | dxSkinSharp=1
42 | dxSkinSharpPlus=1
43 | dxSkinSilver=1
44 | dxSkinSpringTime=1
45 | dxSkinStardust=1
46 | dxSkinSummer2008=1
47 | dxSkinTheAsphaltWorld=1
48 | dxSkinsDefaultPainters=1
49 | dxSkinValentine=1
50 | dxSkinVisualStudio2013Blue=1
51 | dxSkinVisualStudio2013Dark=1
52 | dxSkinVisualStudio2013Light=1
53 | dxSkinVS2010=1
54 | dxSkinWhiteprint=1
55 | dxSkinXmas2008Blue=1
56 |
--------------------------------------------------------------------------------
/samples/GET QueryParam/GetQueryParam.skincfg:
--------------------------------------------------------------------------------
1 | [ExpressSkins]
2 | Default=0
3 | ShowNotifications=1
4 | Enabled=1
5 | dxSkinBlack=1
6 | dxSkinBlue=1
7 | dxSkinBlueprint=1
8 | dxSkinCaramel=1
9 | dxSkinCoffee=1
10 | dxSkinDarkRoom=1
11 | dxSkinDarkSide=1
12 | dxSkinDevExpressDarkStyle=1
13 | dxSkinDevExpressStyle=1
14 | dxSkinFoggy=1
15 | dxSkinGlassOceans=1
16 | dxSkinHighContrast=1
17 | dxSkiniMaginary=1
18 | dxSkinLilian=1
19 | dxSkinLiquidSky=1
20 | dxSkinLondonLiquidSky=1
21 | dxSkinMcSkin=1
22 | dxSkinMetropolis=1
23 | dxSkinMetropolisDark=1
24 | dxSkinMoneyTwins=1
25 | dxSkinOffice2007Black=1
26 | dxSkinOffice2007Blue=1
27 | dxSkinOffice2007Green=1
28 | dxSkinOffice2007Pink=1
29 | dxSkinOffice2007Silver=1
30 | dxSkinOffice2010Black=1
31 | dxSkinOffice2010Blue=1
32 | dxSkinOffice2010Silver=1
33 | dxSkinOffice2013DarkGray=1
34 | dxSkinOffice2013LightGray=1
35 | dxSkinOffice2013White=1
36 | dxSkinOffice2016Colorful=1
37 | dxSkinOffice2016Dark=1
38 | dxSkinPumpkin=1
39 | dxSkinSeven=1
40 | dxSkinSevenClassic=1
41 | dxSkinSharp=1
42 | dxSkinSharpPlus=1
43 | dxSkinSilver=1
44 | dxSkinSpringTime=1
45 | dxSkinStardust=1
46 | dxSkinSummer2008=1
47 | dxSkinTheAsphaltWorld=1
48 | dxSkinsDefaultPainters=1
49 | dxSkinValentine=1
50 | dxSkinVisualStudio2013Blue=1
51 | dxSkinVisualStudio2013Dark=1
52 | dxSkinVisualStudio2013Light=1
53 | dxSkinVS2010=1
54 | dxSkinWhiteprint=1
55 | dxSkinXmas2008Blue=1
56 |
--------------------------------------------------------------------------------
/samples/hello/uMyController.pas:
--------------------------------------------------------------------------------
1 | unit uMyController;
2 |
3 | interface
4 | uses System.SysUtils,System.Classes, controller, System.Rtti;
5 |
6 | type
7 |
8 | {$METHODINFO ON}
9 | MyController = class (TController)
10 | public
11 | function ping : String;
12 | function hello : String;
13 | function helloWithParam(param : String; parami : integer) : String;
14 | function helloWithAllParam(param1 : String; param2 : integer; param3 : String; param4 : String) : String;
15 | function helloWithParamInt(param: integer): String;
16 | end;
17 | {$METHODINFO OFF}
18 |
19 | implementation
20 |
21 | function MyController.hello: String;
22 | begin
23 | result := 'Hello!';
24 | end;
25 |
26 |
27 | function MyController.helloWithAllParam(param1: String; param2: integer; param3,param4: String): String;
28 | begin
29 | result := 'ok';
30 | end;
31 |
32 | function MyController.helloWithParam(param: String;parami : integer): String;
33 | begin
34 | result := 'Hello '+ param + ' - ' + parami.ToString +'! ';
35 | end;
36 |
37 | function MyController.helloWithParamInt(param: integer): String;
38 | begin
39 | result := 'Hello '+ param.ToString ;
40 | end;
41 |
42 |
43 | function MyController.ping: String;
44 | begin
45 | result := 'OK';
46 | end;
47 |
48 | initialization
49 | RegisterClass(MyController);
50 |
51 | finalization
52 | UnRegisterClass(MyController);
53 | end.
54 |
--------------------------------------------------------------------------------
/samples/hello/uMain.pas:
--------------------------------------------------------------------------------
1 | unit uMain;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, HTTPServer;
8 |
9 | type
10 | TForm1 = class(TForm)
11 | pnl_config_porta: TPanel;
12 | edt_porta: TEdit;
13 | value_porta: TEdit;
14 | pnl_bottom: TPanel;
15 | ButtonStart: TButton;
16 | procedure FormCreate(Sender: TObject);
17 | procedure ButtonStartClick(Sender: TObject);
18 | private
19 | { Private declarations }
20 | public
21 | HTTPServer : THTTPServer;
22 | end;
23 |
24 | var
25 | Form1: TForm1;
26 |
27 | implementation
28 |
29 | {$R *.dfm}
30 |
31 | procedure TForm1.ButtonStartClick(Sender: TObject);
32 | begin
33 | HTTPServer.DefaultPort := StrToIntDef(value_porta.Text,9090);
34 |
35 | //pega os arquivos de um arquivo de recurso
36 | HTTPServer.PathResource:= '';
37 |
38 | //pega os arquivos de um diretorio abaixo do exe
39 | HTTPServer.PathResource:= '';
40 |
41 | HTTPServer.Active := not(HTTPServer.Active);
42 |
43 | if (HTTPServer.Active) then
44 | ButtonStart.Caption := 'Stop'
45 | else
46 | ButtonStart.Caption := 'Start'
47 | end;
48 |
49 | procedure TForm1.FormCreate(Sender: TObject);
50 | begin
51 | HTTPServer := THTTPServer.Create(Self);
52 | end;
53 |
54 | end.
55 |
--------------------------------------------------------------------------------
/samples/SimpleStaticHTML/uMain.pas:
--------------------------------------------------------------------------------
1 | unit uMain;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, HTTPServer, uMainController;
8 |
9 | type
10 | TForm1 = class(TForm)
11 | pnl_config_porta: TPanel;
12 | edt_porta: TEdit;
13 | value_porta: TEdit;
14 | pnl_bottom: TPanel;
15 | ButtonStart: TButton;
16 | Panel1: TPanel;
17 | Edit1: TEdit;
18 | value_version: TEdit;
19 | Panel2: TPanel;
20 | Edit2: TEdit;
21 | StaticPath: TEdit;
22 | procedure FormCreate(Sender: TObject);
23 | procedure ButtonStartClick(Sender: TObject);
24 | private
25 | { Private declarations }
26 | public
27 | HTTPServer : THTTPServer;
28 | end;
29 |
30 | var
31 | Form1: TForm1;
32 |
33 | implementation
34 |
35 | {$R *.dfm}
36 |
37 | procedure TForm1.ButtonStartClick(Sender: TObject);
38 | begin
39 | mainController.nrVersion := value_version.Text;
40 |
41 | HTTPServer.DefaultPort := StrToIntDef(value_porta.Text, 9090);
42 | HTTPServer.PathResource := StaticPath.Text;
43 | HTTPServer.AllowAllCors := true;
44 | HTTPServer.Active := not(HTTPServer.Active);
45 |
46 | if (HTTPServer.Active) then
47 | ButtonStart.Caption := 'Stop'
48 | else
49 | ButtonStart.Caption := 'Start'
50 | end;
51 |
52 | procedure TForm1.FormCreate(Sender: TObject);
53 | begin
54 | HTTPServer := THTTPServer.Create(Self);
55 | end;
56 |
57 | end.
58 |
--------------------------------------------------------------------------------
/lib/class_.util.pas:
--------------------------------------------------------------------------------
1 | unit class_.util;
2 |
3 | interface
4 | Uses System.Rtti, System.SysUtils;
5 | type
6 | TArrayValue = Array of Variant;
7 |
8 | TClassUtil = class
9 | public
10 | class function instantiateClassViaRTTI(value: TValue) : TObject;
11 | end;
12 |
13 | implementation
14 |
15 | class function TClassUtil.instantiateClassViaRTTI(value: TValue): TObject;
16 | var
17 | context : TRttiContext;
18 | instance : TRttiInstanceType;
19 | rtti_type: TRttiType;
20 | error : String;
21 | begin
22 | result := nil;
23 | try
24 | case value.Kind of
25 | tkString ,
26 | tkLString,
27 | tkWString,
28 | tkUString:
29 | begin
30 | error := value.AsString+' classe not found';
31 | instance:= TRttiInstanceType(context.FindType(value.AsString));
32 | result := instance.MetaclassType.Create;
33 | end;
34 | tkClassRef:
35 | begin
36 | error := 'the parameter must be of type Tclass'+sLineBreak;
37 | rtti_type := context.GetType(value.AsClass);
38 | instance := (context.FindType(rtti_type.QualifiedName) as TRttiInstanceType);
39 |
40 | result := instance.MetaclassType.Create;
41 | end;
42 | else
43 | begin
44 | Error :='The parameter is not valid for'+sLineBreak;
45 | abort;
46 | end;
47 | end;
48 | except
49 | on e : Exception do
50 | begin
51 | raise Exception.Create(error);
52 | end;
53 | end;
54 | end;
55 |
56 | end.
57 |
--------------------------------------------------------------------------------
/samples/hello/uMain.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 0
3 | Top = 0
4 | BorderIcons = [biSystemMenu]
5 | Caption = 'EAS for Delphi'
6 | ClientHeight = 56
7 | ClientWidth = 229
8 | Color = clBtnFace
9 | Font.Charset = DEFAULT_CHARSET
10 | Font.Color = clWindowText
11 | Font.Height = -11
12 | Font.Name = 'Tahoma'
13 | Font.Style = []
14 | OldCreateOrder = False
15 | OnCreate = FormCreate
16 | PixelsPerInch = 96
17 | TextHeight = 13
18 | object pnl_config_porta: TPanel
19 | Left = 0
20 | Top = 0
21 | Width = 229
22 | Height = 25
23 | Align = alTop
24 | TabOrder = 0
25 | object edt_porta: TEdit
26 | Left = 1
27 | Top = 1
28 | Width = 104
29 | Height = 23
30 | Align = alLeft
31 | ReadOnly = True
32 | TabOrder = 0
33 | Text = 'Porta :'
34 | ExplicitHeight = 21
35 | end
36 | object value_porta: TEdit
37 | Left = 105
38 | Top = 1
39 | Width = 123
40 | Height = 23
41 | Align = alClient
42 | NumbersOnly = True
43 | TabOrder = 1
44 | Text = '9090'
45 | ExplicitHeight = 21
46 | end
47 | end
48 | object pnl_bottom: TPanel
49 | Left = 0
50 | Top = 25
51 | Width = 229
52 | Height = 31
53 | Align = alBottom
54 | TabOrder = 1
55 | object ButtonStart: TButton
56 | Left = 136
57 | Top = 1
58 | Width = 92
59 | Height = 29
60 | Align = alRight
61 | Caption = 'Start'
62 | TabOrder = 0
63 | OnClick = ButtonStartClick
64 | end
65 | end
66 | end
67 |
--------------------------------------------------------------------------------
/samples/GET QueryParam/uMain.dfm:
--------------------------------------------------------------------------------
1 | object frmMain: TfrmMain
2 | Left = 0
3 | Top = 0
4 | BorderIcons = [biSystemMenu]
5 | Caption = 'Server'
6 | ClientHeight = 57
7 | ClientWidth = 229
8 | Color = clBtnFace
9 | Font.Charset = DEFAULT_CHARSET
10 | Font.Color = clWindowText
11 | Font.Height = -11
12 | Font.Name = 'Tahoma'
13 | Font.Style = []
14 | OldCreateOrder = False
15 | OnCreate = FormCreate
16 | PixelsPerInch = 96
17 | TextHeight = 13
18 | object pnl_config_porta: TPanel
19 | Left = 0
20 | Top = 0
21 | Width = 229
22 | Height = 25
23 | Align = alTop
24 | TabOrder = 0
25 | object edt_porta: TEdit
26 | Left = 1
27 | Top = 1
28 | Width = 104
29 | Height = 23
30 | Align = alLeft
31 | ReadOnly = True
32 | TabOrder = 0
33 | Text = 'Porta :'
34 | ExplicitHeight = 21
35 | end
36 | object value_porta: TEdit
37 | Left = 105
38 | Top = 1
39 | Width = 123
40 | Height = 23
41 | Align = alClient
42 | NumbersOnly = True
43 | TabOrder = 1
44 | Text = '9090'
45 | ExplicitHeight = 21
46 | end
47 | end
48 | object pnl_bottom: TPanel
49 | Left = 0
50 | Top = 26
51 | Width = 229
52 | Height = 31
53 | Align = alBottom
54 | TabOrder = 1
55 | ExplicitTop = 25
56 | object ButtonStart: TButton
57 | Left = 136
58 | Top = 1
59 | Width = 92
60 | Height = 29
61 | Align = alRight
62 | Caption = 'Start'
63 | TabOrder = 0
64 | OnClick = ButtonStartClick
65 | end
66 | end
67 | end
68 |
--------------------------------------------------------------------------------
/samples/ProjectGroup.groupproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {199FAA0F-E6C1-40A9-93DF-F67813B8E5B0}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Default.Personality.12
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/samples/SimpleStaticHTML/uMain.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 0
3 | Top = 0
4 | BorderIcons = [biSystemMenu]
5 | Caption = 'EAS for Delphi'
6 | ClientHeight = 108
7 | ClientWidth = 229
8 | Color = clBtnFace
9 | Font.Charset = DEFAULT_CHARSET
10 | Font.Color = clWindowText
11 | Font.Height = -11
12 | Font.Name = 'Tahoma'
13 | Font.Style = []
14 | OldCreateOrder = False
15 | OnCreate = FormCreate
16 | PixelsPerInch = 96
17 | TextHeight = 13
18 | object pnl_config_porta: TPanel
19 | Left = 0
20 | Top = 0
21 | Width = 229
22 | Height = 25
23 | Align = alTop
24 | TabOrder = 0
25 | object edt_porta: TEdit
26 | Left = 1
27 | Top = 1
28 | Width = 104
29 | Height = 23
30 | Align = alLeft
31 | ReadOnly = True
32 | TabOrder = 0
33 | Text = 'Porta :'
34 | ExplicitHeight = 21
35 | end
36 | object value_porta: TEdit
37 | Left = 105
38 | Top = 1
39 | Width = 123
40 | Height = 23
41 | Align = alClient
42 | NumbersOnly = True
43 | TabOrder = 1
44 | Text = '9090'
45 | ExplicitHeight = 21
46 | end
47 | end
48 | object pnl_bottom: TPanel
49 | Left = 0
50 | Top = 77
51 | Width = 229
52 | Height = 31
53 | Align = alBottom
54 | TabOrder = 1
55 | ExplicitTop = 25
56 | object ButtonStart: TButton
57 | Left = 136
58 | Top = 1
59 | Width = 92
60 | Height = 29
61 | Align = alRight
62 | Caption = 'Start'
63 | TabOrder = 0
64 | OnClick = ButtonStartClick
65 | end
66 | end
67 | object Panel1: TPanel
68 | Left = 0
69 | Top = 50
70 | Width = 229
71 | Height = 25
72 | Align = alTop
73 | TabOrder = 2
74 | ExplicitTop = 8
75 | object Edit1: TEdit
76 | Left = 1
77 | Top = 1
78 | Width = 104
79 | Height = 23
80 | Align = alLeft
81 | ReadOnly = True
82 | TabOrder = 0
83 | Text = 'Version :'
84 | ExplicitHeight = 21
85 | end
86 | object value_version: TEdit
87 | Left = 105
88 | Top = 1
89 | Width = 123
90 | Height = 23
91 | Align = alClient
92 | TabOrder = 1
93 | Text = '1.0.2'
94 | ExplicitLeft = 111
95 | ExplicitTop = -1
96 | end
97 | end
98 | object Panel2: TPanel
99 | Left = 0
100 | Top = 25
101 | Width = 229
102 | Height = 25
103 | Align = alTop
104 | TabOrder = 3
105 | object Edit2: TEdit
106 | Left = 1
107 | Top = 1
108 | Width = 104
109 | Height = 23
110 | Align = alLeft
111 | ReadOnly = True
112 | TabOrder = 0
113 | Text = 'PathResource'
114 | ExplicitLeft = -5
115 | ExplicitTop = -3
116 | end
117 | object StaticPath: TEdit
118 | Left = 105
119 | Top = 1
120 | Width = 123
121 | Height = 23
122 | Align = alClient
123 | TabOrder = 1
124 | Text = 'www'
125 | ExplicitHeight = 21
126 | end
127 | end
128 | end
129 |
--------------------------------------------------------------------------------
/lib/parameter.pas:
--------------------------------------------------------------------------------
1 | unit parameter;
2 |
3 | interface
4 | uses System.Classes, System.SysUtils, class_.util, System.Rtti;
5 |
6 | type
7 | TparameterType =(ptInteger, ptString, ptFloat, ptBoolean);
8 |
9 | TParameter = class
10 | private
11 | fname : String ;
12 | fvalue : variant;
13 | fparam_type : TparameterType;
14 | public
15 | property name : String read fname write fname;
16 | property value : variant read fvalue write fvalue;
17 | property param_type : TparameterType read fparam_type write fparam_type ;
18 | end;
19 |
20 | TListParameter = array of TParameter;
21 |
22 | TListParameterHelper = record helper for TListParameter
23 | private
24 | function getValueParameter(pValue: String): String;
25 | public
26 | procedure addParameter(parameter : TParameter);overload;
27 | procedure addParameter(name : String);overload;
28 | procedure setParameters(uri, endpoint : String);
29 |
30 | function getArray(pInvert : Boolean = false) : TArrayValue;
31 | function addParameter : TParameter;overload;
32 | function getParameter(name : String) : TParameter;
33 | end;
34 |
35 | const
36 | PREFIX_PARAMETER = ':';
37 | implementation
38 |
39 | procedure TListParameterHelper.addParameter(parameter: TParameter);
40 | begin
41 | SetLength(self,length(self)+1);
42 | self[length(self)-1] := parameter;
43 | end;
44 |
45 | function TListParameterHelper.addParameter: TParameter;
46 | begin
47 | result := TParameter.Create;
48 | addParameter(result);
49 | end;
50 |
51 | procedure TListParameterHelper.addParameter(name: String);
52 | begin
53 | addParameter.name := name;
54 | end;
55 |
56 | function TListParameterHelper.getArray(pInvert : Boolean): TArrayValue;
57 | var
58 | i : integer;
59 | len : integer;
60 | begin
61 | len := length(Self)-1;
62 | for i := 0 to len do
63 | begin
64 | SetLength(result, i+1);
65 |
66 | result[i] := Self[i].value;
67 | if (pInvert) then
68 | result[i] := Self[len-i].value;
69 | end;
70 | end;
71 |
72 | function TListParameterHelper.getParameter(name: String): TParameter;
73 | var i : integer;
74 | begin
75 | result := nil;
76 | for i := 0 to Length(self)-1 do
77 | begin
78 | if (UpperCase(self[i].name).trim <> UpperCase(name).trim) then
79 | continue;
80 |
81 | result := self[i];
82 | break;
83 | end;
84 | end;
85 |
86 | procedure TListParameterHelper.setParameters(uri, endpoint : String);
87 | var
88 | i : Integer ;
89 | value : String ;
90 | blocks_route : TStringList;
91 | blocks_uri : TStringList;
92 | begin
93 | blocks_route := TStringList.Create;
94 | blocks_uri := TStringList.Create;
95 | try
96 | blocks_uri.Text := uri.Replace('/',sLineBreak).Trim;
97 | blocks_route.Text := endpoint.Replace('/',sLineBreak).Trim;
98 |
99 | for i := 0 to blocks_route.Count-1 do
100 | begin
101 | if (pos(PREFIX_PARAMETER,blocks_route[i]) <= 0) then
102 | continue;
103 |
104 | value := getValueParameter(blocks_uri[i]);
105 |
106 | getParameter(blocks_route[i].Replace(PREFIX_PARAMETER,EmptyStr)).value := value;
107 | end;
108 |
109 | finally
110 | FreeAndNil(blocks_route);
111 | FreeAndNil(blocks_uri);
112 | end;
113 | end;
114 |
115 | function TListParameterHelper.getValueParameter(pValue : String) : String;
116 | const
117 | values : array of array of string = [
118 | ['%21', '!'],
119 | ['%22', '"'],
120 | ['%23', '#'],
121 | ['%24', '$'],
122 | ['%25', '%'],
123 | ['%26', '&'],
124 | ['%27', ''''],
125 | ['%28', '('],
126 | ['%29', ')'],
127 | ['%2a', '*'],
128 | ['%2b', '+'],
129 | ['%2c', ','],
130 | ['%2d', '-'],
131 | ['%2e', '.'],
132 | ['%2f', '/'],
133 | ['%3a', ':'],
134 | ['%3b', ';'],
135 | ['%3c', '<'],
136 | ['%3d', '='],
137 | ['%3e', '>'],
138 | ['%3f', '?'],
139 | ['%40', '@'],
140 | ['%5b', '['],
141 | ['%5c', '\'],
142 | ['%5d', ']'],
143 | ['%5e', '^'],
144 | ['%5f', '_'],
145 | ['%60', '`'],
146 | ['%7b', '{'],
147 | ['%7c', '|'],
148 | ['%7d', '}'],
149 | ['%7e', '~']
150 | ];
151 | var
152 | i : integer;
153 | begin
154 | result := pValue;
155 | for i := 0 to Length(values)-1 do
156 | result := StringReplace(result, values[i][0], values[i][1], [rfReplaceAll, rfIgnoreCase]);
157 | end;
158 |
159 | end.
160 |
--------------------------------------------------------------------------------
/src/HTTPServer.pas:
--------------------------------------------------------------------------------
1 | unit HTTPServer;
2 |
3 | interface
4 |
5 | uses
6 | IdHTTPServer, IdContext, IdCustomHTTPServer, System.Classes, System.Types,
7 | System.SysUtils, IdGlobal, IdGlobalProtocols,idMultipartFormData,
8 | IdCoderQuotedPrintable, IdCoderMIME, IdHeaderList, System.IOUtils;
9 | type
10 | TRequestEvent = function (AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo) : Boolean of object;
11 |
12 | THTTPServer = class(TIdHTTPServer)
13 | private
14 | fProcessing : boolean;
15 | fPathResource : String;
16 | fRequestInfo : TIdHTTPRequestInfo;
17 | fResponseInfo : TIdHTTPResponseInfo;
18 | fAllowAllCors : Boolean;
19 | fonEstablishConnection : TRequestEvent;
20 |
21 | procedure Connect(AContext: TIdContext);
22 | procedure CommandGet(AContext: TIdContext;
23 | ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
24 | procedure CommandOther(AContext: TIdContext;
25 | ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
26 |
27 | class var instance : THTTPServer;
28 | function isResource(ARequestInfo: TIdHTTPRequestInfo;
29 | AResponseInfo: TIdHTTPResponseInfo): Boolean;
30 | function getContentType(sExt : String): String;
31 | function getResFile(sFile : String) : String;
32 |
33 | procedure allowCors;
34 | procedure validEstablishConnection(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
35 | public
36 | constructor Create(AOwner: TComponent);reintroduce;
37 | destructor Destroy; override;
38 |
39 | class function getInstance() : THTTPServer;
40 |
41 | function getLocalServer : String;
42 | published
43 | property AllowAllCors : Boolean read fAllowAllCors write fAllowAllCors;
44 | property PathResource : String read fPathResource write fPathResource;
45 | property RequestInfo : TIdHTTPRequestInfo read fRequestInfo ;
46 | property ResponseInfo : TIdHTTPResponseInfo read fResponseInfo ;
47 | property onEstablishConnection : TRequestEvent read fonEstablishConnection write fonEstablishConnection;
48 | end;
49 |
50 | resourceString
51 | FILE_INDEX = '/index.html';
52 | DEFAULT_PATH_RESOURCES = 'resource\';
53 |
54 | implementation
55 |
56 | uses
57 | routes;
58 |
59 | procedure THTTPServer.allowCors;
60 | begin
61 | if not(allowAllCors) then
62 | exit;
63 |
64 | fResponseInfo.CustomHeaders.AddValue('Access-Control-Allow-Origin','*');
65 | fResponseInfo.CustomHeaders.Values['origin'] := '*';
66 | fResponseInfo.CustomHeaders.Values['Access-Control-Allow-Headers'] := '*';
67 | fResponseInfo.CustomHeaders.Values['Access-Control-Expose-Headers'] := '*';
68 | fResponseInfo.CustomHeaders.Values['Access-Control-Request-Method'] := '*';
69 | fResponseInfo.CustomHeaders.Values['Access-Control-Request-Headers'] := '*';
70 | fResponseInfo.CustomHeaders.Values['Access-Control-Allow-Credentials'] := 'true';
71 | fResponseInfo.CustomHeaders.Values['Access-Control-Allow-Methods'] := '*';
72 | end;
73 |
74 | procedure THTTPServer.CommandGet(AContext: TIdContext;
75 | ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
76 | begin
77 |
78 | while (fProcessing) do
79 | Sleep(100);
80 |
81 | fProcessing := true;
82 | try
83 | if (isResource(ARequestInfo, AResponseInfo)) then
84 | exit;
85 |
86 | fRequestInfo := ARequestInfo;
87 | fResponseInfo := AResponseInfo;
88 |
89 | AllowCors();
90 | validEstablishConnection(AContext, ARequestInfo, AResponseInfo);
91 |
92 | AResponseInfo.ContentText := TRoutes.getInstance.endpoint(ARequestInfo,AResponseInfo);
93 | finally
94 | fProcessing := false;
95 | end;
96 | end;
97 |
98 | procedure THTTPServer.CommandOther(AContext: TIdContext;
99 | ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
100 | begin
101 | while (fProcessing) do
102 | Sleep(100);
103 |
104 | fProcessing := true;
105 | try
106 | fRequestInfo := ARequestInfo;
107 | fResponseInfo := AResponseInfo;
108 |
109 | AllowCors();
110 |
111 | if (ARequestInfo.Command = 'OPTIONS') then
112 | begin
113 | AResponseInfo.ResponseNo := 204;
114 | exit;
115 | end;
116 |
117 | validEstablishConnection(AContext, ARequestInfo, AResponseInfo);
118 | AResponseInfo.ContentText := TRoutes.getInstance.endpoint(ARequestInfo,AResponseInfo);
119 | finally
120 | fProcessing := false;
121 | end;
122 | end;
123 |
124 | procedure THTTPServer.Connect(AContext: TIdContext);
125 | begin
126 | TRoutes.getInstance;
127 | end;
128 |
129 | constructor THTTPServer.Create(AOwner: TComponent);
130 | begin
131 | if Assigned(instance) then
132 | raise Exception.Create('Classe deve ser instancia via getInstance');
133 |
134 | inherited;
135 |
136 | instance := self;
137 |
138 | self.OnConnect := Connect;
139 | self.OnCommandGet := CommandGet;
140 | self.OnCommandOther := CommandOther;
141 |
142 | fPathResource := DEFAULT_PATH_RESOURCES;
143 | end;
144 |
145 | destructor THTTPServer.Destroy;
146 | begin
147 | instance := nil;
148 | inherited;
149 | end;
150 |
151 | class function THTTPServer.getInstance: THTTPServer;
152 | begin
153 | if Not(Assigned(instance)) then
154 | THTTPServer.Create(nil);
155 |
156 | result := instance;
157 | end;
158 |
159 | function THTTPServer.getLocalServer: String;
160 | begin
161 | result := 'http://127.0.0.1:' + DefaultPort.ToString;
162 | end;
163 |
164 | function THTTPServer.getResFile(sFile: String): String;
165 | var
166 | tempFile : String;
167 | begin
168 | sFile := ExtractFileName(sFile.Replace('/','\'));
169 |
170 | tempFile := sFile.Replace('.', '_')
171 | .Replace('-', '_')
172 | .Replace('/', EmptyStr)
173 | .Replace('\', EmptyStr);
174 |
175 | result := tempFile;
176 | end;
177 |
178 | function THTTPServer.isResource(ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo) : Boolean;
179 | var
180 | path : String;
181 | sExt : String;
182 | isRes : Boolean;
183 | resFile: String;
184 | begin
185 | path := ARequestInfo.URI;
186 | if (path = '\') or (path = '/') then
187 | path := FILE_INDEX;
188 |
189 | sExt := ExtractFileExt(path);
190 | if (sExt.IsEmpty) then
191 | exit(false);
192 |
193 | {$IF DEFINED(ANDROID) OR (DEFINED(IOS))}
194 | path := TPath.GetDocumentsPath + PathDelim + PathResource + path;
195 | {$ELSE}
196 | path := System.SysUtils.GetCurrentDir + '/' + PathResource + path;
197 | {$ENDIF}
198 |
199 | isRes := UpperCase(ExtractFileExt(PathResource)) = '.RES';
200 | if (not(isRes) and Not(FileExists(path))) then
201 | exit;
202 |
203 | try
204 | AResponseInfo.ContentType := getContentType(sExt);
205 | if (isRes) then
206 | begin
207 | resFile := getResFile(path);
208 | AResponseInfo.ContentStream := TResourceStream.Create(HInstance, resFile, RT_RCDATA);
209 | end
210 | else
211 | begin
212 | AResponseInfo.ContentStream := TFileStream.Create(path, fmOpenRead);
213 | end;
214 |
215 | result := true;
216 | except
217 | result := false;
218 | end;
219 | end;
220 |
221 | procedure THTTPServer.validEstablishConnection(AContext: TIdContext;
222 | ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
223 | begin
224 | if Assigned(onEstablishConnection) and not(onEstablishConnection(AContext, ARequestInfo, AResponseInfo))then
225 | raise Exception.Create('Connection denied');
226 | end;
227 |
228 | function THTTPServer.getContentType(sExt : String) : String;
229 | begin
230 | //; charset=UTF-8
231 | sExt := StringReplace(sExt, '.', '', [rfReplaceAll]);
232 |
233 | if (ansicomparestr(sExt,'htm') = 0) or (ansicomparestr(sExt,'html') = 0) then
234 | exit('text/html; charset=UTF-8');
235 |
236 | if (ansicomparestr(sExt,'js') = 0) then
237 | exit('text/javascript; charset=UTF-8');
238 |
239 | if (ansicomparestr(sExt,'css') = 0) then
240 | exit('text/css; charset=UTF-8');
241 |
242 | if (ansicomparestr(sExt,'woff') = 0) then
243 | exit('application/x-font-woff');
244 |
245 | if (ansicomparestr(sExt,'ttf') = 0) then
246 | exit('application/octet-stream');
247 |
248 | if (ansicomparestr(sExt,'jpeg') = 0) or (ansicomparestr(sExt,'jpg') = 0)then
249 | exit('image/jpeg');
250 |
251 | result := 'application/' + sExt;
252 | end;
253 |
254 | end.
255 |
--------------------------------------------------------------------------------
/src/routes.pas:
--------------------------------------------------------------------------------
1 | unit routes;
2 |
3 | interface
4 |
5 | uses
6 | IdCustomHTTPServer, System.Rtti, class_.util, parameter, System.Classes,
7 | System.JSON, System.SysUtils, System.Types;
8 |
9 | type
10 | TRouteType = (rtNone,rtGET, rtPOST, rtPUT, rtDELETE);
11 |
12 | TListTMetodoHTTP = TArray;
13 |
14 | TRouteTypeHelper = record helper for TRouteType
15 | public
16 | function StrToTRouteType(route_type : String) : TRouteType;
17 | function toString : String;
18 | end;
19 |
20 | TRoute = class
21 | private
22 | froute_type : TRouteType;
23 | fendpoint : String;
24 | fmethod : String;
25 | fparameters : TListParameter;
26 | fmethod_name : String ;
27 | fclass_name : String ;
28 |
29 | procedure setMethod(const Value: String);
30 | procedure FreeListparameters;
31 | public
32 | destructor Destroy; override;
33 |
34 | property route_type : TRouteType read froute_type write froute_type ;
35 | property endpoint : String read fendpoint write fendpoint ;
36 | property method : String read fmethod write setMethod ;
37 | property parameters : TListParameter read fparameters ;
38 | property method_name: String read fmethod_name ;
39 | property class_name : String read fclass_name ;
40 | end;
41 |
42 | TListRoutes = array of TRoute;
43 |
44 | TRoutes = class
45 | private
46 | froutes_get : TListRoutes;
47 | froutes_post : TListRoutes;
48 | froutes_put : TListRoutes;
49 | froutes_delete : TListRoutes;
50 |
51 | class var instance : TRoutes;
52 |
53 | function addRoute(var list : TListRoutes; route : TRoute) : Integer;
54 | function getListRoutes(route_type : TRouteType) : TListRoutes;
55 |
56 | procedure loadFileConfig();
57 | procedure loadEndPoits(json : TJSONObject; MetodoHTTP : TRouteType);
58 | procedure FreeListRoute(froutes: TListRoutes);
59 | protected
60 | constructor create;
61 |
62 | function FindRoute(ARequestInfo: TIdHTTPRequestInfo) : TRoute; Overload;
63 | function FindRoute(list : TListRoutes; uri : String) : TRoute; Overload;
64 |
65 | function callMethod(ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; route : TRoute): variant;
66 | function error404(ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo): variant;
67 | public
68 | class function getInstance : TRoutes;
69 | class procedure releaseInstance;
70 |
71 | function endpoint(ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo) : variant;
72 |
73 | Destructor Destroy; override;
74 | end;
75 |
76 | var
77 | ListTMetodoHTTP : TListTMetodoHTTP;
78 |
79 | procedure setListTMetodoHTTP;
80 | implementation
81 |
82 | uses
83 | controller, HTTPServer.response.page;
84 |
85 | procedure setListTMetodoHTTP;
86 | begin
87 | SetLength(ListTMetodoHTTP,4);
88 |
89 | ListTMetodoHTTP[0] := rtGET;
90 | ListTMetodoHTTP[1] := rtPOST;
91 | ListTMetodoHTTP[2] := rtPUT;
92 | ListTMetodoHTTP[3] := rtDELETE;
93 | end;
94 |
95 | { TRoutes }
96 | function TRoutes.addRoute(var list: TListRoutes; route: TRoute): Integer;
97 | var
98 | nPos : Integer;
99 | begin
100 | nPos := Length(list)+1;
101 |
102 | SetLength(list,nPos);
103 | list[nPos-1] := route;
104 |
105 | result := nPos;
106 | end;
107 |
108 | function TRoutes.callMethod(ARequestInfo: TIdHTTPRequestInfo;
109 | AResponseInfo: TIdHTTPResponseInfo; route : TRoute): variant;
110 | var
111 | controller : TObject;
112 | begin
113 | controller := TClassUtil.instantiateClassViaRTTI(route.class_name);
114 |
115 | if Not(controller.InheritsFrom(TController)) then
116 | raise Exception.Create('Class must be of the type TController');
117 |
118 | try
119 | TController(controller).setRequestInfo(ARequestInfo);
120 | TController(controller).setResponseInfo(AResponseInfo);
121 |
122 | result := TController(controller).execMethod(route.method_name, route.parameters.getArray(true));
123 | finally
124 | FreeAndNil(controller);
125 | end;
126 | end;
127 |
128 | constructor TRoutes.create;
129 | begin
130 |
131 | if Assigned(TRoutes.instance) then
132 | raise Exception.Create('This class can be called by the method getInstace');
133 |
134 | TRoutes.instance := self;
135 | loadFileConfig;
136 | end;
137 |
138 | procedure TRoutes.FreeListRoute(froutes : TListRoutes);
139 | var
140 | i : integer;
141 | begin
142 | for i := Length(froutes)-1 downto 0 do
143 | froutes[i].Free;
144 |
145 | SetLength(froutes, 0);
146 | end;
147 |
148 | destructor TRoutes.Destroy;
149 | begin
150 | FreeLIstRoute(froutes_get);
151 | FreeLIstRoute(froutes_post);
152 | FreeLIstRoute(froutes_put);
153 | FreeLIstRoute(froutes_delete);
154 | inherited;
155 | end;
156 |
157 | function TRoutes.endpoint(ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo): variant;
158 | var
159 | route : TRoute;
160 | begin
161 | route := FindRoute(ARequestInfo);
162 | if Assigned(route) then
163 | result := callMethod(ARequestInfo, AResponseInfo, route)
164 | else
165 | result := error404(ARequestInfo, AResponseInfo);
166 | end;
167 |
168 | function TRoutes.error404(ARequestInfo: TIdHTTPRequestInfo;
169 | AResponseInfo: TIdHTTPResponseInfo): variant;
170 | begin
171 | result := HTTPServerResponsePage.return_404(AResponseInfo);
172 | end;
173 |
174 | function TRoutes.FindRoute(ARequestInfo: TIdHTTPRequestInfo): TRoute;
175 | begin
176 | result := FindRoute(getListRoutes(rtNone.StrToTRouteType(ARequestInfo.Command)),ARequestInfo.URI);
177 | end;
178 |
179 | function TRoutes.FindRoute(list: TListRoutes; uri : String): TRoute;
180 | var
181 | i, j : Integer;
182 | nPassed : Integer;
183 | blocks_route : TStringList;
184 | blocks_uri : TStringList;
185 | begin
186 | result:= nil;
187 |
188 | blocks_route := TStringList.Create;
189 | blocks_uri := TStringList.Create;
190 | try
191 | blocks_uri.Text := uri.Replace('/',sLineBreak).Trim;
192 | for i := 0 to length(list)-1 do
193 | begin
194 | blocks_route.Text := list[i].endpoint.Replace('/',sLineBreak).Trim;
195 |
196 | if (blocks_route.Count <> blocks_uri.Count) then
197 | continue;
198 |
199 | nPassed := 0;
200 | for j := 0 to blocks_route.Count-1 do
201 | begin
202 | if (pos(PREFIX_PARAMETER, blocks_route[j]) = 0) and (UpperCase(blocks_route[j]) <> UpperCase(blocks_uri[j])) then
203 | break;
204 |
205 | inc(nPassed);
206 | end;
207 |
208 | if (nPassed <> blocks_uri.Count) then
209 | Continue;
210 |
211 | list[i].parameters.setParameters(uri,list[i].endpoint);
212 | result := list[i];
213 | Break;
214 | end;
215 |
216 | finally
217 | FreeAndNil(blocks_route);
218 | FreeAndNil(blocks_uri);
219 | end;
220 | end;
221 |
222 | class function TRoutes.getInstance: TRoutes;
223 | begin
224 | if Not(Assigned(TRoutes.instance)) then
225 | TRoutes.create;
226 |
227 | result := TRoutes.instance;
228 | end;
229 |
230 | function TRoutes.getListRoutes(route_type: TRouteType): TListRoutes;
231 | begin
232 | case route_type of
233 | rtGET : result := froutes_get ;
234 | rtPOST : result := froutes_post ;
235 | rtPUT : result := froutes_put ;
236 | rtDELETE: result := froutes_delete;
237 | end;
238 | end;
239 |
240 | procedure TRoutes.loadEndPoits(json : TJSONObject; MetodoHTTP : TRouteType);
241 | var
242 | list_ep : TJSONObject;
243 | i : Integer ;
244 | pair : TJSONPair ;
245 | route : TRoute ;
246 | metodo : String ;
247 | begin
248 |
249 | metodo := MetodoHTTP.toString;
250 | try
251 | list_ep := TJSONObject(json.GetValue(metodo));
252 | except
253 | on e: exception do
254 | begin
255 | releaseInstance;
256 | raise Exception.Create('Error while load object ' + metodo);
257 | end;
258 | end;
259 |
260 | for i := 0 to list_ep.Count-1 do
261 | begin
262 | pair := TJSONPair(list_ep.Pairs[i]);
263 | route := TRoute.Create;
264 | route.route_type := MetodoHTTP;
265 | route.endpoint := pair.JsonString.ToString.Replace('\/','/').Replace('"','');
266 | route.method := pair.JsonValue.ToString.Replace('"','');
267 |
268 | case MetodoHTTP of
269 | rtGET : addRoute(froutes_get ,route);
270 | rtPOST : addRoute(froutes_post ,route);
271 | rtPUT : addRoute(froutes_put ,route);
272 | rtDELETE : addRoute(froutes_delete,route);
273 | end;
274 | end;
275 | end;
276 |
277 | procedure TRoutes.loadFileConfig;
278 | var
279 | list : TStringList;
280 | json : TJSONObject;
281 | i : integer;
282 | begin
283 | list := TStringList.Create;
284 | try
285 | list.LoadFromStream(TResourceStream.Create(HInstance,'routes',RT_RCDATA));
286 |
287 | json := TJSONObject(TJSONObject.ParseJSONValue('{'+list.Text+'}'));
288 |
289 | for i:=0 to Length(ListTMetodoHTTP)-1 do
290 | loadEndPoits(json,ListTMetodoHTTP[i]);
291 |
292 | finally
293 | FreeAndNil(list);
294 | end;
295 | end;
296 |
297 | class procedure TRoutes.releaseInstance;
298 | begin
299 | if Assigned(TRoutes.instance) then
300 | FreeAndNil(TRoutes.instance);
301 | end;
302 |
303 | { TRouteTypeHelper }
304 |
305 | function TRouteTypeHelper.StrToTRouteType(route_type : String): TRouteType;
306 | begin
307 | if (UpperCase(route_type) = 'GET') then
308 | result := rtGET
309 | else if (UpperCase(route_type) = 'POST')then
310 | result := rtPOST
311 | else if (UpperCase(route_type) = 'PUT')then
312 | result := rtPUT
313 | else if (UpperCase(route_type) = 'DELETE')then
314 | result := rtDELETE
315 | else
316 | result := rtNone
317 | end;
318 |
319 | function TRouteTypeHelper.toString: String;
320 | begin
321 | if (self = rtGET) then
322 | result := 'GET'
323 | else if (self = rtPOST) then
324 | result := 'POST'
325 | else if (self = rtPUT) then
326 | result := 'PUT'
327 | else if (self = rtDELETE) then
328 | result := 'DELETE'
329 | else
330 | result := 'NA'
331 | end;
332 |
333 | { TRoute }
334 | destructor TRoute.Destroy;
335 | begin
336 | FreeListparameters;
337 | inherited;
338 | end;
339 |
340 | procedure TRoute.FreeListparameters();
341 | var
342 | i : integer;
343 | begin
344 | for i := Length(fParameters)-1 downto 0 do
345 | fParameters[i].Free;
346 | end;
347 |
348 | procedure TRoute.setMethod(const Value: String);
349 | var
350 | strList : TStringList;
351 | params : TStringList;
352 | i : integer;
353 | pos_ini : integer;
354 | nPos : integer;
355 | begin
356 | fmethod := Value;
357 |
358 | strList := TStringList.Create;
359 | params := TStringList.Create;
360 | try
361 | pos_ini := Pos('(',fmethod);
362 | nPos := Pos(')',fmethod) - pos_ini;
363 | params.Text := Copy(fmethod,pos_ini+1,nPos-1).Replace(',',sLineBreak).Trim;
364 |
365 | strList.Text := fmethod.Replace('.',sLineBreak).Trim;
366 |
367 | fmethod_name := strList[strList.Count-1];
368 | if (pos_ini > 0) then
369 | fmethod_name := copy(fmethod_name,0,Pos('(',fmethod_name)-1);
370 |
371 | for i := 0 to params.Count-1 do
372 | parameters.addParameter(params[i]);
373 |
374 | fclass_name := strList[0];
375 | for i := 1 to strList.Count-2 do
376 | fclass_name := fclass_name + '.' + strList[i];
377 |
378 | finally
379 | FreeAndNil(strList);
380 | FreeAndNil(params);
381 | end;
382 | end;
383 |
384 |
385 | initialization
386 | setListTMetodoHTTP;
387 | finalization
388 | TRoutes.releaseInstance;
389 |
390 | end.
391 |
--------------------------------------------------------------------------------
/samples/SimpleStaticHTML/SimpleStaticHTML_EAS.dproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {4CA3C810-2AC8-4E74-99C9-CA921CB7437A}
4 | 18.5
5 | VCL
6 | SimpleStaticHTML_EAS.dpr
7 | True
8 | Debug
9 | Win32
10 | 1
11 | Application
12 |
13 |
14 | true
15 |
16 |
17 | true
18 | Base
19 | true
20 |
21 |
22 | true
23 | Base
24 | true
25 |
26 |
27 | true
28 | Cfg_1
29 | true
30 | true
31 |
32 |
33 | true
34 | Base
35 | true
36 |
37 |
38 | true
39 | Cfg_2
40 | true
41 | true
42 |
43 |
44 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)
45 | $(BDS)\bin\delphi_PROJECTICON.ico
46 | SimpleStaticHTML_EAS
47 | .\$(Platform)\$(Config)
48 | .\$(Platform)\$(Config)
49 | false
50 | false
51 | false
52 | false
53 | false
54 |
55 |
56 | $(BDS)\bin\default_app.manifest
57 | DBXSqliteDriver;DBXDb2Driver;OCX_Servers;dxCoreRS23;vclactnband;frxe23;vclFireDAC;dxPSLnksRS23;dxPSdxLCLnkRS23;tethering;cxDataRS23;dxPSdxOCLnkRS23;dxTabbedMDIRS23;FireDACADSDriver;dxSkinBlackRS23;dxSkinLondonLiquidSkyRS23;JvPluginSystem;pckUserControl_DT;dxDBXServerModeRS23;dxHttpIndyRequestRS23;dxPScxGridLnkRS23;cxSchedulerRS23;FireDACMSSQLDriver;vcltouch;ACBr_NFe;ACBr_NFeDanfeFR;vcldb;Intraweb;svn;dxWizardControlRS23;dxPScxCommonRS23;dxSkinMcSkinRS23;JvBands;ACBr_NFeDanfeESCPOS;dxSkinOffice2007BlueRS23;JvJans;Rave110VCL;dxBarRS23;pckUserControl_RT;cxSchedulerRibbonStyleEventEditorRS23;dxSkinOffice2013WhiteRS23;JvDotNetCtrls;uniGUI23Chart;dxPSTeeChartRS23;cxLibraryRS23;dxSkinVisualStudio2013LightRS23;vclib;cxPivotGridChartRS23;dxSkinSummer2008RS23;dxPSdxDBOCLnkRS23;dxGDIPlusRS23;dxSkinDarkSideRS23;FireDACDBXDriver;dxSkinFoggyRS23;dxSkinSevenRS23;ACBr_NFSeDanfseFR;vclx;dxSkinOffice2010SilverRS23;dxdborRS23;RESTBackendComponents;dxLayoutControlRS23;dxPSPrVwRibbonRS23;VCLRESTComponents;dxSkinDevExpressStyleRS23;uniGUI23m;TAcquireImage;dxSkinWhiteprintRS23;vclie;bindengine;CloudService;JvHMI;FireDACMySQLDriver;pckUCDataConnector;dxSkinOffice2013DarkGrayRS23;DataSnapClient;dxPScxPCProdRS23;bindcompdbx;uniGUI23VCL;ACBr_TCP;DBXSybaseASEDriver;IndyIPServer;ACBr_CTe;dxSkinPumpkinRS23;IndySystem;dsnapcon;JustifyRichEdit;ACBr_synapse;cxTreeListdxBarPopupMenuRS23;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;ACBr_SPEDImportar;dxSkinLilianRS23;Jcl;ACBr_SPED;ACBr_MDFe;dxBarDBNavRS23;dxFlowChartRS23;dxSkinOffice2016ColorfulRS23;DBXOdbcDriver;FireDACTDataDriver;FMXTee;fs23;soaprtl;DbxCommonDriver;dxSpreadSheetRS23;JvManagedThreads;Png;dxSkinOffice2007PinkRS23;dxPSdxSpreadSheetLnkRS23;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;dxSkinHighContrastRS23;dxSkinSevenClassicRS23;rtl;dxSkinTheAsphaltWorldRS23;DbxClientDriver;dxSkinDevExpressDarkStyleRS23;DBXSybaseASADriver;dxNavBarRS23;dxSkinMetropolisDarkRS23;JvTimeFramework;JvSystem;SampleListViewMultiDetailAppearancePackage;dxRichEditControlRS23;JvStdCtrls;appanalytics;cxPivotGridRS23;dxSkinsdxDLPainterRS23;IndyIPClient;dxRibbonRS23;dxPScxVGridLnkRS23;bindcompvcl;frxDB23;dxSkinOffice2007SilverRS23;dxPScxTLLnkRS23;dxMapControlRS23;TeeUI;JvDocking;JvPascalInterpreter;VclSmp;dxPScxSchedulerLnkRS23;cxTreeListRS23;FireDACODBCDriver;JclVcl;DataSnapIndy10ServerTransport;dxRibbonCustomizationFormRS23;dxPSRichEditControlLnkRS23;ACBr_Boleto;dxBarExtDBItemsRS23;DataSnapProviderClient;FireDACMongoDBDriver;dxSkiniMaginaryRS23;frx23;dxSpellCheckerRS23;JvControls;dxSkinsdxBarPainterRS23;ACBr_NFSe;JvPrintPreview;dxSkinCoffeeRS23;DataSnapServerMidas;RESTComponents;DBXInterBaseDriver;dxADOServerModeRS23;emsclientfiredac;DataSnapFireDAC;svnui;dxmdsRS23;dxPSDBTeeChartRS23;dxdbtrRS23;dxSkinLiquidSkyRS23;dxSkinSpringTimeRS23;JvGlobus;dxPSCoreRS23;dxSkinscxPCPainterRS23;DBXMSSQLDriver;JvMM;dxSkinXmas2008BlueRS23;DatasnapConnectorsFreePascal;bindcompfmx;JvNet;DBXOracleDriver;dxSkinSilverRS23;dxSkinValentineRS23;inetdb;JvAppFrm;ACBr_Diversos;ACBr_TXTComum;FmxTeeUI;dxBarExtItemsRS23;FireDACIBDriver;fmx;fmxdae;dxServerModeRS23;ACBr_CTeDacteFR;dxPsPrVwAdvRS23;dxSkinOffice2010BlackRS23;JvWizards;cxPageControlRS23;dxSkinStardustRS23;cxSchedulerGridRS23;dbexpress;IndyCore;dxSkinSharpPlusRS23;JvPageComps;dsnap;DataSnapCommon;emsclient;FireDACCommon;dxSkinOffice2010BlueRS23;JvDB;dxSkinVS2010RS23;dxSkinMetropolisRS23;DataSnapConnectors;cxVerticalGridRS23;soapserver;dxSkinCaramelRS23;frxTee23;dxTileControlRS23;JclDeveloperTools;cxGridRS23;SampleListViewRatingsAppearancePackage;FireDACOracleDriver;DBXMySQLDriver;JvCmp;pckUCMidasConn;DBXFirebirdDriver;ACBr_Sintegra;FireDACCommonDriver;RDPrint;inet;IndyIPCommon;JvCustom;dxSkinDarkRoomRS23;dxDockingRS23;vcl;dxSkinOffice2007GreenRS23;dxPScxExtCommonRS23;JvXPCtrls;dxSkinsCoreRS23;FireDACDb2Driver;dxThemeRS23;dxSkinsdxRibbonPainterRS23;dxSkinVisualStudio2013BlueRS23;RtmRxCtl230;mxExport_Seattle;pckUCIBXConn;dxSkinMoneyTwinsRS23;pckHistorico;dxPSdxFCLnkRS23;dxtrmdRS23;TeeDB;FireDAC;cxSchedulerTreeBrowserRS23;JvCore;ACBr_Comum;dxFireDACServerModeRS23;dxSkinBlueRS23;JvCrypt;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;cxEditorsRS23;dxSkinGlassOceansRS23;JvDlgs;JvRuntimeDesign;dxSkinsdxNavBarPainterRS23;dxGaugeControlRS23;ibxpress;Tee;cxPivotGridOLAPRS23;DataSnapServer;dxSkinSharpRS23;mxNativeExcel_Seattle;ibxbindings;RtmRxDB230;vclwinx;FireDACDSDriver;ACBr_OpenSSL;dxSkinBlueprintRS23;pckMD5;ACBr_DFeComum;CustomIPTransport;vcldsnap;dxSkinOffice2007BlackRS23;dxSkinOffice2013LightGrayRS23;bindcomp;fgx;ACBr_Serial;DBXInformixDriver;dxPSdxGaugeControlLnkRS23;dxPScxPivotGridLnkRS23;dxorgcRS23;dxPSdxDBTVLnkRS23;vclribbon;dbxcds;FreeBoleto_D11;ACBr_NFCeECFVirtual;adortl;ACBr_BoletoFR;dxComnRS23;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;cxExportRS23;dxSkinOffice2016DarkRS23;JclContainers;dxSkinVisualStudio2013DarkRS23;dxSkinscxSchedulerPainterRS23;fmxase;$(DCC_UsePackage)
58 | 1033
59 | CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)
60 | true
61 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
62 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
63 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
64 |
65 |
66 | DEBUG;$(DCC_Define)
67 | true
68 | false
69 | true
70 | true
71 | true
72 |
73 |
74 | ..\..\lib;..\..\src;$(DCC_UnitSearchPath)
75 | 1033
76 | true
77 | true
78 | false
79 | Debug
80 | PerMonitor
81 | D:\Projetos\WebView\
82 |
83 |
84 | false
85 | RELEASE;$(DCC_Define)
86 | 0
87 | 0
88 |
89 |
90 | true
91 | PerMonitor
92 |
93 |
94 |
95 | MainSource
96 |
97 |
98 |
99 | dfm
100 |
101 |
102 |
103 | ResourceItem
104 | RCDATA
105 | routes
106 |
107 |
108 | Cfg_2
109 | Base
110 |
111 |
112 | Base
113 |
114 |
115 | Cfg_1
116 | Base
117 |
118 |
119 |
120 | Delphi.Personality.12
121 | Application
122 |
123 |
124 |
125 | DBExpress Enterprise Data Explorer Integration
126 | Microsoft Office 2000 Sample Automation Server Wrapper Components
127 | Microsoft Office XP Sample Automation Server Wrapper Components
128 | ACBr - DANFe em FastReport - (http://www.projetoacbr.com.br/)
129 | ACBr - DACTe em FastReport - (http://www.projetoacbr.com.br/)
130 | ACBr - DANFSe em FastReport - (http://www.projetoacbr.com.br/)
131 | ACBr - Boleto Impressão em FastReport - (http://www.projetoacbr.com.br/)
132 | ACBr - DAMDFe em FastReport - (http://www.projetoacbr.com.br/)
133 | ACBr - GNRE Impressão da Guia em FastReport - (http://www.projetoacbr.com.br/)
134 |
135 |
136 | SimpleStaticHTML_EAS.dpr
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 | 1
145 |
146 |
147 | 1
148 |
149 |
150 |
151 |
152 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
153 | 1
154 |
155 |
156 |
157 |
158 | classes
159 | 1
160 |
161 |
162 |
163 |
164 | Contents\MacOS
165 | 0
166 |
167 |
168 | 1
169 |
170 |
171 | Contents\MacOS
172 | 1
173 |
174 |
175 |
176 |
177 | res\drawable-xxhdpi
178 | 1
179 |
180 |
181 |
182 |
183 | library\lib\mips
184 | 1
185 |
186 |
187 |
188 |
189 | 1
190 |
191 |
192 | 1
193 |
194 |
195 | 1
196 |
197 |
198 |
199 |
200 | Contents\Resources
201 | 1
202 |
203 |
204 |
205 |
206 | 0
207 |
208 |
209 | 1
210 |
211 |
212 | Contents\MacOS
213 | 1
214 |
215 |
216 | 1
217 |
218 |
219 | library\lib\armeabi-v7a
220 | 1
221 |
222 |
223 | 1
224 |
225 |
226 |
227 |
228 | 0
229 |
230 |
231 | Contents\MacOS
232 | 1
233 | .framework
234 |
235 |
236 |
237 |
238 | 1
239 |
240 |
241 | 1
242 |
243 |
244 |
245 |
246 | 1
247 |
248 |
249 | 1
250 |
251 |
252 | 1
253 |
254 |
255 |
256 |
257 | 1
258 |
259 |
260 | 1
261 |
262 |
263 | 1
264 |
265 |
266 |
267 |
268 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
269 | 1
270 |
271 |
272 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
273 | 1
274 |
275 |
276 |
277 |
278 | library\lib\x86
279 | 1
280 |
281 |
282 |
283 |
284 | res\xml
285 | 1
286 |
287 |
288 |
289 |
290 | res\values-v21
291 | 1
292 |
293 |
294 |
295 |
296 | library\lib\armeabi
297 | 1
298 |
299 |
300 |
301 |
302 | 1
303 |
304 |
305 | 1
306 |
307 |
308 | 1
309 |
310 |
311 |
312 |
313 | 1
314 |
315 |
316 | 1
317 |
318 |
319 | 1
320 |
321 |
322 |
323 |
324 | 0
325 |
326 |
327 | 1
328 |
329 |
330 | Contents\MacOS
331 | 1
332 |
333 |
334 |
335 |
336 | 1
337 |
338 |
339 | 1
340 |
341 |
342 | 1
343 |
344 |
345 |
346 |
347 | res\drawable-normal
348 | 1
349 |
350 |
351 |
352 |
353 | res\drawable-large
354 | 1
355 |
356 |
357 |
358 |
359 | res\drawable-xhdpi
360 | 1
361 |
362 |
363 |
364 |
365 | 1
366 |
367 |
368 | 1
369 |
370 |
371 | 1
372 |
373 |
374 |
375 |
376 | Assets
377 | 1
378 |
379 |
380 | Assets
381 | 1
382 |
383 |
384 |
385 |
386 | ../
387 | 1
388 |
389 |
390 | ../
391 | 1
392 |
393 |
394 |
395 |
396 | library\lib\armeabi-v7a
397 | 1
398 |
399 |
400 |
401 |
402 | res\drawable-hdpi
403 | 1
404 |
405 |
406 |
407 |
408 | Contents
409 | 1
410 |
411 |
412 |
413 |
414 | ../
415 | 1
416 |
417 |
418 |
419 |
420 | Assets
421 | 1
422 |
423 |
424 | Assets
425 | 1
426 |
427 |
428 |
429 |
430 | res\values
431 | 1
432 |
433 |
434 |
435 |
436 | 1
437 |
438 |
439 | 1
440 |
441 |
442 | 1
443 |
444 |
445 |
446 |
447 | res\drawable-small
448 | 1
449 |
450 |
451 |
452 |
453 | res\drawable
454 | 1
455 |
456 |
457 |
458 |
459 | 1
460 |
461 |
462 | 1
463 |
464 |
465 | 1
466 |
467 |
468 |
469 |
470 | 1
471 |
472 |
473 |
474 |
475 | res\drawable
476 | 1
477 |
478 |
479 |
480 |
481 | 0
482 |
483 |
484 | 0
485 |
486 |
487 | Contents\Resources\StartUp\
488 | 0
489 |
490 |
491 | 0
492 |
493 |
494 | 0
495 |
496 |
497 | 0
498 |
499 |
500 |
501 |
502 | library\lib\armeabi-v7a
503 | 1
504 |
505 |
506 |
507 |
508 | res\drawable-mdpi
509 | 1
510 |
511 |
512 |
513 |
514 | 0
515 | .bpl
516 |
517 |
518 | 1
519 | .dylib
520 |
521 |
522 | Contents\MacOS
523 | 1
524 | .dylib
525 |
526 |
527 | 1
528 | .dylib
529 |
530 |
531 | 1
532 | .dylib
533 |
534 |
535 |
536 |
537 | res\drawable-xlarge
538 | 1
539 |
540 |
541 |
542 |
543 | res\drawable-ldpi
544 | 1
545 |
546 |
547 |
548 |
549 | 0
550 | .dll;.bpl
551 |
552 |
553 | 1
554 | .dylib
555 |
556 |
557 | Contents\MacOS
558 | 1
559 | .dylib
560 |
561 |
562 | 1
563 | .dylib
564 |
565 |
566 | 1
567 | .dylib
568 |
569 |
570 |
571 |
572 |
573 |
574 |
575 |
576 |
577 |
578 |
579 |
580 |
581 | True
582 |
583 |
584 | 12
585 |
586 |
587 |
588 |
589 |
590 |
--------------------------------------------------------------------------------
/samples/hello/server_EAS.dproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {4CA3C810-2AC8-4E74-99C9-CA921CB7437A}
4 | 18.0
5 | VCL
6 | server_EAS.dpr
7 | True
8 | Debug
9 | Win32
10 | 1
11 | Application
12 |
13 |
14 | true
15 |
16 |
17 | true
18 | Base
19 | true
20 |
21 |
22 | true
23 | Base
24 | true
25 |
26 |
27 | true
28 | Base
29 | true
30 |
31 |
32 | true
33 | Cfg_1
34 | true
35 | true
36 |
37 |
38 | true
39 | Base
40 | true
41 |
42 |
43 | true
44 | Cfg_2
45 | true
46 | true
47 |
48 |
49 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)
50 | $(BDS)\bin\delphi_PROJECTICON.ico
51 | server_EAS
52 | .\$(Platform)\$(Config)
53 | .\$(Platform)\$(Config)
54 | false
55 | false
56 | false
57 | false
58 | false
59 |
60 |
61 | $(BDS)\bin\default_app.manifest
62 | DBXSqliteDriver;DBXDb2Driver;OCX_Servers;dxCoreRS23;vclactnband;frxe23;vclFireDAC;dxPSLnksRS23;dxPSdxLCLnkRS23;tethering;cxDataRS23;dxPSdxOCLnkRS23;dxTabbedMDIRS23;FireDACADSDriver;dxSkinBlackRS23;dxSkinLondonLiquidSkyRS23;JvPluginSystem;pckUserControl_DT;dxDBXServerModeRS23;dxHttpIndyRequestRS23;dxPScxGridLnkRS23;cxSchedulerRS23;FireDACMSSQLDriver;vcltouch;ACBr_NFe;ACBr_NFeDanfeFR;vcldb;Intraweb;svn;dxWizardControlRS23;dxPScxCommonRS23;dxSkinMcSkinRS23;JvBands;ACBr_NFeDanfeESCPOS;dxSkinOffice2007BlueRS23;JvJans;Rave110VCL;dxBarRS23;pckUserControl_RT;cxSchedulerRibbonStyleEventEditorRS23;dxSkinOffice2013WhiteRS23;JvDotNetCtrls;uniGUI23Chart;dxPSTeeChartRS23;cxLibraryRS23;dxSkinVisualStudio2013LightRS23;vclib;cxPivotGridChartRS23;dxSkinSummer2008RS23;dxPSdxDBOCLnkRS23;dxGDIPlusRS23;dxSkinDarkSideRS23;FireDACDBXDriver;dxSkinFoggyRS23;dxSkinSevenRS23;ACBr_NFSeDanfseFR;vclx;dxSkinOffice2010SilverRS23;dxdborRS23;RESTBackendComponents;dxLayoutControlRS23;dxPSPrVwRibbonRS23;VCLRESTComponents;dxSkinDevExpressStyleRS23;uniGUI23m;TAcquireImage;dxSkinWhiteprintRS23;vclie;bindengine;CloudService;JvHMI;FireDACMySQLDriver;pckUCDataConnector;dxSkinOffice2013DarkGrayRS23;DataSnapClient;dxPScxPCProdRS23;bindcompdbx;uniGUI23VCL;ACBr_TCP;DBXSybaseASEDriver;IndyIPServer;ACBr_CTe;dxSkinPumpkinRS23;IndySystem;dsnapcon;JustifyRichEdit;ACBr_synapse;cxTreeListdxBarPopupMenuRS23;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;ACBr_SPEDImportar;dxSkinLilianRS23;Jcl;ACBr_SPED;ACBr_MDFe;dxBarDBNavRS23;dxFlowChartRS23;dxSkinOffice2016ColorfulRS23;DBXOdbcDriver;FireDACTDataDriver;FMXTee;fs23;soaprtl;DbxCommonDriver;dxSpreadSheetRS23;JvManagedThreads;Png;dxSkinOffice2007PinkRS23;dxPSdxSpreadSheetLnkRS23;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;dxSkinHighContrastRS23;dxSkinSevenClassicRS23;rtl;dxSkinTheAsphaltWorldRS23;DbxClientDriver;dxSkinDevExpressDarkStyleRS23;DBXSybaseASADriver;dxNavBarRS23;dxSkinMetropolisDarkRS23;JvTimeFramework;JvSystem;SampleListViewMultiDetailAppearancePackage;dxRichEditControlRS23;JvStdCtrls;appanalytics;cxPivotGridRS23;dxSkinsdxDLPainterRS23;IndyIPClient;dxRibbonRS23;dxPScxVGridLnkRS23;bindcompvcl;frxDB23;dxSkinOffice2007SilverRS23;dxPScxTLLnkRS23;dxMapControlRS23;TeeUI;JvDocking;JvPascalInterpreter;VclSmp;dxPScxSchedulerLnkRS23;cxTreeListRS23;FireDACODBCDriver;JclVcl;DataSnapIndy10ServerTransport;dxRibbonCustomizationFormRS23;dxPSRichEditControlLnkRS23;ACBr_Boleto;dxBarExtDBItemsRS23;DataSnapProviderClient;FireDACMongoDBDriver;dxSkiniMaginaryRS23;frx23;dxSpellCheckerRS23;JvControls;dxSkinsdxBarPainterRS23;ACBr_NFSe;JvPrintPreview;dxSkinCoffeeRS23;DataSnapServerMidas;RESTComponents;DBXInterBaseDriver;dxADOServerModeRS23;emsclientfiredac;DataSnapFireDAC;svnui;dxmdsRS23;dxPSDBTeeChartRS23;dxdbtrRS23;dxSkinLiquidSkyRS23;dxSkinSpringTimeRS23;JvGlobus;dxPSCoreRS23;dxSkinscxPCPainterRS23;DBXMSSQLDriver;JvMM;dxSkinXmas2008BlueRS23;DatasnapConnectorsFreePascal;bindcompfmx;JvNet;DBXOracleDriver;dxSkinSilverRS23;dxSkinValentineRS23;inetdb;JvAppFrm;ACBr_Diversos;ACBr_TXTComum;FmxTeeUI;dxBarExtItemsRS23;FireDACIBDriver;fmx;fmxdae;dxServerModeRS23;ACBr_CTeDacteFR;dxPsPrVwAdvRS23;dxSkinOffice2010BlackRS23;JvWizards;cxPageControlRS23;dxSkinStardustRS23;cxSchedulerGridRS23;dbexpress;IndyCore;dxSkinSharpPlusRS23;JvPageComps;dsnap;DataSnapCommon;emsclient;FireDACCommon;dxSkinOffice2010BlueRS23;JvDB;dxSkinVS2010RS23;dxSkinMetropolisRS23;DataSnapConnectors;cxVerticalGridRS23;soapserver;dxSkinCaramelRS23;frxTee23;dxTileControlRS23;JclDeveloperTools;cxGridRS23;SampleListViewRatingsAppearancePackage;FireDACOracleDriver;DBXMySQLDriver;JvCmp;pckUCMidasConn;DBXFirebirdDriver;ACBr_Sintegra;FireDACCommonDriver;RDPrint;inet;IndyIPCommon;JvCustom;dxSkinDarkRoomRS23;dxDockingRS23;vcl;dxSkinOffice2007GreenRS23;dxPScxExtCommonRS23;JvXPCtrls;dxSkinsCoreRS23;FireDACDb2Driver;dxThemeRS23;dxSkinsdxRibbonPainterRS23;dxSkinVisualStudio2013BlueRS23;RtmRxCtl230;mxExport_Seattle;pckUCIBXConn;dxSkinMoneyTwinsRS23;pckHistorico;dxPSdxFCLnkRS23;dxtrmdRS23;TeeDB;FireDAC;cxSchedulerTreeBrowserRS23;JvCore;ACBr_Comum;dxFireDACServerModeRS23;dxSkinBlueRS23;JvCrypt;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;cxEditorsRS23;dxSkinGlassOceansRS23;JvDlgs;JvRuntimeDesign;dxSkinsdxNavBarPainterRS23;dxGaugeControlRS23;ibxpress;Tee;cxPivotGridOLAPRS23;DataSnapServer;dxSkinSharpRS23;mxNativeExcel_Seattle;ibxbindings;RtmRxDB230;vclwinx;FireDACDSDriver;ACBr_OpenSSL;dxSkinBlueprintRS23;pckMD5;ACBr_DFeComum;CustomIPTransport;vcldsnap;dxSkinOffice2007BlackRS23;dxSkinOffice2013LightGrayRS23;bindcomp;fgx;ACBr_Serial;DBXInformixDriver;dxPSdxGaugeControlLnkRS23;dxPScxPivotGridLnkRS23;dxorgcRS23;dxPSdxDBTVLnkRS23;vclribbon;dbxcds;FreeBoleto_D11;ACBr_NFCeECFVirtual;adortl;ACBr_BoletoFR;dxComnRS23;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;cxExportRS23;dxSkinOffice2016DarkRS23;JclContainers;dxSkinVisualStudio2013DarkRS23;dxSkinscxSchedulerPainterRS23;fmxase;$(DCC_UsePackage)
63 | 1033
64 | CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=
65 | true
66 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
67 |
68 |
69 | DBXSqliteDriver;DBXDb2Driver;vclactnband;vclFireDAC;dxPSLnksRS23;dxPSdxLCLnkRS23;tethering;cxDataRS23;dxPSdxOCLnkRS23;dxTabbedMDIRS23;FireDACADSDriver;dxSkinBlackRS23;dxSkinLondonLiquidSkyRS23;pckUserControl_DT;dxDBXServerModeRS23;dxHttpIndyRequestRS23;dxPScxGridLnkRS23;cxSchedulerRS23;FireDACMSSQLDriver;vcltouch;vcldb;Intraweb;dxWizardControlRS23;dxPScxCommonRS23;dxSkinMcSkinRS23;dxSkinOffice2007BlueRS23;dxBarRS23;cxSchedulerRibbonStyleEventEditorRS23;dxSkinOffice2013WhiteRS23;uniGUI23Chart;dxPSTeeChartRS23;cxLibraryRS23;dxSkinVisualStudio2013LightRS23;vclib;cxPivotGridChartRS23;dxSkinSummer2008RS23;dxPSdxDBOCLnkRS23;dxGDIPlusRS23;dxSkinDarkSideRS23;FireDACDBXDriver;dxSkinFoggyRS23;dxSkinSevenRS23;vclx;dxSkinOffice2010SilverRS23;dxdborRS23;RESTBackendComponents;dxLayoutControlRS23;dxPSPrVwRibbonRS23;VCLRESTComponents;dxSkinDevExpressStyleRS23;uniGUI23m;dxSkinWhiteprintRS23;vclie;bindengine;CloudService;FireDACMySQLDriver;pckUCDataConnector;dxSkinOffice2013DarkGrayRS23;DataSnapClient;dxPScxPCProdRS23;bindcompdbx;uniGUI23VCL;DBXSybaseASEDriver;IndyIPServer;dxSkinPumpkinRS23;IndySystem;dsnapcon;cxTreeListdxBarPopupMenuRS23;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;dxSkinLilianRS23;dxBarDBNavRS23;dxFlowChartRS23;dxSkinOffice2016ColorfulRS23;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;dxSpreadSheetRS23;dxSkinOffice2007PinkRS23;dxPSdxSpreadSheetLnkRS23;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;dxSkinHighContrastRS23;dxSkinSevenClassicRS23;rtl;dxSkinTheAsphaltWorldRS23;DbxClientDriver;dxSkinDevExpressDarkStyleRS23;DBXSybaseASADriver;dxNavBarRS23;dxSkinMetropolisDarkRS23;dxRichEditControlRS23;appanalytics;cxPivotGridRS23;dxSkinsdxDLPainterRS23;IndyIPClient;dxRibbonRS23;dxPScxVGridLnkRS23;bindcompvcl;dxSkinOffice2007SilverRS23;dxPScxTLLnkRS23;dxMapControlRS23;TeeUI;VclSmp;dxPScxSchedulerLnkRS23;cxTreeListRS23;FireDACODBCDriver;DataSnapIndy10ServerTransport;dxRibbonCustomizationFormRS23;dxPSRichEditControlLnkRS23;dxBarExtDBItemsRS23;DataSnapProviderClient;FireDACMongoDBDriver;dxSkiniMaginaryRS23;dxSpellCheckerRS23;dxSkinsdxBarPainterRS23;dxSkinCoffeeRS23;DataSnapServerMidas;RESTComponents;DBXInterBaseDriver;dxADOServerModeRS23;emsclientfiredac;DataSnapFireDAC;dxmdsRS23;dxPSDBTeeChartRS23;dxdbtrRS23;dxSkinLiquidSkyRS23;dxSkinSpringTimeRS23;dxPSCoreRS23;dxSkinscxPCPainterRS23;DBXMSSQLDriver;dxSkinXmas2008BlueRS23;DatasnapConnectorsFreePascal;bindcompfmx;DBXOracleDriver;dxSkinSilverRS23;dxSkinValentineRS23;inetdb;FmxTeeUI;dxBarExtItemsRS23;FireDACIBDriver;fmx;fmxdae;dxServerModeRS23;dxPsPrVwAdvRS23;dxSkinOffice2010BlackRS23;cxPageControlRS23;dxSkinStardustRS23;cxSchedulerGridRS23;dbexpress;IndyCore;dxSkinSharpPlusRS23;dsnap;DataSnapCommon;emsclient;FireDACCommon;dxSkinOffice2010BlueRS23;dxSkinVS2010RS23;dxSkinMetropolisRS23;DataSnapConnectors;cxVerticalGridRS23;soapserver;dxSkinCaramelRS23;dxTileControlRS23;cxGridRS23;FireDACOracleDriver;DBXMySQLDriver;pckUCMidasConn;DBXFirebirdDriver;FireDACCommonDriver;inet;IndyIPCommon;dxSkinDarkRoomRS23;dxDockingRS23;vcl;dxSkinOffice2007GreenRS23;dxPScxExtCommonRS23;dxSkinsCoreRS23;FireDACDb2Driver;dxThemeRS23;dxSkinsdxRibbonPainterRS23;dxSkinVisualStudio2013BlueRS23;pckUCIBXConn;dxSkinMoneyTwinsRS23;pckHistorico;dxPSdxFCLnkRS23;dxtrmdRS23;TeeDB;FireDAC;cxSchedulerTreeBrowserRS23;dxFireDACServerModeRS23;dxSkinBlueRS23;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;cxEditorsRS23;dxSkinGlassOceansRS23;dxSkinsdxNavBarPainterRS23;dxGaugeControlRS23;ibxpress;Tee;cxPivotGridOLAPRS23;DataSnapServer;dxSkinSharpRS23;ibxbindings;vclwinx;FireDACDSDriver;dxSkinBlueprintRS23;pckMD5;CustomIPTransport;vcldsnap;dxSkinOffice2007BlackRS23;dxSkinOffice2013LightGrayRS23;bindcomp;DBXInformixDriver;dxPSdxGaugeControlLnkRS23;dxPScxPivotGridLnkRS23;dxorgcRS23;dxPSdxDBTVLnkRS23;vclribbon;dbxcds;adortl;dxComnRS23;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;cxExportRS23;dxSkinOffice2016DarkRS23;dxSkinVisualStudio2013DarkRS23;dxSkinscxSchedulerPainterRS23;fmxase;$(DCC_UsePackage)
70 |
71 |
72 | DEBUG;$(DCC_Define)
73 | true
74 | false
75 | true
76 | true
77 | true
78 |
79 |
80 | ..\..\lib;..\..\src;$(DCC_UnitSearchPath)
81 | 1033
82 | true
83 | true
84 | true
85 | false
86 |
87 |
88 | false
89 | RELEASE;$(DCC_Define)
90 | 0
91 | 0
92 |
93 |
94 | true
95 | true
96 |
97 |
98 |
99 | MainSource
100 |
101 |
102 |
103 | dfm
104 |
105 |
106 |
107 | ResourceItem
108 | RCDATA
109 | routes
110 |
111 |
112 | Cfg_2
113 | Base
114 |
115 |
116 | Base
117 |
118 |
119 | Cfg_1
120 | Base
121 |
122 |
123 |
124 | Delphi.Personality.12
125 | Application
126 |
127 |
128 |
129 | (untitled)
130 | (untitled)
131 | Embarcadero C++Builder Office 2000 Servers Package
132 | Embarcadero C++Builder Office XP Servers Package
133 | Microsoft Office 2000 Sample Automation Server Wrapper Components
134 | Microsoft Office XP Sample Automation Server Wrapper Components
135 |
136 |
137 | server_EAS.dpr
138 |
139 |
140 |
141 |
142 |
143 | .\
144 | true
145 |
146 |
147 |
148 |
149 | server_EAS.exe
150 | true
151 |
152 |
153 |
154 |
155 | 1
156 |
157 |
158 | 1
159 |
160 |
161 |
162 |
163 | Contents\Resources
164 | 1
165 |
166 |
167 |
168 |
169 | classes
170 | 1
171 |
172 |
173 |
174 |
175 | Contents\MacOS
176 | 0
177 |
178 |
179 | 1
180 |
181 |
182 | Contents\MacOS
183 | 1
184 |
185 |
186 |
187 |
188 | 1
189 |
190 |
191 | 1
192 |
193 |
194 | 1
195 |
196 |
197 |
198 |
199 | res\drawable-xxhdpi
200 | 1
201 |
202 |
203 |
204 |
205 | library\lib\mips
206 | 1
207 |
208 |
209 |
210 |
211 | 0
212 |
213 |
214 | 1
215 |
216 |
217 | Contents\MacOS
218 | 1
219 |
220 |
221 | 1
222 |
223 |
224 | library\lib\armeabi-v7a
225 | 1
226 |
227 |
228 | 1
229 |
230 |
231 |
232 |
233 | 0
234 |
235 |
236 | Contents\MacOS
237 | 1
238 | .framework
239 |
240 |
241 |
242 |
243 | 1
244 |
245 |
246 | 1
247 |
248 |
249 | 1
250 |
251 |
252 |
253 |
254 | 1
255 |
256 |
257 | 1
258 |
259 |
260 | 1
261 |
262 |
263 |
264 |
265 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
266 | 1
267 |
268 |
269 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
270 | 1
271 |
272 |
273 |
274 |
275 | library\lib\x86
276 | 1
277 |
278 |
279 |
280 |
281 | 1
282 |
283 |
284 | 1
285 |
286 |
287 | 1
288 |
289 |
290 |
291 |
292 | 1
293 |
294 |
295 | 1
296 |
297 |
298 | 1
299 |
300 |
301 |
302 |
303 | library\lib\armeabi
304 | 1
305 |
306 |
307 |
308 |
309 | 0
310 |
311 |
312 | 1
313 |
314 |
315 | Contents\MacOS
316 | 1
317 |
318 |
319 |
320 |
321 | 1
322 |
323 |
324 | 1
325 |
326 |
327 | 1
328 |
329 |
330 |
331 |
332 | res\drawable-normal
333 | 1
334 |
335 |
336 |
337 |
338 | res\drawable-xhdpi
339 | 1
340 |
341 |
342 |
343 |
344 | res\drawable-large
345 | 1
346 |
347 |
348 |
349 |
350 | 1
351 |
352 |
353 | 1
354 |
355 |
356 | 1
357 |
358 |
359 |
360 |
361 | ../
362 | 1
363 |
364 |
365 | ../
366 | 1
367 |
368 |
369 |
370 |
371 | res\drawable-hdpi
372 | 1
373 |
374 |
375 |
376 |
377 | library\lib\armeabi-v7a
378 | 1
379 |
380 |
381 |
382 |
383 | Contents
384 | 1
385 |
386 |
387 |
388 |
389 | ../
390 | 1
391 |
392 |
393 |
394 |
395 | 1
396 |
397 |
398 | 1
399 |
400 |
401 | 1
402 |
403 |
404 |
405 |
406 | res\values
407 | 1
408 |
409 |
410 |
411 |
412 | res\drawable-small
413 | 1
414 |
415 |
416 |
417 |
418 | res\drawable
419 | 1
420 |
421 |
422 |
423 |
424 | 1
425 |
426 |
427 | 1
428 |
429 |
430 | 1
431 |
432 |
433 |
434 |
435 | 1
436 |
437 |
438 |
439 |
440 | res\drawable
441 | 1
442 |
443 |
444 |
445 |
446 | 0
447 |
448 |
449 | 0
450 |
451 |
452 | Contents\Resources\StartUp\
453 | 0
454 |
455 |
456 | 0
457 |
458 |
459 | 0
460 |
461 |
462 | 0
463 |
464 |
465 |
466 |
467 | library\lib\armeabi-v7a
468 | 1
469 |
470 |
471 |
472 |
473 | 0
474 | .bpl
475 |
476 |
477 | 1
478 | .dylib
479 |
480 |
481 | Contents\MacOS
482 | 1
483 | .dylib
484 |
485 |
486 | 1
487 | .dylib
488 |
489 |
490 | 1
491 | .dylib
492 |
493 |
494 |
495 |
496 | res\drawable-mdpi
497 | 1
498 |
499 |
500 |
501 |
502 | res\drawable-xlarge
503 | 1
504 |
505 |
506 |
507 |
508 | res\drawable-ldpi
509 | 1
510 |
511 |
512 |
513 |
514 | 0
515 | .dll;.bpl
516 |
517 |
518 | 1
519 | .dylib
520 |
521 |
522 | Contents\MacOS
523 | 1
524 | .dylib
525 |
526 |
527 | 1
528 | .dylib
529 |
530 |
531 | 1
532 | .dylib
533 |
534 |
535 |
536 |
537 |
538 |
539 |
540 |
541 |
542 |
543 |
544 | True
545 | False
546 |
547 |
548 | 12
549 |
550 |
551 |
552 |
553 |
554 |
--------------------------------------------------------------------------------
/samples/GET QueryParam/GetQueryParam.dproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {EFAD681A-8FDD-4C7F-AA32-665EBA8DC6C1}
4 | 18.0
5 | VCL
6 | GetQueryParam.dpr
7 | True
8 | Debug
9 | Win32
10 | 1
11 | Application
12 |
13 |
14 | true
15 |
16 |
17 | true
18 | Base
19 | true
20 |
21 |
22 | true
23 | Base
24 | true
25 |
26 |
27 | true
28 | Base
29 | true
30 |
31 |
32 | true
33 | Cfg_1
34 | true
35 | true
36 |
37 |
38 | true
39 | Base
40 | true
41 |
42 |
43 | true
44 | Cfg_2
45 | true
46 | true
47 |
48 |
49 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)
50 | $(BDS)\bin\delphi_PROJECTICON.ico
51 | GetQueryParam
52 | .\$(Platform)\$(Config)
53 | .\$(Platform)\$(Config)
54 | false
55 | false
56 | false
57 | false
58 | false
59 |
60 |
61 | $(BDS)\bin\default_app.manifest
62 | DBXSqliteDriver;DBXDb2Driver;OCX_Servers;dxCoreRS23;vclactnband;frxe23;vclFireDAC;dxPSLnksRS23;dxPSdxLCLnkRS23;tethering;cxDataRS23;dxPSdxOCLnkRS23;dxTabbedMDIRS23;FireDACADSDriver;dxSkinBlackRS23;dxSkinLondonLiquidSkyRS23;JvPluginSystem;pckUserControl_DT;dxDBXServerModeRS23;dxHttpIndyRequestRS23;dxPScxGridLnkRS23;cxSchedulerRS23;FireDACMSSQLDriver;vcltouch;ACBr_NFe;ACBr_NFeDanfeFR;vcldb;Intraweb;svn;dxWizardControlRS23;dxPScxCommonRS23;dxSkinMcSkinRS23;JvBands;ACBr_NFeDanfeESCPOS;dxSkinOffice2007BlueRS23;JvJans;Rave110VCL;dxBarRS23;pckUserControl_RT;cxSchedulerRibbonStyleEventEditorRS23;dxSkinOffice2013WhiteRS23;JvDotNetCtrls;uniGUI23Chart;dxPSTeeChartRS23;cxLibraryRS23;dxSkinVisualStudio2013LightRS23;vclib;cxPivotGridChartRS23;dxSkinSummer2008RS23;dxPSdxDBOCLnkRS23;dxGDIPlusRS23;dxSkinDarkSideRS23;FireDACDBXDriver;dxSkinFoggyRS23;dxSkinSevenRS23;ACBr_NFSeDanfseFR;vclx;dxSkinOffice2010SilverRS23;dxdborRS23;RESTBackendComponents;dxLayoutControlRS23;dxPSPrVwRibbonRS23;VCLRESTComponents;dxSkinDevExpressStyleRS23;uniGUI23m;TAcquireImage;dxSkinWhiteprintRS23;vclie;bindengine;CloudService;JvHMI;FireDACMySQLDriver;pckUCDataConnector;dxSkinOffice2013DarkGrayRS23;DataSnapClient;dxPScxPCProdRS23;bindcompdbx;uniGUI23VCL;ACBr_TCP;DBXSybaseASEDriver;IndyIPServer;ACBr_CTe;dxSkinPumpkinRS23;IndySystem;dsnapcon;JustifyRichEdit;ACBr_synapse;cxTreeListdxBarPopupMenuRS23;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;ACBr_SPEDImportar;dxSkinLilianRS23;Jcl;ACBr_SPED;ACBr_MDFe;dxBarDBNavRS23;dxFlowChartRS23;dxSkinOffice2016ColorfulRS23;DBXOdbcDriver;FireDACTDataDriver;FMXTee;fs23;soaprtl;DbxCommonDriver;dxSpreadSheetRS23;JvManagedThreads;Png;dxSkinOffice2007PinkRS23;dxPSdxSpreadSheetLnkRS23;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;dxSkinHighContrastRS23;dxSkinSevenClassicRS23;rtl;dxSkinTheAsphaltWorldRS23;DbxClientDriver;dxSkinDevExpressDarkStyleRS23;DBXSybaseASADriver;dxNavBarRS23;dxSkinMetropolisDarkRS23;JvTimeFramework;JvSystem;SampleListViewMultiDetailAppearancePackage;dxRichEditControlRS23;JvStdCtrls;appanalytics;cxPivotGridRS23;dxSkinsdxDLPainterRS23;IndyIPClient;dxRibbonRS23;dxPScxVGridLnkRS23;bindcompvcl;frxDB23;dxSkinOffice2007SilverRS23;dxPScxTLLnkRS23;dxMapControlRS23;TeeUI;JvDocking;JvPascalInterpreter;VclSmp;dxPScxSchedulerLnkRS23;cxTreeListRS23;FireDACODBCDriver;JclVcl;DataSnapIndy10ServerTransport;dxRibbonCustomizationFormRS23;dxPSRichEditControlLnkRS23;ACBr_Boleto;dxBarExtDBItemsRS23;DataSnapProviderClient;FireDACMongoDBDriver;dxSkiniMaginaryRS23;frx23;dxSpellCheckerRS23;JvControls;dxSkinsdxBarPainterRS23;ACBr_NFSe;JvPrintPreview;dxSkinCoffeeRS23;DataSnapServerMidas;RESTComponents;DBXInterBaseDriver;dxADOServerModeRS23;emsclientfiredac;DataSnapFireDAC;svnui;dxmdsRS23;dxPSDBTeeChartRS23;dxdbtrRS23;dxSkinLiquidSkyRS23;dxSkinSpringTimeRS23;JvGlobus;dxPSCoreRS23;dxSkinscxPCPainterRS23;DBXMSSQLDriver;JvMM;dxSkinXmas2008BlueRS23;DatasnapConnectorsFreePascal;bindcompfmx;JvNet;DBXOracleDriver;dxSkinSilverRS23;dxSkinValentineRS23;inetdb;JvAppFrm;ACBr_Diversos;ACBr_TXTComum;FmxTeeUI;dxBarExtItemsRS23;FireDACIBDriver;fmx;fmxdae;dxServerModeRS23;ACBr_CTeDacteFR;dxPsPrVwAdvRS23;dxSkinOffice2010BlackRS23;JvWizards;cxPageControlRS23;dxSkinStardustRS23;cxSchedulerGridRS23;dbexpress;IndyCore;dxSkinSharpPlusRS23;JvPageComps;dsnap;DataSnapCommon;emsclient;FireDACCommon;dxSkinOffice2010BlueRS23;JvDB;dxSkinVS2010RS23;dxSkinMetropolisRS23;DataSnapConnectors;cxVerticalGridRS23;soapserver;dxSkinCaramelRS23;frxTee23;dxTileControlRS23;JclDeveloperTools;cxGridRS23;SampleListViewRatingsAppearancePackage;FireDACOracleDriver;DBXMySQLDriver;JvCmp;pckUCMidasConn;DBXFirebirdDriver;ACBr_Sintegra;FireDACCommonDriver;RDPrint;inet;IndyIPCommon;JvCustom;dxSkinDarkRoomRS23;dxDockingRS23;vcl;dxSkinOffice2007GreenRS23;dxPScxExtCommonRS23;JvXPCtrls;dxSkinsCoreRS23;FireDACDb2Driver;dxThemeRS23;dxSkinsdxRibbonPainterRS23;dxSkinVisualStudio2013BlueRS23;RtmRxCtl230;mxExport_Seattle;pckUCIBXConn;dxSkinMoneyTwinsRS23;pckHistorico;dxPSdxFCLnkRS23;dxtrmdRS23;TeeDB;FireDAC;cxSchedulerTreeBrowserRS23;JvCore;ACBr_Comum;dxFireDACServerModeRS23;dxSkinBlueRS23;JvCrypt;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;cxEditorsRS23;dxSkinGlassOceansRS23;JvDlgs;JvRuntimeDesign;dxSkinsdxNavBarPainterRS23;dxGaugeControlRS23;ibxpress;Tee;cxPivotGridOLAPRS23;DataSnapServer;dxSkinSharpRS23;mxNativeExcel_Seattle;ibxbindings;RtmRxDB230;vclwinx;FireDACDSDriver;ACBr_OpenSSL;dxSkinBlueprintRS23;pckMD5;ACBr_DFeComum;CustomIPTransport;vcldsnap;dxSkinOffice2007BlackRS23;dxSkinOffice2013LightGrayRS23;bindcomp;fgx;ACBr_Serial;DBXInformixDriver;dxPSdxGaugeControlLnkRS23;dxPScxPivotGridLnkRS23;dxorgcRS23;dxPSdxDBTVLnkRS23;vclribbon;dbxcds;FreeBoleto_D11;ACBr_NFCeECFVirtual;adortl;ACBr_BoletoFR;dxComnRS23;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;cxExportRS23;dxSkinOffice2016DarkRS23;JclContainers;dxSkinVisualStudio2013DarkRS23;dxSkinscxSchedulerPainterRS23;fmxase;$(DCC_UsePackage)
63 | 1033
64 | CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=
65 | true
66 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
67 |
68 |
69 | DBXSqliteDriver;DBXDb2Driver;vclactnband;vclFireDAC;dxPSLnksRS23;dxPSdxLCLnkRS23;tethering;cxDataRS23;dxPSdxOCLnkRS23;dxTabbedMDIRS23;FireDACADSDriver;dxSkinBlackRS23;dxSkinLondonLiquidSkyRS23;pckUserControl_DT;dxDBXServerModeRS23;dxHttpIndyRequestRS23;dxPScxGridLnkRS23;cxSchedulerRS23;FireDACMSSQLDriver;vcltouch;vcldb;Intraweb;dxWizardControlRS23;dxPScxCommonRS23;dxSkinMcSkinRS23;dxSkinOffice2007BlueRS23;dxBarRS23;cxSchedulerRibbonStyleEventEditorRS23;dxSkinOffice2013WhiteRS23;uniGUI23Chart;dxPSTeeChartRS23;cxLibraryRS23;dxSkinVisualStudio2013LightRS23;vclib;cxPivotGridChartRS23;dxSkinSummer2008RS23;dxPSdxDBOCLnkRS23;dxGDIPlusRS23;dxSkinDarkSideRS23;FireDACDBXDriver;dxSkinFoggyRS23;dxSkinSevenRS23;vclx;dxSkinOffice2010SilverRS23;dxdborRS23;RESTBackendComponents;dxLayoutControlRS23;dxPSPrVwRibbonRS23;VCLRESTComponents;dxSkinDevExpressStyleRS23;uniGUI23m;dxSkinWhiteprintRS23;vclie;bindengine;CloudService;FireDACMySQLDriver;pckUCDataConnector;dxSkinOffice2013DarkGrayRS23;DataSnapClient;dxPScxPCProdRS23;bindcompdbx;uniGUI23VCL;DBXSybaseASEDriver;IndyIPServer;dxSkinPumpkinRS23;IndySystem;dsnapcon;cxTreeListdxBarPopupMenuRS23;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;dxSkinLilianRS23;dxBarDBNavRS23;dxFlowChartRS23;dxSkinOffice2016ColorfulRS23;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;dxSpreadSheetRS23;dxSkinOffice2007PinkRS23;dxPSdxSpreadSheetLnkRS23;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;dxSkinHighContrastRS23;dxSkinSevenClassicRS23;rtl;dxSkinTheAsphaltWorldRS23;DbxClientDriver;dxSkinDevExpressDarkStyleRS23;DBXSybaseASADriver;dxNavBarRS23;dxSkinMetropolisDarkRS23;dxRichEditControlRS23;appanalytics;cxPivotGridRS23;dxSkinsdxDLPainterRS23;IndyIPClient;dxRibbonRS23;dxPScxVGridLnkRS23;bindcompvcl;dxSkinOffice2007SilverRS23;dxPScxTLLnkRS23;dxMapControlRS23;TeeUI;VclSmp;dxPScxSchedulerLnkRS23;cxTreeListRS23;FireDACODBCDriver;DataSnapIndy10ServerTransport;dxRibbonCustomizationFormRS23;dxPSRichEditControlLnkRS23;dxBarExtDBItemsRS23;DataSnapProviderClient;FireDACMongoDBDriver;dxSkiniMaginaryRS23;dxSpellCheckerRS23;dxSkinsdxBarPainterRS23;dxSkinCoffeeRS23;DataSnapServerMidas;RESTComponents;DBXInterBaseDriver;dxADOServerModeRS23;emsclientfiredac;DataSnapFireDAC;dxmdsRS23;dxPSDBTeeChartRS23;dxdbtrRS23;dxSkinLiquidSkyRS23;dxSkinSpringTimeRS23;dxPSCoreRS23;dxSkinscxPCPainterRS23;DBXMSSQLDriver;dxSkinXmas2008BlueRS23;DatasnapConnectorsFreePascal;bindcompfmx;DBXOracleDriver;dxSkinSilverRS23;dxSkinValentineRS23;inetdb;FmxTeeUI;dxBarExtItemsRS23;FireDACIBDriver;fmx;fmxdae;dxServerModeRS23;dxPsPrVwAdvRS23;dxSkinOffice2010BlackRS23;cxPageControlRS23;dxSkinStardustRS23;cxSchedulerGridRS23;dbexpress;IndyCore;dxSkinSharpPlusRS23;dsnap;DataSnapCommon;emsclient;FireDACCommon;dxSkinOffice2010BlueRS23;dxSkinVS2010RS23;dxSkinMetropolisRS23;DataSnapConnectors;cxVerticalGridRS23;soapserver;dxSkinCaramelRS23;dxTileControlRS23;cxGridRS23;FireDACOracleDriver;DBXMySQLDriver;pckUCMidasConn;DBXFirebirdDriver;FireDACCommonDriver;inet;IndyIPCommon;dxSkinDarkRoomRS23;dxDockingRS23;vcl;dxSkinOffice2007GreenRS23;dxPScxExtCommonRS23;dxSkinsCoreRS23;FireDACDb2Driver;dxThemeRS23;dxSkinsdxRibbonPainterRS23;dxSkinVisualStudio2013BlueRS23;pckUCIBXConn;dxSkinMoneyTwinsRS23;pckHistorico;dxPSdxFCLnkRS23;dxtrmdRS23;TeeDB;FireDAC;cxSchedulerTreeBrowserRS23;dxFireDACServerModeRS23;dxSkinBlueRS23;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;cxEditorsRS23;dxSkinGlassOceansRS23;dxSkinsdxNavBarPainterRS23;dxGaugeControlRS23;ibxpress;Tee;cxPivotGridOLAPRS23;DataSnapServer;dxSkinSharpRS23;ibxbindings;vclwinx;FireDACDSDriver;dxSkinBlueprintRS23;pckMD5;CustomIPTransport;vcldsnap;dxSkinOffice2007BlackRS23;dxSkinOffice2013LightGrayRS23;bindcomp;DBXInformixDriver;dxPSdxGaugeControlLnkRS23;dxPScxPivotGridLnkRS23;dxorgcRS23;dxPSdxDBTVLnkRS23;vclribbon;dbxcds;adortl;dxComnRS23;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;cxExportRS23;dxSkinOffice2016DarkRS23;dxSkinVisualStudio2013DarkRS23;dxSkinscxSchedulerPainterRS23;fmxase;$(DCC_UsePackage)
70 |
71 |
72 | DEBUG;$(DCC_Define)
73 | true
74 | false
75 | true
76 | true
77 | true
78 |
79 |
80 | ..\..\src;..\..\lib;$(DCC_UnitSearchPath)
81 | 1033
82 | true
83 | true
84 | true
85 | false
86 |
87 |
88 | false
89 | RELEASE;$(DCC_Define)
90 | 0
91 | 0
92 |
93 |
94 | true
95 | true
96 |
97 |
98 |
99 | MainSource
100 |
101 |
102 |
103 | dfm
104 |
105 |
106 |
107 | ResourceItem
108 | RCDATA
109 | routes
110 |
111 |
112 | Cfg_2
113 | Base
114 |
115 |
116 | Base
117 |
118 |
119 | Cfg_1
120 | Base
121 |
122 |
123 |
124 | Delphi.Personality.12
125 | Application
126 |
127 |
128 |
129 | (untitled)
130 | (untitled)
131 | Embarcadero C++Builder Office 2000 Servers Package
132 | Embarcadero C++Builder Office XP Servers Package
133 | Microsoft Office 2000 Sample Automation Server Wrapper Components
134 | Microsoft Office XP Sample Automation Server Wrapper Components
135 |
136 |
137 | GetQueryParam.dpr
138 |
139 |
140 |
141 |
142 |
143 | GetQueryParam.exe
144 | true
145 |
146 |
147 |
148 |
149 | .\
150 | true
151 |
152 |
153 |
154 |
155 | 0
156 | .dll;.bpl
157 |
158 |
159 | 1
160 | .dylib
161 |
162 |
163 | Contents\MacOS
164 | 1
165 | .dylib
166 |
167 |
168 | 1
169 | .dylib
170 |
171 |
172 | 1
173 | .dylib
174 |
175 |
176 |
177 |
178 | Contents\Resources
179 | 1
180 |
181 |
182 |
183 |
184 | classes
185 | 1
186 |
187 |
188 |
189 |
190 | Contents\MacOS
191 | 0
192 |
193 |
194 | 1
195 |
196 |
197 | Contents\MacOS
198 | 1
199 |
200 |
201 |
202 |
203 | 1
204 |
205 |
206 | 1
207 |
208 |
209 | 1
210 |
211 |
212 |
213 |
214 | res\drawable-xxhdpi
215 | 1
216 |
217 |
218 |
219 |
220 | library\lib\mips
221 | 1
222 |
223 |
224 |
225 |
226 | 0
227 |
228 |
229 | 1
230 |
231 |
232 | Contents\MacOS
233 | 1
234 |
235 |
236 | 1
237 |
238 |
239 | library\lib\armeabi-v7a
240 | 1
241 |
242 |
243 | 1
244 |
245 |
246 |
247 |
248 | 0
249 |
250 |
251 | Contents\MacOS
252 | 1
253 | .framework
254 |
255 |
256 |
257 |
258 | 1
259 |
260 |
261 | 1
262 |
263 |
264 | 1
265 |
266 |
267 |
268 |
269 | 1
270 |
271 |
272 | 1
273 |
274 |
275 | 1
276 |
277 |
278 |
279 |
280 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
281 | 1
282 |
283 |
284 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
285 | 1
286 |
287 |
288 |
289 |
290 | library\lib\x86
291 | 1
292 |
293 |
294 |
295 |
296 | 1
297 |
298 |
299 | 1
300 |
301 |
302 | 1
303 |
304 |
305 |
306 |
307 | 1
308 |
309 |
310 | 1
311 |
312 |
313 | 1
314 |
315 |
316 |
317 |
318 | library\lib\armeabi
319 | 1
320 |
321 |
322 |
323 |
324 | 0
325 |
326 |
327 | 1
328 |
329 |
330 | Contents\MacOS
331 | 1
332 |
333 |
334 |
335 |
336 | 1
337 |
338 |
339 | 1
340 |
341 |
342 | 1
343 |
344 |
345 |
346 |
347 | res\drawable-normal
348 | 1
349 |
350 |
351 |
352 |
353 | res\drawable-xhdpi
354 | 1
355 |
356 |
357 |
358 |
359 | res\drawable-large
360 | 1
361 |
362 |
363 |
364 |
365 | 1
366 |
367 |
368 | 1
369 |
370 |
371 | 1
372 |
373 |
374 |
375 |
376 | ../
377 | 1
378 |
379 |
380 | ../
381 | 1
382 |
383 |
384 |
385 |
386 | res\drawable-hdpi
387 | 1
388 |
389 |
390 |
391 |
392 | library\lib\armeabi-v7a
393 | 1
394 |
395 |
396 |
397 |
398 | Contents
399 | 1
400 |
401 |
402 |
403 |
404 | ../
405 | 1
406 |
407 |
408 |
409 |
410 | 1
411 |
412 |
413 | 1
414 |
415 |
416 | 1
417 |
418 |
419 |
420 |
421 | res\values
422 | 1
423 |
424 |
425 |
426 |
427 | res\drawable-small
428 | 1
429 |
430 |
431 |
432 |
433 | res\drawable
434 | 1
435 |
436 |
437 |
438 |
439 | 1
440 |
441 |
442 | 1
443 |
444 |
445 | 1
446 |
447 |
448 |
449 |
450 | 1
451 |
452 |
453 |
454 |
455 | res\drawable
456 | 1
457 |
458 |
459 |
460 |
461 | 0
462 |
463 |
464 | 0
465 |
466 |
467 | Contents\Resources\StartUp\
468 | 0
469 |
470 |
471 | 0
472 |
473 |
474 | 0
475 |
476 |
477 | 0
478 |
479 |
480 |
481 |
482 | library\lib\armeabi-v7a
483 | 1
484 |
485 |
486 |
487 |
488 | 0
489 | .bpl
490 |
491 |
492 | 1
493 | .dylib
494 |
495 |
496 | Contents\MacOS
497 | 1
498 | .dylib
499 |
500 |
501 | 1
502 | .dylib
503 |
504 |
505 | 1
506 | .dylib
507 |
508 |
509 |
510 |
511 | res\drawable-mdpi
512 | 1
513 |
514 |
515 |
516 |
517 | res\drawable-xlarge
518 | 1
519 |
520 |
521 |
522 |
523 | res\drawable-ldpi
524 | 1
525 |
526 |
527 |
528 |
529 | 1
530 |
531 |
532 | 1
533 |
534 |
535 |
536 |
537 |
538 |
539 |
540 |
541 |
542 |
543 |
544 | True
545 | False
546 |
547 |
548 | 12
549 |
550 |
551 |
552 |
553 |
554 |
--------------------------------------------------------------------------------