test.pas 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. unit Test;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. BrookAction, BrookSession;
  6. type
  7. { TVisit }
  8. TVisit = class
  9. private
  10. FCount: Integer;
  11. published
  12. property Count: Integer read FCount write FCount;
  13. end;
  14. { TSession }
  15. TSession = specialize TBrookGSession<TVisit>;
  16. { TMyAction }
  17. TMyAction = class(TBrookAction)
  18. private
  19. FSession: TSession;
  20. public
  21. constructor Create; override;
  22. destructor Destroy; override;
  23. procedure Get; override;
  24. end;
  25. implementation
  26. { TMyAction }
  27. constructor TMyAction.Create;
  28. begin
  29. inherited Create;
  30. FSession := TSession.Create(nil);
  31. end;
  32. destructor TMyAction.Destroy;
  33. begin
  34. FSession.Free;
  35. inherited Destroy;
  36. end;
  37. procedure TMyAction.Get;
  38. begin
  39. FSession.Start(HttpRequest);
  40. Write('<!DOCTYPE HTML>');
  41. Write('<html lang="en-US">');
  42. Write('<head>');
  43. Write(' <meta charset="UTF-8">');
  44. Write(' <title>Visits</title>');
  45. Write('</head>');
  46. Write('<body>');
  47. if FSession.IsEmpty then
  48. begin
  49. Write('Use F5 to show created session.<br />');
  50. FSession.Entity.Count := 1;
  51. end
  52. else
  53. begin
  54. Write('Visit count: %d', [FSession.Entity.Count]);
  55. FSession.Entity.Count := FSession.Entity.Count + 1;
  56. end;
  57. Write('</body>');
  58. Write('</html>');
  59. FSession.Finish(HttpResponse);
  60. end;
  61. initialization
  62. TMyAction.Register('*');
  63. end.