source upload
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
unit RestClientMain;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||
Dialogs,
|
||||
SynCommons,
|
||||
mORMot,
|
||||
mORMotHttpClient,
|
||||
RESTData, StdCtrls; // data model unit, shared between server and client
|
||||
|
||||
type
|
||||
TMainForm = class(TForm)
|
||||
btnConnect: TButton;
|
||||
btnGet: TButton;
|
||||
btnNew: TButton;
|
||||
lblNewID: TLabel;
|
||||
btnSet: TButton;
|
||||
mmoSet: TMemo;
|
||||
mmoGet: TMemo;
|
||||
edtGetID: TEdit;
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure btnConnectClick(Sender: TObject);
|
||||
procedure btnGetClick(Sender: TObject);
|
||||
procedure btnNewClick(Sender: TObject);
|
||||
procedure btnSetClick(Sender: TObject);
|
||||
protected
|
||||
fModel: TSQLModel;
|
||||
fClient: TSQLHttpClient;
|
||||
public
|
||||
end;
|
||||
|
||||
var
|
||||
MainForm: TMainForm;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
procedure TMainForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
fModel := DataModel('root');
|
||||
end;
|
||||
|
||||
procedure TMainForm.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
FreeAndNil(fClient);
|
||||
FreeAndNil(fModel);
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnConnectClick(Sender: TObject);
|
||||
begin
|
||||
fClient := TSQLHttpClientWinHTTP.Create('localhost','888',fModel);
|
||||
try
|
||||
if not fClient.ServerTimeStampSynchronize then
|
||||
exit;
|
||||
btnConnect.Enabled := false;
|
||||
btnNew.Enabled := true;
|
||||
btnGet.Enabled := true;
|
||||
btnSet.Enabled := true;
|
||||
mmoGet.Enabled := true;
|
||||
mmoSet.Enabled := true;
|
||||
edtGetID.Enabled := true;
|
||||
except
|
||||
FreeAndNil(fClient);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnGetClick(Sender: TObject);
|
||||
var ID: TID;
|
||||
resp: RawUTF8;
|
||||
begin
|
||||
if fClient=nil then
|
||||
exit;
|
||||
if not TryStrToInt64(edtGetID.Text,Int64(ID)) then
|
||||
exit;
|
||||
if fClient.CallBackGet('blob',[],resp,TSQLNoteFile,ID)=HTTP_SUCCESS then
|
||||
mmoGet.Text := UTF8ToString(resp) else
|
||||
mmoGet.Text := '? not found';
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnNewClick(Sender: TObject);
|
||||
var Note: TSQLNoteFile;
|
||||
begin
|
||||
if fClient=nil then
|
||||
exit;
|
||||
Note := TSQLNoteFile.Create;
|
||||
try
|
||||
Note.FileName := 'Test'+UInt32ToUTF8(GetTickCount64);
|
||||
Note.MetaData := _ObjFast(['timestamp',GetTickCount64]);
|
||||
Tag := fClient.Add(Note,true);
|
||||
lblNewID.Caption := Format('Current ID=%d',[Tag]);
|
||||
mmoSet.Text := Format('Bla bla %d'#13#10'%d',[Tag,GetTickCount64]);
|
||||
edtGetID.Text := IntToStr(Tag);
|
||||
finally
|
||||
Note.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnSetClick(Sender: TObject);
|
||||
var resp: RawUTF8;
|
||||
begin
|
||||
if fClient=nil then
|
||||
exit;
|
||||
if fClient.CallBackPut('blob',StringToUTF8(mmoSet.Text),resp,TSQLNoteFile,Tag)=HTTP_CREATED then
|
||||
mmoSet.Text := '.. saved ..';
|
||||
end;
|
||||
|
||||
end.
|
Reference in New Issue
Block a user