@@ -41,6 +41,7 @@ interface
41
41
{ TMainForm }
42
42
43
43
TMainForm = class (TForm)
44
+ FetchBtn: TButton;
44
45
StopBtn: TButton;
45
46
DownloadBtn: TButton;
46
47
DownloadProgressLabel: TLabel;
@@ -52,11 +53,12 @@ TMainForm = class(TForm)
52
53
ProgressStaticLabel: TLabel;
53
54
URLEdit: TEdit;
54
55
UrlStaticLabel: TLabel;
56
+ procedure FetchBtnClick (Sender: TObject);
55
57
procedure StopBtnClick (Sender: TObject);
56
58
procedure DownloadBtnClick (Sender: TObject);
57
59
procedure FormDestroy (Sender: TObject);
58
60
procedure UpdateProgress (ALen, APos: Int64; AHRLen, AHRPos: String);
59
- procedure UpdateStatus (Status: TStatus; ResponseCode: Integer; Msg: String);
61
+ procedure UpdateStatus (Status: TStatus; ResponseCode: Integer; Msg: String; Body: String );
60
62
private
61
63
LazSimpleHTTPsGet: TLazSimpleHTTPsGet;
62
64
public
@@ -78,9 +80,12 @@ procedure TMainForm.DownloadBtnClick(Sender: TObject);
78
80
Filename: String;
79
81
begin
80
82
try
81
- if not Assigned(LazSimpleHTTPsGet) then
83
+ if Length(URLEdit.Text) > 0 then
82
84
begin
83
- LazSimpleHTTPsGet := TLazSimpleHTTPsGet.Create();
85
+ if not Assigned(LazSimpleHTTPsGet) then
86
+ begin
87
+ LazSimpleHTTPsGet := TLazSimpleHTTPsGet.Create();
88
+ end ;
84
89
85
90
Filename := LazSimpleHTTPsGet.GetFileNameFromURL(URLEdit.Text);
86
91
SaveDialog.FileName := Filename;
@@ -90,14 +95,20 @@ procedure TMainForm.DownloadBtnClick(Sender: TObject);
90
95
LazSimpleHTTPsGet.Filename := SaveDialog.FileName;
91
96
LazSimpleHTTPsGet.OnProgress := @UpdateProgress;
92
97
LazSimpleHTTPsGet.onStatus := @UpdateStatus;
93
- LazSimpleHTTPsGet.Start;
94
- DownloadBtn.Enabled := False;
95
- StopBtn.Enabled := True;
98
+ if LazSimpleHTTPsGet.Get then
99
+ begin
100
+ DownloadBtn.Enabled := False;
101
+ StopBtn.Enabled := True;
102
+ end
103
+ else
104
+ begin
105
+ ShowMessage(' Download already running' );
106
+ end ;
96
107
end ;
97
108
end
98
109
else
99
110
begin
100
- ShowMessage(' Download already running ' );
111
+ ShowMessage(' Please enter a url ' );
101
112
end ;
102
113
except
103
114
on E: Exception do
@@ -112,7 +123,6 @@ procedure TMainForm.StopBtnClick(Sender: TObject);
112
123
begin
113
124
if Assigned(LazSimpleHTTPsGet) then
114
125
begin
115
- LazSimpleHTTPsGet.Stop;
116
126
StatusInfoMemo.Append(' Download stopped' );
117
127
FreeAndNil(LazSimpleHTTPsGet);
118
128
DownloadBtn.Enabled := True;
@@ -122,12 +132,46 @@ procedure TMainForm.StopBtnClick(Sender: TObject);
122
132
end ;
123
133
end ;
124
134
135
+ procedure TMainForm.FetchBtnClick (Sender: TObject);
136
+ begin
137
+ try
138
+ if Length(URLEdit.Text) > 0 then
139
+ begin
140
+ if not Assigned(LazSimpleHTTPsGet) then
141
+ begin
142
+ LazSimpleHTTPsGet := TLazSimpleHTTPsGet.Create();
143
+ end ;
144
+
145
+ LazSimpleHTTPsGet.URL := URLEdit.Text;
146
+ LazSimpleHTTPsGet.OnProgress := @UpdateProgress;
147
+ LazSimpleHTTPsGet.onStatus := @UpdateStatus;
148
+ if LazSimpleHTTPsGet.Fetch then
149
+ begin
150
+ DownloadBtn.Enabled := False;
151
+ StopBtn.Enabled := True;
152
+ end
153
+ else
154
+ begin
155
+ ShowMessage(' Download already running' );
156
+ end ;
157
+ end
158
+ else
159
+ begin
160
+ ShowMessage(' Please enter a url' );
161
+ end ;
162
+ except
163
+ on E: Exception do
164
+ begin
165
+ ShowMessage(E.Message);
166
+ end ;
167
+ end ;
168
+ end ;
169
+
125
170
// Form closed, stop downloads and free and nil LazSimpleHTTPsGet:
126
171
procedure TMainForm.FormDestroy (Sender: TObject);
127
172
begin
128
173
if Assigned(LazSimpleHTTPsGet) then
129
174
begin
130
- LazSimpleHTTPsGet.Stop;
131
175
FreeAndNil(LazSimpleHTTPsGet);
132
176
end ;
133
177
end ;
@@ -146,7 +190,7 @@ procedure TMainForm.UpdateProgress(ALen, APos: Int64; AHRLen, AHRPos: String);
146
190
end ;
147
191
148
192
// Status event (download start, done, error):
149
- procedure TMainForm.UpdateStatus (Status: TStatus; ResponseCode: Integer; Msg: String);
193
+ procedure TMainForm.UpdateStatus (Status: TStatus; ResponseCode: Integer; Msg: String; Body: String );
150
194
begin
151
195
if Status = TStatus.sStart then
152
196
begin
@@ -155,6 +199,14 @@ procedure TMainForm.UpdateStatus(Status: TStatus; ResponseCode: Integer; Msg: St
155
199
else if Status = TStatus.sDone then
156
200
begin
157
201
StatusInfoMemo.Append(' Download done -> (HTTP Status: ' + IntToStr(ResponseCode) + ' /' + Msg + ' )' );
202
+ if Length(Body) > 0 then
203
+ begin
204
+ StatusInfoMemo.Append(' -- Body Start ------------------' );
205
+ StatusInfoMemo.Append(Body);
206
+ StatusInfoMemo.Append(' -- Body End --------------------' );
207
+ end ;
208
+ DownloadBtn.Enabled := True;
209
+ StopBtn.Enabled := False;
158
210
DownloadProgressLabel.Caption := ' -/-' ;
159
211
ProgressBar.Position := 0 ;
160
212
end
0 commit comments