wmusers.pp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. unit wmusers;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, FileUtil, LResources, fpwebdata, extjsjson, extjsxml,
  6. HTTPDefs, websession, fpHTTP, fpWeb, dbf, db;
  7. type
  8. { TFPWebModule1 }
  9. TFPWebModule1 = class(TFPWebModule)
  10. Datasource1: TDatasource;
  11. Dbf1: TDbf;
  12. ExtJSJSONDataFormatter1: TExtJSJSONDataFormatter;
  13. ExtJSJSonWebdataInputAdaptor1: TExtJSJSonWebdataInputAdaptor;
  14. ExtJSXMLDataFormatter1: TExtJSXMLDataFormatter;
  15. ExtJSXMLWebdataInputAdaptor1: TExtJSXMLWebdataInputAdaptor;
  16. FPWebDataProvider1: TFPWebDataProvider;
  17. procedure DataModuleCreate(Sender: TObject);
  18. procedure DataModuleRequest(Sender: TObject; ARequest: TRequest;
  19. AResponse: TResponse; var Handled: Boolean);
  20. private
  21. { private declarations }
  22. public
  23. { public declarations }
  24. end;
  25. var
  26. FPWebModule1: TFPWebModule1;
  27. implementation
  28. uses dbugintf;
  29. { TFPWebModule1 }
  30. procedure TFPWebModule1.DataModuleRequest(Sender: TObject; ARequest: TRequest;
  31. AResponse: TResponse; var Handled: Boolean);
  32. Var
  33. CP : TCustomHTTPDataContentProducer;
  34. M : TMemoryStream;
  35. A : TCustomWebDataInputAdaptor;
  36. PN : String;
  37. begin
  38. PN:=ARequest.GetNextPathInfo;
  39. If ARequest.QueryFields.values['format']='xml' then
  40. begin
  41. A:=ExtJSXMLWebdataInputAdaptor1;
  42. CP:=ExtJSXMLDataFormatter1;
  43. end
  44. else
  45. begin
  46. A:=ExtJSJSONWebdataInputAdaptor1;
  47. cp:=ExtJSJSONDataFormatter1;
  48. end;
  49. FPWebDataProvider1.Adaptor:=A;
  50. CP.Adaptor:=A;
  51. CP.Adaptor.Request:=ARequest;
  52. CP.Provider:=FPWebDataProvider1;
  53. M:=TmemoryStream.Create;
  54. AResponse.ContentStream:=M;
  55. AResponse.ContentType:=CP.DataContentType;
  56. CP.GetContent(ARequest,M,Handled);
  57. M.Position:=0;
  58. AResponse.SendContent;
  59. end;
  60. procedure TFPWebModule1.DataModuleCreate(Sender: TObject);
  61. begin
  62. DBF1.TableName:=ExtractFilePath(ParamStr(0))+'users.dbf';
  63. DBF1.Open;
  64. With DBF1.FieldByname('ID') do
  65. ProviderFlags:=ProviderFlags+[pfInKey];
  66. end;
  67. initialization
  68. {$I wmusers.lrs}
  69. RegisterHTTPModule('Provider', TFPWebModule1);
  70. end.