@ -1,24 +1,25 @@
//#include <urdl/istream.hpp>
// using Poco::Net
# include "Poco/URIStreamOpener.h"
# include "Poco/StreamCopier.h"
# include "Poco/Path.h"
# include "Poco/URI.h"
# include "Poco/Exception.h"
# include "Poco/Net/HTTPStreamFactory.h"
# include "Poco/Net/FTPStreamFactory.h"
using Poco : : URIStreamOpener ;
using Poco : : StreamCopier ;
using Poco : : Path ;
using Poco : : URI ;
using Poco : : Exception ;
using Poco : : Net : : HTTPStreamFactory ;
using Poco : : Net : : FTPStreamFactory ;
//#include "Poco/URIStreamOpener.h"
//#include "Poco/StreamCopier.h"
//#include "Poco/Path.h"
//#include "Poco/URI.h"
//#include "Poco/Exception.h"
//#include "Poco/Net/HTTPStreamFactory.h"
//#include "Poco/Net/FTPStreamFactory.h"
//using Poco::URIStreamOpener;
//using Poco::StreamCopier;
//using Poco::Path;
//using Poco::URI;
//using Poco::Exception;
//using Poco::Net::HTTPStreamFactory;
//using Poco::Net::FTPStreamFactory;
# include <string>
# include <iostream>
# include <memory>
# include <curl/curl.h>
# include "fetchfile.hpp"
using namespace std ;
@ -27,21 +28,42 @@ Fetchfile::Fetchfile( string basedir ) {
Fetchfile : : basedir = basedir ;
}
bool Fetchfile : : fetch ( list < string > & log , url_t url ) {
bool Fetchfile : : fetch ( list < string > & log , fetch_t fetch ) {
//urdl::istream filestream (url);
// using Poco::Net
HTTPStreamFactory : : registerFactory ( ) ;
FTPStreamFactory : : registerFactory ( ) ;
try {
URI uri ( url ) ;
unique_ptr < istream > pStr ( URIStreamOpener : : defaultOpener ( ) . open ( uri ) ) ;
StreamCopier : : copyStream ( * pStr . get ( ) , std : : cout ) ;
} catch ( Exception & e ) {
log . push_back ( " Unable to open URL ' " + url + " ', because ' " + e . displayText ( ) + " ' " ) ;
return false ;
}
return true ;
// HTTPStreamFactory::registerFactory();
// FTPStreamFactory::registerFactory();
// try {
// URI uri(url);
// unique_ptr<istream> pStr(URIStreamOpener::defaultOpener().open(uri));
// StreamCopier::copyStream(*pStr.get(), std::cout);
// } catch (Exception &e) {
// log.push_back( "Unable to open URL '" + url + "', because '" + e.displayText() + "'" );
// return false;
// }
CURL * curl ;
FILE * fp ;
CURLcode result ;
curl = curl_easy_init ( ) ;
if ( curl ) {
fp = fopen ( fetch . filename . c_str ( ) , " wb " ) ;
curl_easy_setopt ( curl , CURLOPT_URL , fetch . url . c_str ( ) ) ;
// FIXME: curl needs a write function if WIN32,
// see https://curl.haxx.se/libcurl/c/CURLOPT_WRITEFUNCTION.html#DESCRIPTION
curl_easy_setopt ( curl , CURLOPT_WRITEFUNCTION , NULL ) ;
curl_easy_setopt ( curl , CURLOPT_WRITEDATA , fp ) ;
result = curl_easy_perform ( curl ) ;
curl_easy_cleanup ( curl ) ;
fclose ( fp ) ;
} else {
return false ;
}
return true ;
}
bool Fetchfile : : validate ( list < string > & log ) {
return true ;
}
// vim: set tabstop=4 softtabstop=0 expandtab shiftwidth=4 smarttab