OSDN Git Service

だいぶ進んだ、不要なPathInfoがたくさん出てきた
[newstable/newstable.git] / WebModuleUnit1.pas
1 unit WebModuleUnit1;
2
3 interface
4
5 uses System.SysUtils, System.Classes, Web.HTTPApp, Web.HTTPProd;
6
7 type
8   TWebModule1 = class(TWebModule)
9     readerTop: TPageProducer;
10     top: TPageProducer;
11     writerTop: TPageProducer;
12     writerData: TPageProducer;
13     backnumber: TPageProducer;
14     procedure WebModule1DefaultHandlerAction(Sender: TObject;
15       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
16     procedure WebModuleCreate(Sender: TObject);
17     procedure WebModule1writeMagAction(Sender: TObject; Request: TWebRequest;
18       Response: TWebResponse; var Handled: Boolean);
19     procedure WebModule1selectionAction(Sender: TObject; Request: TWebRequest;
20       Response: TWebResponse; var Handled: Boolean);
21     procedure WebModule1writerDataAction(Sender: TObject; Request: TWebRequest;
22       Response: TWebResponse; var Handled: Boolean);
23     procedure WebModule1readerDataAction(Sender: TObject; Request: TWebRequest;
24       Response: TWebResponse; var Handled: Boolean);
25     procedure WebModule1detailAction(Sender: TObject; Request: TWebRequest;
26       Response: TWebResponse; var Handled: Boolean);
27   private
28     { private \90é\8c¾ }
29     writerId: integer;
30     readerId: integer;
31   public
32     { public \90é\8c¾ }
33   end;
34
35 var
36   WebModuleClass: TComponentClass = TWebModule1;
37
38 implementation
39
40 uses SynMustache, SynCommons, System.JSON, Unit1;
41
42 { %CLASSGROUP 'Vcl.Controls.TControl' }
43
44 {$R *.dfm}
45
46 var
47   mustache: TSynMustache;
48
49 procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
50   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
51 var
52   data: TJSONObject;
53 begin
54   DataModule1.magListAll(data);
55   mustache := TSynMustache.Parse(top.Content);
56   Response.ContentType := 'text/html;charset=utf-8';
57   Response.Content := mustache.RenderJSON(data.ToJSON);
58   data.Free;
59 end;
60
61 procedure TWebModule1.WebModule1detailAction(Sender: TObject;
62   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
63 var
64   data: TJSONObject;
65 begin
66   DataModule1.backnumber(Request.QueryFields.Values['id'].ToInteger, data);
67   Response.ContentType := 'text/html;charset=utf-8';
68   mustache := TSynMustache.Parse(backnumber.Content);
69   Response.Content := mustache.RenderJSON(data.ToString);
70 end;
71
72 procedure TWebModule1.WebModule1readerDataAction(Sender: TObject;
73   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
74 var
75   data: TJSONObject;
76   num: TJSONNumber;
77 begin
78   case Request.MethodType of
79     mtGet:
80       if readerId = 0 then
81       begin
82         Handled := false;
83         Exit;
84       end;
85     mtPut:
86       ;
87     mtPost:
88       with Request.ContentFields do
89       begin
90         data := TJSONObject.Create;
91         data.AddPair('mail', Values['mail']);
92         data.AddPair('password', Values['password']);
93         data.AddPair('name', Values['reader']);
94         DataModule1.createReaderId(data);
95         data.Free;
96       end;
97     mtDelete:
98       with Request.ContentFields do
99       begin
100         data := TJSONObject.Create;
101         num := TJSONNumber.Create(readerId);
102         data.AddPair('id', num);
103         data.AddPair('name', Values['reader']);
104         data.AddPair('mail', Values['mail']);
105         data.AddPair('password', Values['password']);
106         DataModule1.deleteReaderId(data);
107         num.Free;
108         data.Free;
109       end;
110   end;
111   Response.ContentType := 'text/html;charset=utf-8';
112   DataModule1.userView(readerId, data);
113   mustache := TSynMustache.Parse(readerTop.Content);
114   Response.Content := mustache.RenderJSON(data.ToJSON);
115 end;
116
117 procedure TWebModule1.WebModule1selectionAction(Sender: TObject;
118   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
119 var
120   id: integer;
121 begin
122   id := DataModule1.magid(Request.ContentFields.Values['name']);
123   case Request.MethodType of
124     mtGet:
125       Handled := false;
126     mtPost:
127       DataModule1.magIdOn(readerId, id);
128     mtDelete:
129       DataModule1.magIdOff(readerId, id);
130   end;
131 end;
132
133 procedure TWebModule1.WebModule1writeMagAction(Sender: TObject;
134   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
135 var
136   data: TJSONObject;
137 begin
138   data := TJSONObject.Create;
139   data.AddPair('magName', Request.ContentFields.Values['name']);
140   data.AddPair('comment', Request.ContentFields.Values['comment']);
141   data.AddPair('day', Request.ContentFields.Values['day']);
142   data.AddPair('enable', TJSONTrue.Create);
143   DataModule1.createMagId(writerId, data);
144   data.Free;
145   Response.SendRedirect('/writer/data');
146 end;
147
148 procedure TWebModule1.WebModule1writerDataAction(Sender: TObject;
149   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
150 var
151   data: TJSONObject;
152 begin
153   case Request.MethodType of
154     mtGet:
155       if writerId = 0 then
156       begin
157         Handled := false;
158         Exit;
159       end;
160     mtPost:
161       with Request.ContentFields do
162       begin
163         data := TJSONObject.Create;
164         data.AddPair('mail', Values['mail']);
165         data.AddPair('password', Values['password']);
166         data.AddPair('name', Values['writer']);
167         DataModule1.createWriterId(data);
168         data.Free;
169       end;
170     mtPut:
171       begin
172         data := TJSONObject.Create;
173         with Request.ContentFields do
174         begin
175           data.AddPair('writer', Values['name']);
176           data.AddPair('mail', Values['mail']);
177           data.AddPair('password', Values['password']);
178         end;
179         DataModule1.updateWriterId(writerId, data);
180         data.Free;
181       end;
182   end;
183   data := TJSONObject.Create;
184   DataModule1.magazines(writerId, data);
185   Response.ContentType := 'text/html;charset=utf-8';
186   mustache := TSynMustache.Parse(writerTop.Content);
187   Response.Content := mustache.RenderJSON(data.ToJSON);
188   data.Free;
189 end;
190
191 procedure TWebModule1.WebModuleCreate(Sender: TObject);
192 begin
193   readerId := 1;
194   writerId := 1;
195 end;
196
197 end.