source upload
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
/// remote access to a mORMot server using SmartMobileStudio
|
||||
// - retrieved from http://localhost:888/root/wrapper/SmartMobileStudio/mORMotClient.pas
|
||||
// at 2014-12-10 21:54:15 using "SmartMobileStudio.pas.mustache" template
|
||||
unit mORMotClient;
|
||||
|
||||
{
|
||||
WARNING:
|
||||
This unit has been generated by a mORMot 1.18.626 server.
|
||||
Any manual modification of this file may be lost after regeneration.
|
||||
|
||||
Synopse mORMot framework. Copyright (C) 2014 Arnaud Bouchez
|
||||
Synopse Informatique - https://synopse.info
|
||||
|
||||
This unit is released under a MPL/GPL/LGPL tri-license,
|
||||
and therefore may be freely included in any application.
|
||||
|
||||
This unit would work on Smart Mobile Studio 2.1.1 and later.
|
||||
}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SmartCL.System,
|
||||
System.Types,
|
||||
SynCrossPlatformSpecific,
|
||||
SynCrossPlatformREST;
|
||||
|
||||
|
||||
type
|
||||
/// service accessible via http://localhost:888/root/Calculator
|
||||
// - this service will run in sicShared mode
|
||||
// - synchronous and asynchronous methods are available, depending on use case
|
||||
// - synchronous _*() methods will block the browser execution, so won't be
|
||||
// appropriate for long process - on error, they may raise EServiceException
|
||||
TServiceCalculator = class(TServiceClientAbstract)
|
||||
public
|
||||
/// will initialize an access to the remote service
|
||||
constructor Create(aClient: TSQLRestClientURI); override;
|
||||
|
||||
procedure Add(n1: Integer; n2: Integer;
|
||||
onSuccess: procedure(Result: Integer); onError: TSQLRestEvent);
|
||||
function _Add(const n1: Integer; const n2: Integer): Integer;
|
||||
end;
|
||||
|
||||
|
||||
const
|
||||
/// the server port, corresponding to http://localhost:888
|
||||
SERVER_PORT = 888;
|
||||
|
||||
|
||||
/// return the database Model corresponding to this server
|
||||
function GetModel: TSQLModel;
|
||||
|
||||
/// create a TSQLRestClientHTTP instance and connect to the server
|
||||
// - it will use by default port 888
|
||||
// - secure connection will be established via TSQLRestServerAuthenticationDefault
|
||||
// with the supplied credentials
|
||||
// - request will be asynchronous, and trigger onSuccess or onError event
|
||||
procedure GetClient(const aServerAddress, aUserName,aPassword: string;
|
||||
onSuccess, onError: TSQLRestEvent; aServerPort: integer=SERVER_PORT);
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
function GetModel: TSQLModel;
|
||||
begin
|
||||
result := TSQLModel.Create([TSQLAuthUser,TSQLAuthGroup],'root');
|
||||
end;
|
||||
|
||||
procedure GetClient(const aServerAddress, aUserName,aPassword: string;
|
||||
onSuccess, onError: TSQLRestEvent; aServerPort: integer);
|
||||
begin
|
||||
var client := TSQLRestClientHTTP.Create(aServerAddress,aServerPort,GetModel,true);
|
||||
client.Connect(
|
||||
lambda
|
||||
try
|
||||
if client.ServerTimeStamp=0 then begin
|
||||
if Assigned(onError) then
|
||||
onError(client);
|
||||
exit;
|
||||
end;
|
||||
if not client.SetUser(TSQLRestServerAuthenticationDefault,aUserName,aPassword) then begin
|
||||
if Assigned(onError) then
|
||||
onError(client);
|
||||
exit;
|
||||
end;
|
||||
if Assigned(onSuccess) then
|
||||
onSuccess(client);
|
||||
except
|
||||
if Assigned(onError) then
|
||||
onError(client);
|
||||
end;
|
||||
end,
|
||||
onError);
|
||||
end;
|
||||
|
||||
|
||||
{ TServiceCalculator }
|
||||
|
||||
constructor TServiceCalculator.Create(aClient: TSQLRestClientURI);
|
||||
begin
|
||||
fServiceName := 'Calculator';
|
||||
fServiceURI := 'Calculator';
|
||||
fInstanceImplementation := sicShared;
|
||||
fContractExpected := '1FC2AE72D7E2C88D';
|
||||
inherited Create(aClient);
|
||||
end;
|
||||
|
||||
|
||||
procedure TServiceCalculator.Add(n1: Integer; n2: Integer;
|
||||
onSuccess: procedure(Result: Integer); onError: TSQLRestEvent);
|
||||
begin
|
||||
fClient.CallRemoteServiceAsynch(self,'Add',1,
|
||||
[n1,n2],
|
||||
lambda (res: array of Variant)
|
||||
onSuccess(res[0]);
|
||||
end, onError);
|
||||
end;
|
||||
|
||||
function TServiceCalculator._Add(const n1: Integer; const n2: Integer): Integer;
|
||||
begin
|
||||
var res := fClient.CallRemoteServiceSynch(self,'Add',1,
|
||||
[n1,n2]);
|
||||
Result := res[0];
|
||||
end;
|
||||
|
||||
|
||||
|
||||
end.
|
Reference in New Issue
Block a user