53 MIL <<
"Url is not valid" << std::endl;
57 std::unique_ptr<MediaHandler>
_handler;
63 MIL <<
"Trying scheme '" << o_url.
getScheme() <<
"'" << std::endl;
72 _handler = std::make_unique<MediaCD> (url,preferred_attach_point);
76 _handler = std::make_unique<MediaNFS> (url,preferred_attach_point);
80 _handler = std::make_unique<MediaISO> (url,preferred_attach_point);
84 _handler = std::make_unique<MediaDIR> (url,preferred_attach_point);
88 _handler = std::make_unique<MediaDISK> (url,preferred_attach_point);
92 _handler = std::make_unique<MediaCIFS> (url,preferred_attach_point);
96 enum WhichHandler { choose, curl, multicurl, network };
97 WhichHandler which = choose;
99 if (
const std::string & queryparam = url.
getQueryParam(
"mediahandler"); ! queryparam.empty() ) {
100 if ( queryparam ==
"network" )
102 else if ( queryparam ==
"multicurl" )
104 else if ( queryparam ==
"curl" )
107 WAR <<
"Unknown mediahandler='" << queryparam <<
"' in URL; Choosing the default" << std::endl;
110 if ( which == choose ) {
111 auto getenvIs = []( std::string_view var, std::string_view val )->
bool {
112 const char * v = ::getenv( var.data() );
113 return v && v == val;
116 if ( getenvIs(
"ZYPP_MEDIANETWORK",
"1" ) ) {
117 WAR <<
"MediaNetwork backend enabled" << std::endl;
120 else if ( getenvIs(
"ZYPP_MULTICURL",
"0" ) ) {
121 WAR <<
"multicurl manually disabled." << std::endl;
128 std::unique_ptr<MediaNetworkCommonHandler> handler;
132 handler = std::make_unique<MediaMultiCurl>( url, preferred_attach_point );
136 handler = std::make_unique<MediaNetwork>( url, preferred_attach_point );
140 handler = std::make_unique<MediaCurl>( url, preferred_attach_point );
144 for (
const auto & el : custom_headers ) {
145 std::string header { el.first };
148 MIL <<
"Added custom header -> " << header << std::endl;
149 handler->settings().addHeader( std::move(header) );
155 _handler = std::make_unique<MediaPlugin> (url,preferred_attach_point);
166 ERR <<
"Failed to create media handler" << std::endl;