|
libzypp 17.36.7
|
Implementation class for FTP, HTTP and HTTPS MediaHandler. More...
#include <zypp/media/MediaCurl2.h>
Public Types | |
| enum | RequestOption { OPTION_NONE = 0x0 , OPTION_RANGE = 0x1 , OPTION_HEAD = 0x02 , OPTION_NO_IFMODSINCE = 0x04 , OPTION_NO_REPORT_START = 0x08 } |
Public Types inherited from zypp::media::MediaHandler | |
| using | Ptr = shared_ptr<MediaHandler> |
| using | constPtr = shared_ptr<const MediaHandler> |
Public Member Functions | |
| ZYPP_DECLARE_FLAGS (RequestOptions, RequestOption) | |
| MediaCurl2 (const Url &url_r, const Pathname &attach_point_hint_r) | |
| ~MediaCurl2 () override | |
Public Member Functions inherited from zypp::media::MediaNetworkCommonHandler | |
| MediaNetworkCommonHandler (const Url &url_r, const Pathname &attach_point_r, const Pathname &urlpath_below_attachpoint_r, const bool does_download_r) | |
| TransferSettings & | settings () |
Public Member Functions inherited from zypp::media::MediaHandler | |
| bool | dependsOnParent (MediaAccessId parentId, bool exactIdMatch) |
| Check if the current media handler depends on an another handler specified by media access id. | |
| bool | dependsOnParent () |
| void | resetParentId () |
| Called in case, where the media manager takes over the destruction of the parent id (e.g. | |
| Pathname | attachPoint () const |
| Return the currently used attach point. | |
| void | setAttachPoint (const Pathname &path, bool temp) |
| Set a new attach point. | |
| void | setAttachPoint (const AttachPointRef &ref) |
| Set a (shared) attach point. | |
| AttachPoint | attachPointHint () const |
| Get the actual attach point hint. | |
| void | attachPointHint (const Pathname &path, bool temp) |
| Set the attach point hint as specified by the user. | |
| Pathname | createAttachPoint () const |
| Try to create a default / temporary attach point. | |
| Pathname | createAttachPoint (const Pathname &attach_root) const |
| Try to create a temporary attach point in specified root. | |
| void | removeAttachPoint () |
| Remove unused attach point. | |
| bool | isUseableAttachPoint (const Pathname &path, bool mtab=true) const |
| Ask media manager, if the specified path is already used as attach point or if there are another attach points bellow of it. | |
| std::string | mediaSourceName () const |
| Get the media source name or an empty string. | |
| void | setMediaSource (const MediaSourceRef &ref) |
| Set new media source reference. | |
| AttachedMedia | findAttachedMedia (const MediaSourceRef &media) const |
| Ask the media manager if specified media source is already attached. | |
| AttachedMedia | attachedMedia () const |
| Returns the attached media. | |
| bool | isSharedMedia () const |
| Returns a hint if the media is shared or not. | |
| bool | checkAttached (bool matchMountFs) const |
| Check actual mediaSource attachment against the current mount table of the system. | |
| void | forceRelaseAllMedia (bool matchMountFs) |
| Call to this function will try to release all media matching the currenlty attached media source, that it is able to find in the mount table. | |
| void | forceRelaseAllMedia (const MediaSourceRef &ref, bool matchMountFs) |
| MediaHandler (Url url_r, const Pathname &attach_point_r, Pathname urlpath_below_attachpoint_r, const bool does_download_r) | |
| If the concrete media handler provides a nonempty attach_point, it must be an existing directory. | |
| virtual | ~MediaHandler () |
| Contolling MediaAccess takes care, that attached media is released prior to deleting this. | |
| bool | downloads () const |
| Hint if files are downloaded or not. | |
| std::string | protocol () const |
| Protocol hint for MediaAccess. | |
| Url | url () const |
| Url used. | |
| void | attach (bool next) |
| Use concrete handler to attach the media. | |
| virtual bool | isAttached () const |
| True if media is attached. | |
| Pathname | localRoot () const |
| Return the local directory that corresponds to medias url, no matter if media isAttached or not. | |
| Pathname | localPath (const Pathname &pathname) const |
| Files provided will be available at 'localPath(filename)'. | |
| void | disconnect () |
| Use concrete handler to isconnect media. | |
| void | release (const std::string &ejectDev="") |
| Use concrete handler to release the media. | |
| void | provideFile (const OnMediaLocation &file) const |
| Use concrete handler to provide file denoted by path below 'localRoot'. | |
| void | provideFileCopy (const OnMediaLocation &srcFile, const Pathname &targetFilename) const |
| Call concrete handler to provide a copy of a file under a different place in the file system (usually not under attach point) as a copy. | |
| void | provideDir (const Pathname &dirname) const |
| Use concrete handler to provide directory denoted by path below 'localRoot' (not recursive!). | |
| void | provideDirTree (const Pathname &dirname) const |
| Use concrete handler to provide directory tree denoted by path below 'localRoot' (recursive! | |
| void | releaseFile (const Pathname &filename) const |
| Remove filename below localRoot IFF handler downloads files to the local filesystem. | |
| void | releaseDir (const Pathname &dirname) const |
| Remove directory tree below localRoot IFF handler downloads files to the local filesystem. | |
| void | releasePath (const Pathname &pathname) const |
| Remove pathname below localRoot IFF handler downloads files to the local filesystem. | |
| void | dirInfo (std::list< std::string > &retlist, const Pathname &dirname, bool dots=true) const |
| Return content of directory on media via retlist. | |
| void | dirInfo (filesystem::DirContent &retlist, const Pathname &dirname, bool dots=true) const |
| Basically the same as dirInfo above. | |
| bool | doesFileExist (const Pathname &filename) const |
| check if a file exists | |
| virtual bool | hasMoreDevices () |
| Check if the media has one more device available for attach(true). | |
| virtual void | getDetectedDevices (std::vector< std::string > &devices, unsigned int &index) const |
| Fill in a vector of detected ejectable devices and the index of the currently attached device within the vector. | |
| virtual void | precacheFiles (const std::vector< OnMediaLocation > &files) |
| Tries to fetch the given files and precaches them. | |
Static Public Member Functions | |
| static bool | authenticate (const Url &url, CredentialManager &cm, TransferSettings &settings, const std::string &availAuthTypes, bool firstTry) |
Static Public Member Functions inherited from zypp::media::MediaNetworkCommonHandler | |
| static const char * | anonymousIdHeader () |
| static const char * | distributionFlavorHeader () |
| static const char * | agentString () |
Static Public Member Functions inherited from zypp::media::MediaHandler | |
| static bool | setAttachPrefix (const Pathname &attach_prefix) |
| static std::string | getRealPath (const std::string &path) |
| static Pathname | getRealPath (const Pathname &path) |
| static bool | checkAttachPoint (const Pathname &apoint, bool empty_dir, bool writeable) |
| Verify if the specified directory as attach point (root) using requested checks. | |
Protected Member Functions | |
| Url | clearQueryString (const Url &url) const |
| void | attachTo (bool next=false) override |
| Call concrete handler to attach the media. | |
| void | releaseFrom (const std::string &ejectDev) override |
| Call concrete handler to release the media. | |
| void | getFile (const OnMediaLocation &file) const override |
| Call concrete handler to provide file below attach point. | |
| void | getDir (const Pathname &dirname, bool recurse_r) const override |
| Call concrete handler to provide directory content (not recursive!) below attach point. | |
| void | getDirInfo (std::list< std::string > &retlist, const Pathname &dirname, bool dots=true) const override |
| Call concrete handler to provide a content list of directory on media via retlist. | |
| void | getDirInfo (filesystem::DirContent &retlist, const Pathname &dirname, bool dots=true) const override |
| Basically the same as getDirInfo above. | |
| bool | getDoesFileExist (const Pathname &filename) const override |
| Repeatedly calls doGetDoesFileExist() until it successfully returns, fails unexpectedly, or user cancels the operation. | |
| void | disconnectFrom () override |
| void | getFileCopy (const OnMediaLocation &srcFile, const Pathname &targetFilename) const override |
| virtual void | doGetFileCopy (const OnMediaLocation &srcFile, const Pathname &targetFilename, callback::SendReport< DownloadProgressReport > &_report, RequestOptions options=OPTION_NONE) const |
| bool | checkAttachPoint (const Pathname &apoint) const override |
| Verify if the specified directory as attach point (root) as requires by the particular media handler implementation. | |
| void | checkProtocol (const Url &url) const |
| check the url is supported by the curl library | |
| void | setupEasy () |
| initializes the curl easy handle with the data from the url | |
Protected Member Functions inherited from zypp::media::MediaNetworkCommonHandler | |
| Url | getFileUrl (const Pathname &filename) const |
| concatenate the attach url and the filename to a complete download url | |
Protected Member Functions inherited from zypp::media::MediaHandler | |
| virtual void | forceEject (const std::string &device) |
| Call concrete handler to physically eject the media (i.e. | |
| void | getDirectoryYast (std::list< std::string > &retlist, const Pathname &dirname, bool dots=true) const |
| Retrieve and if available scan dirname/directory.yast. | |
| void | getDirectoryYast (filesystem::DirContent &retlist, const Pathname &dirname, bool dots=true) const |
| Retrieve and if available scan dirname/directory.yast. | |
Private Member Functions | |
| void | executeRequest (zyppng::NetworkRequestRef req, callback::SendReport< DownloadProgressReport > *report=nullptr) |
| bool | authenticate (const std::string &availAuthTypes, bool firstTry) |
| bool | tryZchunk (zyppng::NetworkRequestRef req, const OnMediaLocation &srcFile, const Pathname &target, callback::SendReport< DownloadProgressReport > &report) |
Private Attributes | |
| zyppng::EventDispatcherRef | _evDispatcher |
| zyppng::NetworkRequestDispatcherRef | _nwDispatcher |
| TransferSettings | _effectiveSettings |
Additional Inherited Members | |
Static Protected Member Functions inherited from zypp::media::MediaNetworkCommonHandler | |
| static zypp::Url | findGeoIPRedirect (const zypp::Url &url) |
| Rewrites the baseURL to the geoIP target if one is found in the metadata cache, otherwise simply returns the url again. | |
Protected Attributes inherited from zypp::media::MediaNetworkCommonHandler | |
| TransferSettings | _settings |
| Url | _redirTarget |
Protected Attributes inherited from zypp::media::MediaHandler | |
| const Url | _url |
| Url to handle. | |
| MediaAccessId | _parentId |
| Access Id of media handler we depend on. | |
Implementation class for FTP, HTTP and HTTPS MediaHandler.
Definition at line 40 of file MediaCurl2.h.
| Enumerator | |
|---|---|
| OPTION_NONE | Defaults. |
| OPTION_RANGE | retrieve only a range of the file |
| OPTION_HEAD | only issue a HEAD (or equivalent) request |
| OPTION_NO_IFMODSINCE | to not add a IFMODSINCE header if target exists |
| OPTION_NO_REPORT_START | do not send a start ProgressReport |
Definition at line 43 of file MediaCurl2.h.
Definition at line 75 of file MediaCurl2.cc.
|
inlineoverride |
Definition at line 105 of file MediaCurl2.h.
| zypp::media::MediaCurl2::ZYPP_DECLARE_FLAGS | ( | RequestOptions | , |
| RequestOption | ) |
Definition at line 111 of file MediaCurl2.cc.
|
overrideprotectedvirtual |
Call concrete handler to attach the media.
Asserted that not already attached, and attachPoint is a directory.
| next | try next available device in turn until end of device list is reached (for media which are accessible through multiple devices like cdroms). |
| MediaException |
Implements zypp::media::MediaHandler.
Definition at line 170 of file MediaCurl2.cc.
|
overrideprotectedvirtual |
Call concrete handler to release the media.
If eject is true, and the media is used in one handler instance only, physically eject the media (i.e. CD-ROM).
Asserted that media is attached.
| ejectDev | Device to eject. None if empty. |
| MediaException |
Implements zypp::media::MediaHandler.
Definition at line 208 of file MediaCurl2.cc.
|
overrideprotectedvirtual |
Call concrete handler to provide file below attach point.
Default implementation provided, that returns whether a file is located at 'localRoot + filename'.
Asserted that media is attached.
| MediaException |
Reimplemented from zypp::media::MediaHandler.
Definition at line 215 of file MediaCurl2.cc.
|
overrideprotectedvirtual |
Call concrete handler to provide directory content (not recursive!) below attach point.
Return E_not_supported_by_media if media does not support retrieval of directory content.
Default implementation provided, that returns whether a directory is located at 'localRoot + dirname'.
Asserted that media is attached.
| MediaException |
Implements zypp::media::MediaHandler.
Definition at line 488 of file MediaCurl2.cc.
|
overrideprotectedvirtual |
Call concrete handler to provide a content list of directory on media via retlist.
If dots is false entries starting with '.' are not reported.
Return E_not_supported_by_media if media does not support retrieval of directory content.
Default implementation provided, that returns the content of a directory at 'localRoot + dirnname' retrieved via 'readdir'.
Asserted that media is attached and retlist is empty.
| MediaException |
Implements zypp::media::MediaHandler.
Definition at line 521 of file MediaCurl2.cc.
|
overrideprotectedvirtual |
Basically the same as getDirInfo above.
The content list is returned as filesystem::DirContent, which includes name and filetype of each directory entry. Retrieving the filetype usg. requires an additional ::stat call for each entry, thus it's more expensive than a simple readdir.
Asserted that media is attached and retlist is empty.
| MediaException |
Implements zypp::media::MediaHandler.
Definition at line 529 of file MediaCurl2.cc.
|
overrideprotectedvirtual |
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.
Implements zypp::media::MediaHandler.
Definition at line 258 of file MediaCurl2.cc.
|
overrideprotectedvirtual |
| MediaException |
Reimplemented from zypp::media::MediaHandler.
Definition at line 200 of file MediaCurl2.cc.
|
overrideprotectedvirtual |
| MediaException |
Reimplemented from zypp::media::MediaHandler.
Definition at line 224 of file MediaCurl2.cc.
|
protectedvirtual |
| MediaException |
Definition at line 302 of file MediaCurl2.cc.
|
overrideprotectedvirtual |
Verify if the specified directory as attach point (root) as requires by the particular media handler implementation.
| apoint | The directory to check. |
Reimplemented from zypp::media::MediaHandler.
Definition at line 195 of file MediaCurl2.cc.
|
static |
Definition at line 682 of file MediaCurl2.cc.
|
protected |
check the url is supported by the curl library
| MediaBadUrlException | if there is a problem |
Definition at line 118 of file MediaCurl2.cc.
|
protected |
initializes the curl easy handle with the data from the url
| MediaCurlSetOptException | if there is a problem |
Definition at line 129 of file MediaCurl2.cc.
|
private |
Definition at line 535 of file MediaCurl2.cc.
|
private |
Definition at line 675 of file MediaCurl2.cc.
|
private |
Definition at line 414 of file MediaCurl2.cc.
|
private |
Definition at line 131 of file MediaCurl2.h.
|
private |
Definition at line 132 of file MediaCurl2.h.
|
private |
Definition at line 133 of file MediaCurl2.h.