24 , filename_ (filename)
40 , filename_ (filename)
41 , filesize_ (filesize)
65 for (; it != it_end; it++)
67 for (; its != its_end; its++)
138 if (boost::filesystem::exists (
path_))
142 boost::filesystem::recursive_directory_iterator (
path_),
143 boost::filesystem::recursive_directory_iterator (),
144 std::back_inserter (vp)
147 VPathType::const_iterator it (vp.begin ());
148 VPathType::const_iterator it_end (vp.end ());
150 for (; it != it_end; it++)
152 if (boost::filesystem::is_regular_file (*it))
154 int i = ((*it).string ()).length () + 1;
155 int j =
path_.string ().length ();
158 f.open(((*it).string ()).c_str ());
162 ((*it).string ()).substr (
path_.string ().length () + 1, i),
164 boost::filesystem::file_size ((*it).string ()))
168 if (boost::filesystem::is_directory((*it)))
170 int i = ((*it).string ()).length () + 1;
171 int j =
path_.string ().length ();
175 substr(
path_.string ().length () + 1, i),
182 catch (
const boost::filesystem::filesystem_error& ex)
184 std::cout << ex.what () << std::endl;
195 for (; it != it_end; it++)
197 name = (*it)->GetFilename ();
199 if ((*it)->GetMd5 () != elt->
GetMd5 ())
201 std::replace(name.begin (), name.end (),
'\\',
'/');
202 return ((*it)->GetMd5 ().compare (
"0") == 0 ? name +
"0" : name);
209 std::replace(name.begin (), name.end (),
'\\',
'/');
210 return (elt->
GetMd5 ().compare (
"0") == 0 ? name +
"0" : name);
232 if (boost::filesystem::exists (
path_))
237 for (; it != it_end; it++)
241 vbis.
Add (
new MyFile (ret, (*it)->GetFilesize ()));
245 catch (
const boost::filesystem::filesystem_error& ex)
247 std::cout << ex.what () << std::endl;
264 std::replace (path.begin (), path.end (),
'\\',
'/');
266 if (server.connect (address).isOk ())
268 if (server.login (login, pw).isOk ())
270 server.changeDirectory (
"test");
272 for (; it != it_end; it++)
274 String n = (*it)->Filename;
275 std::replace (n.begin (), n.end (),
'\\',
'/');
278 int i = n.rfind (
'/');
282 if (n[n.size () - 1] ==
'0')
285 name = n.substr(0, n.size () - 1);
286 boost::filesystem::create_directory(path +
"/" + name);
290 if (i != String::npos)
292 name.assign (n, i + 1, n.size ());
293 newpath.assign (n, 0, i);
299 (newpath.empty () ? name : (newpath +
"/" + name)).c_str (),
300 (newpath.empty () ? path : (path +
"/" + newpath)).c_str (), sf::Ftp::Binary);
304 server.disconnect ();
308 std::cout <<
"Failed to connect" << std::endl;
320 boost::asio::io_service io_service;
322 size_t vectorSize = vs.
Count ();
329 for (; it != it_end; it++)
332 boost::asio::ip::tcp::resolver resolver (io_service);
333 boost::asio::ip::tcp::resolver::query query (
"yapog.free.fr",
"http");
334 boost::asio::ip::tcp::resolver::iterator endpoint_iterator = resolver.resolve (query);
335 boost::asio::ip::tcp::socket socket (io_service);
336 boost::asio::connect (socket, endpoint_iterator);
338 boost::asio::streambuf request;
339 OStream request_stream (&request);
340 String n = (*it)->Filename;
341 std::replace (n.begin (), n.end (),
'\\',
'/');
345 int i = n.rfind (
'/');
348 if (n[n.size () - 1] ==
'0')
351 name = n.substr(0, n.size () - 1);
352 boost::filesystem::create_directory (path +
"/" + name);
356 if (i != String::npos)
358 name.assign (n, i + 1, n.size ());
359 newpath.assign (n, 0, i);
365 request_stream <<
"GET " << (
"/test/" + (newpath.empty () ? name : (newpath +
"/" + name)))
367 <<
"Host: " <<
"yapog.free.fr" <<
"\r\n"
369 <<
"Connection: close\r\n\r\n";
370 boost::asio::write (socket, request);
372 boost::asio::streambuf response;
373 boost::asio::read_until (socket, response,
"\r\n");
375 IStream response_stream (&response);
377 response_stream >> http_version;
379 response_stream >> status_code;
381 std::getline (response_stream, status_message);
382 if (!response_stream || http_version.substr(0, 5) !=
"HTTP/")
384 std::cout <<
"Invalid response\r\n";
387 if (status_code != 200)
389 std::cout <<
"Response returned with status code "
390 << status_code <<
"\r\n";
394 size_t bytes = (*it)->Filesize;
395 boost::system::error_code error;
397 std::stringstream ss;
399 outfile.open((newpath.empty () ? path +
"/" + name :
400 (path +
"/" + newpath +
"/" + name)),
402 size_t sizetotal = 0;
404 while (boost::asio::read (socket, response,
405 boost::asio::transfer_at_least (1), error))
407 float percentageSize = 0;
408 sizetotal += response.size ();
409 percentageSize = (((float) sizetotal / (
float) bytes) * 100);
414 if (sizetotal > bytes)
415 str.erase (0, sizetotal - bytes);
418 if (error != boost::asio::error::eof)
419 throw boost::system::system_error (error);
424 catch (std::exception& e)
426 std::cout <<
"Exception: " << e.what () << std::endl;
437 size_t vectorSize = vs.
Count ();
444 for (; it != it_end; it++)
447 String n = (*it)->Filename;
448 std::replace (n.begin (), n.end (),
'\\',
'/');
452 int i = n.rfind (
'/');
455 if (n[n.size () - 1] ==
'0')
458 name = n.substr(0, n.size () - 1);
459 boost::filesystem::create_directory (path +
"/" + name);
463 if (i != String::npos)
465 name.assign (n, i + 1, n.size ());
466 newpath.assign (n, 0, i);
473 OFStream out (path +
"/" + n, OFStream::trunc|OFStream::binary);