@@ -222,16 +222,20 @@ QString QgsGdalGuiUtils::createDatabaseURI( const QString &connectionType, const
222
222
223
223
QString QgsGdalGuiUtils::createProtocolURI ( const QString &type, const QString &url, const QString &configId, const QString &username, const QString &password, bool expandAuthConfig )
224
224
{
225
- QString uri;
225
+ QString uri = url;
226
+ QString prefix;
226
227
if ( type == QLatin1String ( " vsicurl" ) )
227
228
{
228
- uri = url;
229
- // If no protocol is provided in the URL, default to HTTP
230
- if ( !uri.startsWith ( " http://" ) && !uri.startsWith ( " https://" ) && !uri.startsWith ( " ftp://" ) )
229
+ prefix = QStringLiteral ( " /vsicurl/" );
230
+ if ( !uri.startsWith ( prefix ) )
231
231
{
232
- uri.prepend ( QStringLiteral ( " http://" ) );
232
+ // If no protocol is provided in the URL, default to HTTP
233
+ if ( !uri.startsWith ( QLatin1String ( " http://" ) ) && !uri.startsWith ( QLatin1String ( " https://" ) ) && !uri.startsWith ( QLatin1String ( " ftp://" ) ) )
234
+ {
235
+ uri.prepend ( QStringLiteral ( " http://" ) );
236
+ }
237
+ uri.prepend ( prefix );
233
238
}
234
- uri.prepend ( QStringLiteral ( " /vsicurl/" ) );
235
239
}
236
240
else if ( type == QLatin1String ( " vsis3" )
237
241
|| type == QLatin1String ( " vsigs" )
@@ -241,25 +245,40 @@ QString QgsGdalGuiUtils::createProtocolURI( const QString &type, const QString &
241
245
|| type == QLatin1String ( " vsiswift" )
242
246
|| type == QLatin1String ( " vsihdfs" ) )
243
247
{
244
- uri = url;
245
- uri.prepend ( QStringLiteral ( " /%1/" ).arg ( type ) );
248
+ prefix = QStringLiteral ( " /%1/" ).arg ( type );
249
+ if ( !uri.startsWith ( prefix ) )
250
+ {
251
+ uri.prepend ( prefix );
252
+ }
246
253
}
247
254
// catching both GeoJSON and GeoJSONSeq
248
255
else if ( type.startsWith ( QLatin1String ( " GeoJSON" ) ) )
249
256
{
250
- uri = url;
257
+ // no change needed for now
251
258
}
252
259
else if ( type == QLatin1String ( " CouchDB" ) )
253
260
{
254
- uri = QStringLiteral ( " couchdb:%1" ).arg ( url );
261
+ prefix = QStringLiteral ( " couchdb:" );
262
+ if ( !uri.startsWith ( prefix ) )
263
+ {
264
+ uri.prepend ( prefix );
265
+ }
255
266
}
256
267
else if ( type == QLatin1String ( " DODS/OPeNDAP" ) )
257
268
{
258
- uri = QStringLiteral ( " DODS:%1" ).arg ( url );
269
+ prefix = QStringLiteral ( " DODS:" );
270
+ if ( !uri.startsWith ( prefix ) )
271
+ {
272
+ uri.prepend ( prefix );
273
+ }
259
274
}
260
275
else if ( type == QLatin1String ( " WFS3" ) )
261
276
{
262
- uri = QStringLiteral ( " WFS3:%1" ).arg ( url );
277
+ prefix = QStringLiteral ( " WFS3:" );
278
+ if ( !uri.startsWith ( prefix ) )
279
+ {
280
+ uri.prepend ( prefix );
281
+ }
263
282
}
264
283
QgsDebugMsgLevel ( " Connection type is=" + type + " and uri=" + uri, 2 );
265
284
// Update URI with authentication information
0 commit comments