using namespace std;
using namespace zypp::base;
-namespace zypp
+namespace zypp
{
-namespace media
+namespace media
{
Pathname MediaAria2c::_cookieFile = "/var/lib/YaST2/cookies";
};
ExternalProgram aria(argv, ExternalProgram::Stderr_To_Stdout);
-
+
std::string ariaResponse( aria.receiveLine());
string::size_type pos = ariaResponse.find('/', 0 );
if( pos != string::npos )
true ) // does_download
{
MIL << "MediaAria2c::MediaAria2c(" << url_r << ", " << attach_point_hint_r << ")" << endl;
-
+
if( !attachPoint().empty())
{
PathInfo ainfo(attachPoint());
void MediaAria2c::attachTo (bool next)
{
// clear last arguments
- _args.clear();
+ _args.clear();
if ( next )
ZYPP_THROW(MediaNotSupportedException(_url));
setAttachPoint( mountpoint, true);
}
- disconnectFrom();
+ disconnectFrom();
// Build the aria command.
_args.push_back(_aria2cPath.asString());
_args.push_back("--summary-interval=1");
_args.push_back("--follow-metalink=mem");
_args.push_back( "--check-integrity=true");
-
+
// add the anonymous id.
_args.push_back(str::form("--header=%s", anonymousIdHeader() ));
_args.push_back(str::form("--header=%s", distributionFlavorHeader() ));
// TODO add debug option
-
+
// Transfer timeout
{
_xfer_timeout = TRANSFER_TIMEOUT;
DBG << "Anonymous FTP identification: '" << id << "'" << endl;
_userpwd = "anonymous:" + id;
}
- }
- else
+ }
+ else
{
if ( _url.getScheme() == "ftp" )
- {
+ {
_args.push_back(str::form("--ftp-user=%s", _url.getUsername().c_str() ));
}
else if ( _url.getScheme() == "http" ||
{
_args.push_back(str::form("--http-user=%s", _url.getUsername().c_str() ));
}
-
+
if ( _url.getPassword().size() )
{
if ( _url.getScheme() == "ftp" )
- {
+ {
_args.push_back(str::form("--ftp-passwd=%s", _url.getPassword().c_str() ));
}
else if ( _url.getScheme() == "http" ||
// note, aria2c does not support setting the auth type with
// (basic, digest yet)
-
+
/*---------------------------------------------------------------*
CURLOPT_PROXY: host[:port]
if ( ! _proxyuserpwd.empty() ) {
_args.push_back(str::form("--http-proxy-user=%s", _proxyuserpwd.c_str() ));
-
+
string proxypassword( _url.getQueryParam( "proxypassword" ) );
if ( ! proxypassword.empty() ) {
_args.push_back(str::form("--http-proxy-passwd=%s", proxypassword.c_str() ));
// FIXME: need a derived class to propelly compare url's
MediaSourceRef media( new MediaSource(_url.getScheme(), _url.asString()));
setMediaSource(media);
-
+
}
bool
void MediaAria2c::getFile( const Pathname & filename ) const
{
// Use absolute file name to prevent access of files outside of the
- // hierarchy below the attach point.
+ // hierarchy below the attach point.
getFileCopy(filename, localPath(filename).absolutename());
}
{
callback::SendReport<DownloadProgressReport> report;
- Url fileurl(getFileUrl(_url, filename));
+ Url fileurl(getFileUrl(_url, filename));
bool retry = false;
ExternalProgram::Arguments args = _args;
args.push_back(str::form("--dir=%s", target.dirname().c_str()));
args.push_back(fileurl.asString());
-
+
do
{
try
- {
- report->start(_url, target.asString() );
-
- ExternalProgram aria(args, ExternalProgram::Stderr_To_Stdout);
- int nLine = 0;
+ {
+ report->start(_url, target.asString() );
+
+ ExternalProgram aria(args, ExternalProgram::Stderr_To_Stdout);
+ int nLine = 0;
//Process response
for(std::string ariaResponse( aria.receiveLine());
- ariaResponse.length();
+ ariaResponse.length();
ariaResponse = aria.receiveLine())
- {
+ {
//cout << ariaResponse;
if (!ariaResponse.substr(0,31).compare("Exception: Authorization failed") )
if (!ariaResponse.substr(0,29).compare("Exception: Resource not found") )
{
ZYPP_THROW(MediaFileNotFoundException(_url, filename));
- }
+ }
if (!ariaResponse.substr(0,9).compare("[#2 SIZE:")) {
-
- if (!nLine)
+
+ if (!nLine)
{
size_t left_bound = ariaResponse.find('(',0) + 1;
size_t count = ariaResponse.find('%',left_bound) - left_bound;
//progressData.toMax();
report->progress ( std::atoi(ariaResponse.substr(left_bound, count).c_str()), _url, -1, -1 );
nLine = 1;
- }
+ }
else
{
nLine = 0;
- }
- }
+ }
+ }
}
aria.close();
-
+
report->finish( _url , zypp::media::DownloadProgressReport::NO_ERROR, "");
retry = false;
}
-
+
// retry with proper authentication data
catch (MediaUnauthorizedException & ex_r)
{
retry = true;
else
{
- report->finish(fileurl, zypp::media::DownloadProgressReport::ACCESS_DENIED, ex_r.asUserString());
+ report->finish(fileurl, zypp::media::DownloadProgressReport::ACCESS_DENIED, ex_r.asUserHistory());
ZYPP_RETHROW(ex_r);
}
catch (MediaException & excpt_r)
{
// FIXME: error number fix
- report->finish(fileurl, zypp::media::DownloadProgressReport::ERROR, excpt_r.asUserString());
+ report->finish(fileurl, zypp::media::DownloadProgressReport::ERROR, excpt_r.asUserHistory());
ZYPP_RETHROW(excpt_r);
}
}
bool MediaAria2c::doGetDoesFileExist( const Pathname & filename ) const
{
-
+
DBG << filename.asString() << endl;
return true;
}
getDirectoryYast( retlist, dirname, dots );
}
-std::string MediaAria2c::getAria2cVersion()
+std::string MediaAria2c::getAria2cVersion()
{
const char* argv[] =
{
Pathname MediaAria2c::whereisAria2c()
{
Pathname aria2cPathr(ARIA_DEFAULT_BINARY);
-
+
const char* argv[] =
{
"whereis",
};
ExternalProgram aria(argv, ExternalProgram::Stderr_To_Stdout);
-
+
std::string ariaResponse( aria.receiveLine());
aria.close();
-
+
string::size_type pos = ariaResponse.find('/', 0 );
- if( pos != string::npos )
+ if( pos != string::npos )
{
aria2cPathr = ariaResponse;
string::size_type pose = ariaResponse.find(' ', pos + 1 );
aria2cPathr = ariaResponse.substr( pos , pose - pos );
MIL << "We will use aria2c located here: " << ariaResponse.substr( pos , pose - pos) << endl;
}
- else
+ else
{
MIL << "We don't know were is ari2ac binary. We will use aria2c located here: " << aria2cPathr << endl;
}
-
+
return aria2cPathr;
}
RpmInstallPackageReceiver::~RpmInstallPackageReceiver ()
{
}
-
- void RpmInstallPackageReceiver::reportbegin()
+
+ void RpmInstallPackageReceiver::reportbegin()
{
}
-
- void RpmInstallPackageReceiver::reportend()
+
+ void RpmInstallPackageReceiver::reportend()
{
}
/** Start the operation */
- void RpmInstallPackageReceiver::start( const Pathname & name )
+ void RpmInstallPackageReceiver::start( const Pathname & name )
{
_report->start( _resolvable );
_abort = false;
_abort = ! _report->progress( percent, _resolvable );
return _abort;
}
-
- rpm::RpmInstallReport::Action
+
+ rpm::RpmInstallReport::Action
RpmInstallPackageReceiver::problem( Exception & excpt_r )
{
- rpm::InstallResolvableReport::Action user =
+ rpm::InstallResolvableReport::Action user =
_report->problem( _resolvable
, rpm::InstallResolvableReport::INVALID
- , excpt_r.asUserString()
+ , excpt_r.asUserHistory()
, _level
);
-
+
switch (user) {
- case rpm::InstallResolvableReport::RETRY:
+ case rpm::InstallResolvableReport::RETRY:
return rpm::RpmInstallReport::RETRY;
- case rpm::InstallResolvableReport::ABORT:
+ case rpm::InstallResolvableReport::ABORT:
return rpm::RpmInstallReport::ABORT;
- case rpm::InstallResolvableReport::IGNORE:
+ case rpm::InstallResolvableReport::IGNORE:
return rpm::RpmInstallReport::IGNORE;
}
-
+
return rpm::RpmInstallReport::problem( excpt_r );
}
{
_report->finish( _resolvable, rpm::InstallResolvableReport::INVALID, std::string(), _level );
}
-
+
void RpmInstallPackageReceiver::tryLevel( target::rpm::InstallResolvableReport::RpmLevel level_r )
{
_level = level_r;
RpmRemovePackageReceiver::~RpmRemovePackageReceiver ()
{
}
-
- void RpmRemovePackageReceiver::reportbegin()
+
+ void RpmRemovePackageReceiver::reportbegin()
{
}
-
- void RpmRemovePackageReceiver::reportend()
+
+ void RpmRemovePackageReceiver::reportend()
{
}
/** Start the operation */
- void RpmRemovePackageReceiver::start( const std::string & name )
+ void RpmRemovePackageReceiver::start( const std::string & name )
{
_report->start( _resolvable );
}
_abort = ! _report->progress( percent, _resolvable );
return _abort;
}
-
- rpm::RpmRemoveReport::Action
+
+ rpm::RpmRemoveReport::Action
RpmRemovePackageReceiver::problem( Exception & excpt_r )
{
- rpm::RemoveResolvableReport::Action user =
+ rpm::RemoveResolvableReport::Action user =
_report->problem( _resolvable
, rpm::RemoveResolvableReport::INVALID
- , excpt_r.asUserString()
+ , excpt_r.asUserHistory()
);
-
+
switch (user) {
- case rpm::RemoveResolvableReport::RETRY:
+ case rpm::RemoveResolvableReport::RETRY:
return rpm::RpmRemoveReport::RETRY;
- case rpm::RemoveResolvableReport::ABORT:
+ case rpm::RemoveResolvableReport::ABORT:
return rpm::RpmRemoveReport::ABORT;
- case rpm::RemoveResolvableReport::IGNORE:
+ case rpm::RemoveResolvableReport::IGNORE:
return rpm::RpmRemoveReport::IGNORE;
}
-
+
return rpm::RpmRemoveReport::problem( excpt_r );
}