mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-15 07:45:54 +01:00
Preparing for release
This commit is contained in:
parent
739b751607
commit
4c191c3742
@ -316,7 +316,14 @@ begin
|
||||
.AppendLine('interface')
|
||||
.AppendLine
|
||||
.AppendLine('uses')
|
||||
.AppendLine(' MVCFramework, MVCFramework.Commons, MVCFramework.Serializer.Commons, System.Generics.Collections;')
|
||||
.Append(' MVCFramework, MVCFramework.Commons, ');
|
||||
if Model.B[TConfigKey.entity_generate] then
|
||||
begin
|
||||
Section.Append('MVCFramework.Nullables, ');
|
||||
end;
|
||||
|
||||
Section
|
||||
.AppendLine('MVCFramework.Serializer.Commons, System.Generics.Collections;')
|
||||
.AppendLine
|
||||
.AppendLine('type')
|
||||
end;
|
||||
@ -337,9 +344,10 @@ begin
|
||||
inherited;
|
||||
if not Model.B[TConfigKey.entity_generate] then Exit;
|
||||
Section
|
||||
.AppendLine('constructor ' + Model[TConfigKey.entity_classname] + '.Create(FirstName, LastName: String; DOB: TDate);')
|
||||
.AppendLine('constructor ' + Model[TConfigKey.entity_classname] + '.Create(ID: Integer; FirstName, LastName: String; DOB: TDate);')
|
||||
.AppendLine('begin')
|
||||
.AppendLine(' inherited Create;')
|
||||
.AppendLine(' fID := ID;')
|
||||
.AppendLine(' fFirstName := FirstName;')
|
||||
.AppendLine(' fLastName := LastName;')
|
||||
.AppendLine(' fDOB := DOB;')
|
||||
@ -359,14 +367,16 @@ begin
|
||||
.AppendLine(' [MVCNameCase(ncCamelCase)]')
|
||||
.AppendLine(' ' + Model[TConfigKey.entity_classname] + ' = class')
|
||||
.AppendLine(' private')
|
||||
.AppendLine(' fID: NullableInt32;')
|
||||
.AppendLine(' fFirstName: String;')
|
||||
.AppendLine(' fLastName: String;')
|
||||
.AppendLine(' fDOB: TDate;')
|
||||
.AppendLine(' public')
|
||||
.AppendLine(' property ID: NullableInt32 read fID write fID;')
|
||||
.AppendLine(' property FirstName: String read fFirstName write fFirstName;')
|
||||
.AppendLine(' property LastName: String read fLastName write fLastName;')
|
||||
.AppendLine(' property DOB: TDate read fDOB write fDOB; ')
|
||||
.AppendLine(' constructor Create(FirstName, LastName: String; DOB: TDate);')
|
||||
.AppendLine(' constructor Create(ID: Integer; FirstName, LastName: String; DOB: TDate);')
|
||||
.AppendLine(' end;')
|
||||
.AppendLine
|
||||
end;
|
||||
@ -435,16 +445,16 @@ begin
|
||||
Section
|
||||
.AppendLine
|
||||
.AppendLine('//Sample CRUD Actions for a "People" entity')
|
||||
.AppendLine('function ' + Model[TConfigKey.controller_classname] + '.GetPeople: TObjectList<TPerson>;')
|
||||
.AppendLine('function ' + Model[TConfigKey.controller_classname] + '.GetPeople: IMVCResponse;')
|
||||
.AppendLine('var')
|
||||
.AppendLine(' lPeople: TObjectList<TPerson>;')
|
||||
.AppendLine('begin')
|
||||
.AppendLine(' lPeople := TObjectList<TPerson>.Create(True);')
|
||||
.AppendLine(' try')
|
||||
.AppendLine(' lPeople.Add(TPerson.Create(''Peter'',''Parker'', EncodeDate(1965, 10, 4)));')
|
||||
.AppendLine(' lPeople.Add(TPerson.Create(''Bruce'',''Banner'', EncodeDate(1945, 9, 6)));')
|
||||
.AppendLine(' lPeople.Add(TPerson.Create(''Reed'',''Richards'', EncodeDate(1955, 3, 7)));')
|
||||
.AppendLine(' Result := lPeople;')
|
||||
.AppendLine(' lPeople.Add(TPerson.Create(1, ''Peter'',''Parker'', EncodeDate(1965, 10, 4)));')
|
||||
.AppendLine(' lPeople.Add(TPerson.Create(2, ''Bruce'',''Banner'', EncodeDate(1945, 9, 6)));')
|
||||
.AppendLine(' lPeople.Add(TPerson.Create(3, ''Reed'',''Richards'', EncodeDate(1955, 3, 7)));')
|
||||
.AppendLine(' Result := OkResponse(lPeople);')
|
||||
.AppendLine(' except')
|
||||
.AppendLine(' lPeople.Free;')
|
||||
.AppendLine(' raise;')
|
||||
@ -452,40 +462,26 @@ begin
|
||||
.AppendLine('end;')
|
||||
.AppendLine
|
||||
.AppendLine('function ' + Model[TConfigKey.controller_classname] + '.GetPerson(ID: Integer): TPerson;')
|
||||
.AppendLine('var')
|
||||
.AppendLine(' lPeople: TObjectList<TPerson>;')
|
||||
.AppendLine('begin')
|
||||
.AppendLine(' lPeople := GetPeople;')
|
||||
.AppendLine(' try')
|
||||
.AppendLine(' Result := lPeople.ExtractAt(ID mod lPeople.Count);')
|
||||
.AppendLine(' finally')
|
||||
.AppendLine(' lPeople.Free;')
|
||||
.AppendLine(' end;')
|
||||
.AppendLine(' Result := TPerson.Create(ID, ''Daniele'', ''Teti'', EncodeDate(1979, 11, 4));')
|
||||
.AppendLine('end;')
|
||||
.AppendLine
|
||||
.AppendLine('function ' + Model[TConfigKey.controller_classname] + '.CreatePerson([MVCFromBody] Person: TPerson): IMVCResponse;')
|
||||
.AppendLine('begin')
|
||||
.AppendLine(' LogI(''Created '' + Person.FirstName + '' '' + Person.LastName);')
|
||||
.AppendLine(' Result := MVCResponseBuilder')
|
||||
.AppendLine(' .StatusCode(HTTP_STATUS.Created)')
|
||||
.AppendLine(' .Body(''Person created'')')
|
||||
.AppendLine(' .Build;')
|
||||
.AppendLine(' Result := CreatedResponse('''', ''Person created'');')
|
||||
.AppendLine('end;')
|
||||
.AppendLine
|
||||
.AppendLine('function ' + Model[TConfigKey.controller_classname] + '.UpdatePerson(ID: Integer; [MVCFromBody] Person: TPerson): IMVCResponse;')
|
||||
.AppendLine('begin')
|
||||
.AppendLine(' LogI(''Updated '' + Person.FirstName + '' '' + Person.LastName);')
|
||||
.AppendLine(' Result := MVCResponseBuilder')
|
||||
.AppendLine(' .StatusCode(HTTP_STATUS.NoContent)')
|
||||
.AppendLine(' .Build;')
|
||||
.AppendLine(' Result := NoContentResponse();')
|
||||
.AppendLine('end;')
|
||||
.AppendLine
|
||||
.AppendLine('function ' + Model[TConfigKey.controller_classname] + '.DeletePerson(ID: Integer): IMVCResponse;')
|
||||
.AppendLine('begin')
|
||||
.AppendLine(' LogI(''Deleted person with id '' + ID.ToString);')
|
||||
.AppendLine(' Result := MVCResponseBuilder')
|
||||
.AppendLine(' .StatusCode(HTTP_STATUS.NoContent)')
|
||||
.AppendLine(' .Build;')
|
||||
.AppendLine(' Result := NoContentResponse();')
|
||||
.AppendLine('end;')
|
||||
|
||||
end;
|
||||
@ -516,10 +512,12 @@ begin
|
||||
.AppendLine(' [MVCPath]')
|
||||
.AppendLine(' [MVCHTTPMethod([httpGET])]')
|
||||
.AppendLine(' function Index: String;')
|
||||
.AppendLine
|
||||
.AppendLine(' [MVCPath(''/reversedstrings/($Value)'')]')
|
||||
.AppendLine(' [MVCHTTPMethod([httpGET])]')
|
||||
.AppendLine(' [MVCProduces(TMVCMediaType.TEXT_PLAIN)]')
|
||||
.AppendLine(' function GetReversedString(const Value: String): String;')
|
||||
.AppendLine
|
||||
end;
|
||||
|
||||
if Model.B[TConfigKey.controller_crud_methods_generate] then
|
||||
@ -533,16 +531,20 @@ begin
|
||||
.AppendLine(' //Sample CRUD Actions for a "People" entity')
|
||||
.AppendLine(' [MVCPath(''/people'')]')
|
||||
.AppendLine(' [MVCHTTPMethod([httpGET])]')
|
||||
.AppendLine(' function GetPeople: TObjectList<TPerson>;')
|
||||
.AppendLine(' function GetPeople: IMVCResponse;')
|
||||
.AppendLine
|
||||
.AppendLine(' [MVCPath(''/people/($ID)'')]')
|
||||
.AppendLine(' [MVCHTTPMethod([httpGET])]')
|
||||
.AppendLine(' function GetPerson(ID: Integer): TPerson;')
|
||||
.AppendLine
|
||||
.AppendLine(' [MVCPath(''/people'')]')
|
||||
.AppendLine(' [MVCHTTPMethod([httpPOST])]')
|
||||
.AppendLine(' function CreatePerson([MVCFromBody] Person: TPerson): IMVCResponse;')
|
||||
.AppendLine
|
||||
.AppendLine(' [MVCPath(''/people/($ID)'')]')
|
||||
.AppendLine(' [MVCHTTPMethod([httpPUT])]')
|
||||
.AppendLine(' function UpdatePerson(ID: Integer; [MVCFromBody] Person: TPerson): IMVCResponse;')
|
||||
.AppendLine
|
||||
.AppendLine(' [MVCPath(''/people/($ID)'')]')
|
||||
.AppendLine(' [MVCHTTPMethod([httpDELETE])]')
|
||||
.AppendLine(' function DeletePerson(ID: Integer): IMVCResponse;')
|
||||
@ -921,9 +923,10 @@ begin
|
||||
if not Model.B[TConfigKey.entity_generate] then Exit;
|
||||
CheckFor(TConfigKey.entity_classname, Model);
|
||||
Section
|
||||
.AppendLine('constructor ' + Model[TConfigKey.entity_classname] + '.Create(FirstName, LastName: String; DOB: TDate);')
|
||||
.AppendLine('constructor ' + Model[TConfigKey.entity_classname] + '.Create(ID: Integer; FirstName, LastName: String; DOB: TDate);')
|
||||
.AppendLine('begin')
|
||||
.AppendLine(' inherited Create;')
|
||||
.AppendLine(' fID := ID;')
|
||||
.AppendLine(' fFirstName := FirstName;')
|
||||
.AppendLine(' fLastName := LastName;')
|
||||
.AppendLine(' fDOB := DOB;')
|
||||
|
@ -107,8 +107,8 @@ begin
|
||||
lFileName := TPath.GetFileNameWithoutExtension(IOTA.FileName);
|
||||
lFileExt := TPath.GetExtension(IOTA.FileName);
|
||||
lFileName := FileNamePrefix;
|
||||
IOTA.FileName := TPath.Combine(lDirName, lFileName + lFileExt);
|
||||
IOTA.Refresh(False);
|
||||
// IOTA.FileName := TPath.Combine(lDirName, lFileName + lFileExt);
|
||||
// IOTA.Refresh(False);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -316,8 +316,8 @@ begin
|
||||
fModel.B[TConfigKey.entity_generate] := fModel.B[TConfigKey.controller_crud_methods_generate];
|
||||
fModel.S[TConfigKey.entity_classname] := 'TPerson';
|
||||
fModel.B[TConfigKey.jsonrpc_generate] := GetCreateJSONRPCInterface;
|
||||
fModel.S[TConfigKey.jsonrpc_classname] := GetJSONRPCClassName;
|
||||
fModel.S[TConfigKey.jsonrpc_unit_name] := 'TBA';
|
||||
fModel.S[TConfigKey.jsonrpc_classname] := GetJSONRPCClassName;
|
||||
fModel.S[TConfigKey.jsonrpc_unit_name] := 'TBA';
|
||||
|
||||
//webmodule
|
||||
|
||||
|
@ -78,7 +78,7 @@ begin
|
||||
|
||||
CreateFirebirdPrivateConnDef(True);
|
||||
DefaultMVCServiceContainer
|
||||
.RegisterType(TArticlesService, IArticlesService, '', TRegistrationType.SingletonPerRequest)
|
||||
.RegisterType(TArticlesService, IArticlesService, TRegistrationType.SingletonPerRequest)
|
||||
.Build;
|
||||
|
||||
WebRequestHandlerProc.MaxConnections := dotEnv.Env('dmvc.handler.max_connections', 1024);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ uses
|
||||
MVCFramework.Serializer.Intf,
|
||||
System.Rtti,
|
||||
System.Generics.Collections,
|
||||
BusinessObjectsU, Data.DB;
|
||||
BusinessObjectsU, Data.DB, System.Classes, System.SysUtils;
|
||||
|
||||
type
|
||||
|
||||
@ -64,10 +64,15 @@ type
|
||||
[MVCProduces('text/plain')]
|
||||
function GetPerson_AsText_AsFunction(const ID: Integer): String;
|
||||
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCPath('/func/customers.csv')]
|
||||
function GetPeopleAsCSV_AsFunction: String;
|
||||
|
||||
|
||||
// this action is polymorphic
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCPath('/func/skilledpeople')]
|
||||
[MVCProduces('application/json')]
|
||||
//[MVCProduces('application/json')]
|
||||
function GetProgrammersAndPhilosophersAsObjectList_AsFunction: TObjectList<TPerson>;
|
||||
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
@ -294,8 +299,6 @@ uses
|
||||
MVCFramework.Logger,
|
||||
MyDataModuleU,
|
||||
System.IOUtils,
|
||||
System.Classes,
|
||||
System.SysUtils,
|
||||
WebModuleU,
|
||||
CustomTypesU,
|
||||
InMemoryDataU,
|
||||
@ -962,6 +965,23 @@ begin
|
||||
RenderResponseStream;
|
||||
end;
|
||||
|
||||
function TRenderSampleController.GetPeopleAsCSV_AsFunction: String;
|
||||
var
|
||||
lSS: TStringBuilder;
|
||||
begin
|
||||
ContentType := TMVCMediaType.TEXT_CSV;
|
||||
lSS := TStringBuilder.Create('');
|
||||
try
|
||||
lSS.AppendLine('first_name;last_name;age');
|
||||
lSS.AppendLine('Daniele;Teti;38');
|
||||
lSS.AppendLine('Peter;Parker;22');
|
||||
lSS.AppendLine('Bruce;Banner;60');
|
||||
Result := lSS.ToString;
|
||||
finally
|
||||
lSS.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TRenderSampleController.GetPeopleWithTiming;
|
||||
var
|
||||
p: TPerson;
|
||||
@ -1164,7 +1184,6 @@ end;
|
||||
|
||||
procedure TRenderSampleController.GetPersonPhoto;
|
||||
begin
|
||||
// ContentType := 'image/jpeg';
|
||||
SendFile('..\..\_\customer.png');
|
||||
end;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{2921E3FB-91B6-4BA4-A930-D3F18FEED6C6}</ProjectGuid>
|
||||
<ProjectVersion>19.5</ProjectVersion>
|
||||
<ProjectVersion>20.1</ProjectVersion>
|
||||
<FrameworkType>None</FrameworkType>
|
||||
<MainSource>SimpleRESTAPIUsingActiveRecord.dpr</MainSource>
|
||||
<Base>True</Base>
|
||||
@ -9,30 +9,11 @@
|
||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||
<TargetedPlatforms>1</TargetedPlatforms>
|
||||
<AppType>Console</AppType>
|
||||
<ProjectName Condition="'$(ProjectName)'==''">SimpleRESTAPIUsingActiveRecord</ProjectName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
|
||||
<Base_Android>true</Base_Android>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
|
||||
<Base_Android64>true</Base_Android64>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='iOSSimARM64' and '$(Base)'=='true') or '$(Base_iOSSimARM64)'!=''">
|
||||
<Base_iOSSimARM64>true</Base_iOSSimARM64>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Linux64' and '$(Base)'=='true') or '$(Base_Linux64)'!=''">
|
||||
<Base_Linux64>true</Base_Linux64>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
||||
<Base_Win32>true</Base_Win32>
|
||||
<CfgParent>Base</CfgParent>
|
||||
@ -77,48 +58,6 @@
|
||||
<VerInfo_Locale>1040</VerInfo_Locale>
|
||||
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Android)'!=''">
|
||||
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;ibmonitor;FMXTee;soaprtl;DbxCommonDriver;ibxpress;xmlrtl;soapmidas;DataSnapNativeClient;ibxbindings;rtl;DbxClientDriver;FireDACDSDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)</DCC_UsePackage>
|
||||
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar</EnabledSysJars>
|
||||
<Android_LauncherIcon192>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png</Android_LauncherIcon192>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Android64)'!=''">
|
||||
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
|
||||
<BT_BuildType>Debug</BT_BuildType>
|
||||
<Base_Android>true</Base_Android>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;ibmonitor;FMXTee;soaprtl;DbxCommonDriver;ibxpress;xmlrtl;soapmidas;DataSnapNativeClient;ibxbindings;rtl;DbxClientDriver;FireDACDSDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage);$(DCC_UsePackage)</DCC_UsePackage>
|
||||
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar</EnabledSysJars>
|
||||
<Android_LauncherIcon192>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png</Android_LauncherIcon192>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_iOSSimARM64)'!=''">
|
||||
<VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>
|
||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||
<iOS_AppStore1024>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png</iOS_AppStore1024>
|
||||
<iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>
|
||||
<iPhone_AppIcon180>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png</iPhone_AppIcon180>
|
||||
<iPhone_Launch2x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png</iPhone_Launch2x>
|
||||
<iPhone_LaunchDark2x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png</iPhone_LaunchDark2x>
|
||||
<iPhone_Launch3x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png</iPhone_Launch3x>
|
||||
<iPhone_LaunchDark3x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png</iPhone_LaunchDark3x>
|
||||
<iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>
|
||||
<iPhone_Spotlight120>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png</iPhone_Spotlight120>
|
||||
<iPhone_Setting58>$(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png</iPhone_Setting58>
|
||||
<iPhone_Setting87>$(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png</iPhone_Setting87>
|
||||
<iPhone_Notification40>$(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png</iPhone_Notification40>
|
||||
<iPhone_Notification60>$(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png</iPhone_Notification60>
|
||||
<iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>
|
||||
<iPad_AppIcon167>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png</iPad_AppIcon167>
|
||||
<iPad_Launch2x>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png</iPad_Launch2x>
|
||||
<iPad_LaunchDark2x>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png</iPad_LaunchDark2x>
|
||||
<iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>
|
||||
<iPad_Setting58>$(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png</iPad_Setting58>
|
||||
<iPad_Notification40>$(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png</iPad_Notification40>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Linux64)'!=''">
|
||||
<DCC_UsePackage>RESTComponents;DataSnapServerMidas;emsclientfiredac;DataSnapFireDAC;FireDACADSDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;inetdb;emsedge;FireDACIBDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;DataSnapConnectors;soapserver;bindengine;FireDACOracleDriver;CloudService;FireDACMySQLDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndySystem;FireDACDb2Driver;FireDACInfxDriver;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;rtl;emsserverresource;DbxClientDriver;CustomIPTransport;bindcomp;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;dbrtl;FireDACMongoDBDriver;IndyProtocols;$(DCC_UsePackage)</DCC_UsePackage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;DataSnapServerMidas;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;DataSnapFireDAC;svnui;tethering;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;DBXOracleDriver;inetdb;FmxTeeUI;emsedge;FireDACIBDriver;fmx;fmxdae;vclib;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;FireDACOracleDriver;CloudService;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;vcl;DBXSybaseASEDriver;IndyIPServer;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;ibxpress;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;ibxbindings;rtl;emsserverresource;DbxClientDriver;FireDACDSDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;TeeUI;dmvcframeworkRT;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dmvcframeworkDT;dsnapxml;DataSnapProviderClient;dbrtl;inetdbxpress;FireDACMongoDBDriver;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
|
||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||
@ -289,6 +228,16 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashImageDefV21">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashStyles">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values</RemoteDir>
|
||||
@ -309,6 +258,66 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashStylesV31">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\values-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconBackground">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconForeground">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconMonochrome">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconV33">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_Colors">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values</RemoteDir>
|
||||
@ -319,6 +328,16 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_ColorsDark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values-night-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\values-night-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_DefaultAppIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
@ -489,6 +508,56 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedNotificationIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplash">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashDark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashV31">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashV31Dark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="DebugSymbols">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
@ -594,6 +663,130 @@
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectAndroidManifest">
|
||||
<Platform Name="Android">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectOSXDebug"/>
|
||||
<DeployClass Name="ProjectOSXEntitlements"/>
|
||||
<DeployClass Name="ProjectOSXInfoPList"/>
|
||||
<DeployClass Name="ProjectOSXResource">
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>Contents\Resources</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX64">
|
||||
<RemoteDir>Contents\Resources</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSXARM64">
|
||||
<RemoteDir>Contents\Resources</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Required="true" Name="ProjectOutput">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Linux64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSXARM64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win32">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectOutput_Android32">
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectUWPManifest">
|
||||
<Platform Name="Win32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win64x">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSDeviceDebug">
|
||||
<Platform Name="iOSDevice32">
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSEntitlements"/>
|
||||
<DeployClass Name="ProjectiOSInfoPList"/>
|
||||
<DeployClass Name="ProjectiOSLaunchScreen"/>
|
||||
<DeployClass Name="ProjectiOSResource">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="UWP_DelphiLogo150">
|
||||
<Platform Name="Win32">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win64">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="UWP_DelphiLogo44">
|
||||
<Platform Name="Win32">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win64">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="iOS_AppStore1024">
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
|
||||
@ -794,127 +987,6 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectAndroidManifest">
|
||||
<Platform Name="Android">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSDeviceDebug">
|
||||
<Platform Name="iOSDevice32">
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimARM64">
|
||||
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectiOSEntitlements"/>
|
||||
<DeployClass Name="ProjectiOSInfoPList"/>
|
||||
<DeployClass Name="ProjectiOSLaunchScreen"/>
|
||||
<DeployClass Name="ProjectiOSResource">
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectOSXDebug"/>
|
||||
<DeployClass Name="ProjectOSXEntitlements"/>
|
||||
<DeployClass Name="ProjectOSXInfoPList"/>
|
||||
<DeployClass Name="ProjectOSXResource">
|
||||
<Platform Name="OSX32">
|
||||
<RemoteDir>Contents\Resources</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX64">
|
||||
<RemoteDir>Contents\Resources</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSXARM64">
|
||||
<RemoteDir>Contents\Resources</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Required="true" Name="ProjectOutput">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSDevice64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="iOSSimARM64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Linux64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSX64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="OSXARM64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win32">
|
||||
<Operation>0</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectOutput_Android32">
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="ProjectUWPManifest">
|
||||
<Platform Name="Win32">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win64">
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="UWP_DelphiLogo150">
|
||||
<Platform Name="Win32">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win64">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="UWP_DelphiLogo44">
|
||||
<Platform Name="Win32">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Win64">
|
||||
<RemoteDir>Assets</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
|
||||
@ -927,12 +999,9 @@
|
||||
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||
<ProjectRoot Platform="Win64x" Name="$(PROJECTNAME)"/>
|
||||
</Deployment>
|
||||
<Platforms>
|
||||
<Platform value="Android">False</Platform>
|
||||
<Platform value="Android64">False</Platform>
|
||||
<Platform value="iOSSimARM64">False</Platform>
|
||||
<Platform value="Linux64">False</Platform>
|
||||
<Platform value="Win32">True</Platform>
|
||||
<Platform value="Win64">False</Platform>
|
||||
</Platforms>
|
||||
|
@ -44,11 +44,13 @@ type
|
||||
private
|
||||
FValue: string;
|
||||
FParams: TList<string>;
|
||||
FRegEx: TRegEx;
|
||||
public
|
||||
constructor Create(aValue: string; aParams: TList<string>); virtual;
|
||||
destructor Destroy; override;
|
||||
function Value: string;
|
||||
function Params: TList<string>; // this should be read-only...
|
||||
function Match(const Value: String): TMatch; inline;
|
||||
end;
|
||||
|
||||
TMVCRouter = class(TMVCCustomRouter)
|
||||
@ -356,13 +358,18 @@ function TMVCRouter.IsCompatiblePath(
|
||||
end;
|
||||
|
||||
var
|
||||
lRegEx: TRegEx;
|
||||
// lRegEx: TRegEx;
|
||||
lMatch: TMatch;
|
||||
lPattern: string;
|
||||
I: Integer;
|
||||
lNames: TList<string>;
|
||||
lCacheItem: TMVCActionParamCacheItem;
|
||||
begin
|
||||
if (APath = AMVCPath) or ((APath = '/') and (AMVCPath = '')) then
|
||||
begin
|
||||
Exit(True);
|
||||
end;
|
||||
|
||||
if not FActionParamsCache.TryGetValue(AMVCPath, lCacheItem) then
|
||||
begin
|
||||
lNames := GetParametersNames(AMVCPath);
|
||||
@ -371,19 +378,16 @@ begin
|
||||
FActionParamsCache.Add(AMVCPath, lCacheItem);
|
||||
end;
|
||||
|
||||
if (APath = AMVCPath) or ((APath = '/') and (AMVCPath = '')) then
|
||||
Exit(True)
|
||||
else
|
||||
// lRegEx := TRegEx.Create(lCacheItem.Value, [roIgnoreCase, roCompiled, roSingleLine]);
|
||||
// lMatch := lRegEx.Match(APath);
|
||||
|
||||
lMatch := lCacheItem.Match(APath);
|
||||
Result := lMatch.Success;
|
||||
if Result then
|
||||
begin
|
||||
lRegEx := TRegEx.Create(lCacheItem.Value, [roIgnoreCase, roCompiled, roSingleLine]);
|
||||
lMatch := lRegEx.Match(APath);
|
||||
Result := lMatch.Success;
|
||||
if Result then
|
||||
for I := 1 to Pred(lMatch.Groups.Count) do
|
||||
begin
|
||||
for I := 1 to Pred(lMatch.Groups.Count) do
|
||||
begin
|
||||
aParams.Add(lCacheItem.Params[I - 1], TIdURI.URLDecode(lMatch.Groups[I].Value));
|
||||
end;
|
||||
aParams.Add(lCacheItem.Params[I - 1], TIdURI.URLDecode(lMatch.Groups[I].Value));
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -534,6 +538,7 @@ begin
|
||||
inherited Create;
|
||||
FValue := aValue;
|
||||
FParams := aParams;
|
||||
FRegEx := TRegEx.Create(FValue, [roIgnoreCase, roCompiled, roSingleLine]);
|
||||
end;
|
||||
|
||||
destructor TMVCActionParamCacheItem.Destroy;
|
||||
@ -542,6 +547,11 @@ begin
|
||||
inherited;
|
||||
end;
|
||||
|
||||
function TMVCActionParamCacheItem.Match(const Value: String): TMatch;
|
||||
begin
|
||||
Result := fRegEx.Match(Value);
|
||||
end;
|
||||
|
||||
function TMVCActionParamCacheItem.Params: TList<string>;
|
||||
begin
|
||||
Result := FParams;
|
||||
|
@ -775,13 +775,13 @@ type
|
||||
/// https://restfulapi.net/http-status-202-accepted/
|
||||
/// </remarks>
|
||||
procedure Render202Accepted(const HREF: string; const ID: string;
|
||||
const Reason: string = 'Accepted'); virtual; deprecated;
|
||||
const Reason: string = 'Accepted'); virtual;
|
||||
/// <summary>
|
||||
/// HTTP Status 204 (No Content) indicates that the server has successfully fulfilled the request and that there is no content to send in the response payload body. The server might want to return updated meta information in the form of entity-headers, which if present SHOULD be applied to current documents active view if any.
|
||||
/// The 204 response MUST NOT include a message-body and thus is always terminated by the first empty line after the header fields.
|
||||
/// </summary>
|
||||
procedure Render204NoContent(const Location: string = '';
|
||||
const Reason: string = ''); virtual; deprecated;
|
||||
const Reason: string = ''); virtual;
|
||||
|
||||
|
||||
|
||||
@ -3229,17 +3229,21 @@ begin
|
||||
|
||||
// From now on we'll check for url mapped parameters
|
||||
if not AContext.Request.SegmentParam(lParamName, lStrValue) then
|
||||
begin
|
||||
raise EMVCException.CreateFmt(http_status.BadRequest,
|
||||
'Invalid parameter %s for action %s (Hint: Here parameters names are case-sensitive)',
|
||||
[lParamName, AActionName]);
|
||||
end;
|
||||
AActualParams[I] := GetActualParam(AActionFormalParams[I], lStrValue);
|
||||
end;
|
||||
|
||||
if (AContext.Request.SegmentParamsCount + lAttributeInjectedParamCount) <>
|
||||
Length(AActionFormalParams) then
|
||||
begin
|
||||
raise EMVCException.CreateFmt(http_status.BadRequest,
|
||||
'Parameters count mismatch (expected %d actual %d) for action "%s"',
|
||||
[Length(AActionFormalParams), AContext.Request.SegmentParamsCount, AActionName]);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMVCEngine.FixUpWebModule;
|
||||
|
Loading…
Reference in New Issue
Block a user