Renderer, ...: use PixelRect::GetCenter()
[xcsoar.git] / test / src / DownloadFile.cpp
blobdfd1f08e2de0f56460bc577f66e3d8876631b941
1 /*
2 Copyright_License {
4 XCSoar Glide Computer - http://www.xcsoar.org/
5 Copyright (C) 2000-2013 The XCSoar Project
6 A detailed list of copyright holders can be found in the file "AUTHORS".
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 #include "Net/Session.hpp"
25 #include "Net/Request.hpp"
26 #include "Net/Init.hpp"
27 #include "OS/ConvertPathName.hpp"
29 #include <iostream>
30 #include <stdio.h>
31 using namespace std;
33 static bool
34 Download(const char *url, const TCHAR *path)
36 cout << "Creating Session ... ";
37 Net::Session session;
38 cout << (session.Error() ? "failed" : "done") << endl;
39 if (session.Error())
40 return false;
42 cout << "Creating Request ... ";
43 Net::Request request(session, url);
44 if (!request.Send()) {
45 cout << "failed" << endl;
46 return false;
49 cout << "done" << endl;
51 cout << "Reading Response:" << endl;
52 cout << "-------------------------------------------------" << endl;
54 FILE *file = path ? _tfopen(path, _T("wb")) : NULL;
56 char buffer[256];
57 while (request.Read(buffer, sizeof(buffer))) {
58 cout << buffer;
60 if (file != NULL)
61 fputs(buffer, file);
64 if (file != NULL)
65 fclose(file);
67 cout << "-------------------------------------------------" << endl;
69 return true;
72 int
73 main(int argc, char *argv[])
75 if (argc < 2) {
76 cout << "Usage: " << argv[0] << " <url> [<filename>]" << endl;
77 cout << " <url> is the absolute url of the resource you are requesting" << endl << endl;
78 cout << " <filename> is the path where the requested file should be saved (optional)" << endl << endl;
79 cout << " Example: " << argv[0] << " http://www.domain.com/docs/readme.htm readme.htm" << endl;
80 return 1;
83 Net::Initialise();
85 const char *url = argv[1];
86 Download(url, argc > 2 ? (const TCHAR *)PathName(argv[2]) : NULL);
88 Net::Deinitialise();
90 return 0;