+++ /dev/null
-/*---------------------------------------------------------------------\
-| ____ _ __ __ ___ |
-| |__ / \ / / . \ . \ |
-| / / \ V /| _/ _/ |
-| / /__ | | | | | | |
-| /_____||_| |_| |_| |
-| |
-\---------------------------------------------------------------------*/
-/** \file zypp/media/MediaMetalink.h
- *
-*/
-#ifndef ZYPP_MEDIA_MEDIAMETALINK_H
-#define ZYPP_MEDIA_MEDIAMETALINK_H
-
-#include "zypp/media/MediaHandler.h"
-#include "zypp/ZYppCallbacks.h"
-
-#include <curl/curl.h>
-
-extern "C" {
- #include <metalink/metalink_parser.h>
- }
-
-namespace zypp {
- namespace media {
-
-///////////////////////////////////////////////////////////////////
-//
-// CLASS NAME : MediaMetalink
-/**
- * @short Implementation class for FTP, HTTP and HTTPS MediaHandler
- * @see MediaHandler
- **/
-class MediaMetalink : public MediaHandler {
-
- protected:
-
- virtual void attachTo (bool next = false);
- virtual void releaseFrom( const std::string & ejectDev );
- virtual void getFile( const Pathname & filename ) const;
- virtual void getDir( const Pathname & dirname, bool recurse_r ) const;
- virtual void getDirInfo( std::list<std::string> & retlist,
- const Pathname & dirname, bool dots = true ) const;
- virtual void getDirInfo( filesystem::DirContent & retlist,
- const Pathname & dirname, bool dots = true ) const;
- /**
- * Repeatedly calls doGetDoesFileExist() until it successfully returns,
- * fails unexpectedly, or user cancels the operation. This is used to
- * handle authentication or similar retry scenarios on media level.
- */
- virtual bool getDoesFileExist( const Pathname & filename ) const;
-
- /**
- * \see MediaHandler::getDoesFileExist
- */
- virtual bool doGetDoesFileExist( const Pathname & filename ) const;
-
- /**
- *
- * \throws MediaException
- *
- */
- virtual void disconnectFrom();
- /**
- *
- * \throws MediaException
- *
- */
- virtual void getFileCopy( const Pathname & srcFilename, const Pathname & targetFilename) const;
-
- /**
- *
- * \throws MediaException
- *
- */
- virtual void doGetFileCopy( const Pathname & srcFilename, const Pathname & targetFilename, callback::SendReport<DownloadProgressReport> & _report) const;
-
-
- bool doGetMetalinkFileCopy( const Pathname & filename , const Pathname & target, callback::SendReport<DownloadProgressReport> & report) const;
- bool getMetalinkFileCopy( const Pathname & filename , const Pathname & target) const;
-
-
- virtual bool checkAttachPoint(const Pathname &apoint) const;
-
- public:
-
- MediaMetalink( const Url & url_r,
- const Pathname & attach_point_hint_r );
-
- virtual ~MediaMetalink() { try { release(); } catch(...) {} }
-
- static void setCookieFile( const Pathname & );
-
- class Callbacks
- {
- public:
- virtual ~Callbacks() {}
- virtual bool progress( int percent ) = 0;
- };
-
- protected:
-
- static int progressCallback( void *clientp, double dltotal, double dlnow,
- double ultotal, double ulnow );
-
- /** The user agent string */
- static const char *const agentString();
-
- private:
- /**
- * Return a comma separated list of available authentication methods
- * supported by server.
- */
- std::string getAuthHint() const;
-
- private:
- CURL *_curl;
- char _curlError[ CURL_ERROR_SIZE ];
- long _curlDebug;
-
- mutable std::string _userpwd;
- std::string _proxy;
- std::string _proxyuserpwd;
- std::string _currentCookieFile;
- std::string _ca_path;
- long _xfer_timeout;
-
- static Pathname _cookieFile;
-
-
- public:
- mutable Url alternativeUrl[100];
- mutable int numberofmirrors;
- mutable int mirrortotry;
-};
-
-///////////////////////////////////////////////////////////////////
-
- } // namespace media
-} // namespace zypp
-
-#endif // ZYPP_MEDIA_MEDIAMETALINK_H