wmusers.pp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. unit wmusers;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, 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. {$R *.lfm}
  29. uses dbugintf;
  30. { TFPWebModule1 }
  31. procedure TFPWebModule1.DataModuleRequest(Sender: TObject; ARequest: TRequest;
  32. AResponse: TResponse; var Handled: Boolean);
  33. Var
  34. CP : TCustomHTTPDataContentProducer;
  35. M : TMemoryStream;
  36. A : TCustomWebDataInputAdaptor;
  37. PN : String;
  38. begin
  39. PN:=ARequest.GetNextPathInfo;
  40. If ARequest.QueryFields.values['format']='xml' then
  41. begin
  42. A:=ExtJSXMLWebdataInputAdaptor1;
  43. CP:=ExtJSXMLDataFormatter1;
  44. end
  45. else
  46. begin
  47. A:=ExtJSJSONWebdataInputAdaptor1;
  48. cp:=ExtJSJSONDataFormatter1;
  49. end;
  50. FPWebDataProvider1.Adaptor:=A;
  51. CP.Adaptor:=A;
  52. CP.Adaptor.Request:=ARequest;
  53. CP.Provider:=FPWebDataProvider1;
  54. M:=TmemoryStream.Create;
  55. AResponse.ContentStream:=M;
  56. AResponse.ContentType:=CP.DataContentType;
  57. CP.GetContent(ARequest,M,Handled);
  58. M.Position:=0;
  59. AResponse.SendContent;
  60. end;
  61. procedure TFPWebModule1.DataModuleCreate(Sender: TObject);
  62. begin
  63. DBF1.TableName:=ExtractFilePath(ParamStr(0))+'users.dbf';
  64. DBF1.Open;
  65. With DBF1.FieldByname('ID') do
  66. ProviderFlags:=ProviderFlags+[pfInKey];
  67. end;
  68. initialization
  69. RegisterHTTPModule('Provider', TFPWebModule1);
  70. end.