delphimvcframework/unittests/RESTClient/MVCFramework.Tests.AppController.pas
Ezequiel Juliano Müller 04b83cc0f5 Refactoring to:
* Enable working with listeners in a DI context.
* Class Changes to provide a better understanding of the functionality;
* Removal singletons variables (not the framework that must manage it);
* README update;
2016-06-16 17:13:35 -03:00

122 lines
2.2 KiB
ObjectPascal

unit MVCFramework.Tests.AppController;
interface
uses
System.SysUtils,
System.Generics.Collections,
System.Classes,
MVCFramework,
MVCFramework.Commons,
MVCFramework.Server;
type
TAppUser = class
strict private
FCod: Integer;
FName: string;
FPass: string;
public
property Cod: Integer read FCod write FCod;
property Name: string read FName write FName;
property Pass: string read FPass write FPass;
end;
[MVCPath('/')]
TAppController = class(TMVCController)
public
[MVCPath('/hello')]
[MVCHTTPMethod([httpGET])]
procedure HelloWorld(ctx: TWebContext);
[MVCPath('/user')]
[MVCHTTPMethod([httpGET])]
procedure GetUser(ctx: TWebContext);
[MVCPath('/user/save')]
[MVCHTTPMethod([httpPOST])]
procedure PostUser(ctx: TWebContext);
[MVCPath('/users')]
[MVCHTTPMethod([httpGET])]
procedure GetUsers(ctx: TWebContext);
[MVCPath('/users/save')]
[MVCHTTPMethod([httpPOST])]
procedure PostUsers(ctx: TWebContext);
end;
implementation
{ TAppController }
procedure TAppController.GetUser(ctx: TWebContext);
var
LUser: TAppUser;
begin
LUser := TAppUser.Create;
LUser.Cod := 1;
LUser.Name := 'Ezequiel';
LUser.Pass := '123';
Render(LUser);
end;
procedure TAppController.GetUsers(ctx: TWebContext);
var
LUsers: TObjectList<TAppUser>;
LUser: TAppUser;
I: Integer;
begin
LUsers := TObjectList<TAppUser>.Create(True);
for I := 0 to 10 do
begin
LUser := TAppUser.Create;
LUser.Cod := I;
LUser.Name := 'Ezequiel ' + IntToStr(I);
LUser.Pass := IntToStr(I);
LUsers.Add(LUser);
end;
Self.Render<TAppUser>(LUsers);
end;
procedure TAppController.HelloWorld(ctx: TWebContext);
begin
Render('Hello World called with GET');
end;
procedure TAppController.PostUser(ctx: TWebContext);
var
LUser: TAppUser;
begin
LUser := ctx.Request.BodyAs<TAppUser>();
if (LUser.Cod > 0) then
Render('Sucess!')
else
Render('Error!');
LUser.Free;
end;
procedure TAppController.PostUsers(ctx: TWebContext);
var
LUsers: TObjectList<TAppUser>;
begin
LUsers := ctx.Request.BodyAsListOf<TAppUser>();
LUsers.OwnsObjects := True;
if (LUsers.Count > 0) then
Render('Sucess!')
else
Render('Error!');
LUsers.Free;
end;
end.