libzypp 17.36.5
|
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 } |
![]() | |
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 | |
![]() | |
MediaNetworkCommonHandler (const Url &url_r, const Pathname &attach_point_r, const Pathname &urlpath_below_attachpoint_r, const bool does_download_r) | |
TransferSettings & | settings () |
![]() | |
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 const char * | anonymousIdHeader () |
static const char * | distributionFlavorHeader () |
static const char * | agentString () |
![]() | |
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 | |
![]() | |
Url | getFileUrl (const Pathname &filename) const |
concatenate the attach url and the filename to a complete download url | |
![]() | |
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 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. | |
![]() | |
TransferSettings | _settings |
Url | _redirTarget |
![]() | |
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.