QGIS API Documentation 4.3.0-Master (389d690bb77)
Loading...
Searching...
No Matches
qgsstacconnection.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsstacconnection.cpp
3 ---------------------
4 begin : August 2024
5 copyright : (C) 2024 by Stefanos Natsis
6 email : uclaros at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#include "qgsstacconnection.h"
17
18#include "qgsdatasourceuri.h"
20
21#include <QString>
22
23using namespace Qt::StringLiterals;
24
26
27const QgsSettingsEntryString *QgsStacConnection::settingsUrl = new QgsSettingsEntryString( u"url"_s, sTreeConnectionStac );
28const QgsSettingsEntryString *QgsStacConnection::settingsAuthcfg = new QgsSettingsEntryString( u"authcfg"_s, sTreeConnectionStac );
29const QgsSettingsEntryString *QgsStacConnection::settingsUsername = new QgsSettingsEntryString( u"username"_s, sTreeConnectionStac );
30const QgsSettingsEntryString *QgsStacConnection::settingsPassword = new QgsSettingsEntryString( u"password"_s, sTreeConnectionStac );
31const QgsSettingsEntryVariantMap *QgsStacConnection::settingsHeaders = new QgsSettingsEntryVariantMap( u"http-header"_s, sTreeConnectionStac );
32
33
35{
36 QgsDataSourceUri uri;
37
38 uri.setParam( u"url"_s, conn.url );
39 if ( !conn.authCfg.isEmpty() )
40 uri.setAuthConfigId( conn.authCfg );
41 if ( !conn.username.isEmpty() )
42 uri.setUsername( conn.username );
43 if ( !conn.password.isEmpty() )
44 uri.setPassword( conn.password );
45
46 uri.setHttpHeaders( conn.httpHeaders );
47
48 return uri.encodedUri();
49}
50
52{
53 QgsDataSourceUri dsUri;
54 dsUri.setEncodedUri( uri );
55
56 QgsStacConnection::Data conn;
57 conn.url = dsUri.param( u"url"_s );
58 conn.authCfg = dsUri.authConfigId();
59 conn.username = dsUri.username();
60 conn.password = dsUri.password();
61 conn.httpHeaders = dsUri.httpHeaders();
62
63 return conn;
64}
65
67{
68 return QgsStacConnection::sTreeConnectionStac->items();
69}
70
72{
73 if ( !settingsUrl->exists( name ) )
74 return QgsStacConnection::Data();
75
76 QgsStacConnection::Data conn;
77 conn.url = settingsUrl->value( name );
78 conn.authCfg = settingsAuthcfg->value( name );
79 conn.username = settingsUsername->value( name );
80 conn.password = settingsPassword->value( name );
81
82 if ( settingsHeaders->exists( name ) )
83 conn.httpHeaders = QgsHttpHeaders( settingsHeaders->value( name ) );
84
85 return conn;
86}
87
88void QgsStacConnection::deleteConnection( const QString &name )
89{
90 sTreeConnectionStac->deleteItem( name );
91}
92
93void QgsStacConnection::addConnection( const QString &name, const Data &conn )
94{
95 settingsUrl->setValue( conn.url, name );
96 settingsAuthcfg->setValue( conn.authCfg, name );
97 settingsUsername->setValue( conn.username, name );
98 settingsPassword->setValue( conn.password, name );
99 settingsHeaders->setValue( conn.httpHeaders.headers(), name );
100}
101
103{
104 return sTreeConnectionStac->selectedItem();
105}
106
107void QgsStacConnection::setSelectedConnection( const QString &name )
108{
109 sTreeConnectionStac->setSelectedItem( name );
110}
111
112
113QgsStacConnection::QgsStacConnection( const QString &name )
115{
116 setUri( encodedUri( connection( name ) ) );
117}
118
119QgsStacConnection::QgsStacConnection( const QString &uri, const QVariantMap &configuration )
120 : QgsAbstractProviderConnection( uri, configuration )
121{}
122
123void QgsStacConnection::store( const QString &name ) const
124{
125 addConnection( name, decodedUri( uri() ) );
126}
127
128void QgsStacConnection::remove( const QString &name ) const
129{
130 deleteConnection( name );
131}
132
An interface for data provider connections.
QString uri() const
Returns the connection data source URI string representation.
void setEncodedUri(const QByteArray &uri)
Sets the complete encoded uri.
QgsHttpHeaders httpHeaders() const
Returns http headers.
QString param(const QString &key) const
Returns a generic parameter value corresponding to the specified key.
QString username() const
Returns the username stored in the URI.
QString password() const
Returns the password stored in the URI.
QString authConfigId() const
Returns any associated authentication configuration ID stored in the URI.
A string settings entry.
A string list settings entry.
static void setSelectedConnection(const QString &connName)
Saves name of the last used connection.
static QString selectedConnection()
Returns last used connection.
static Data decodedUri(const QString &uri)
Decodes connection string to a data structure.
PRIVATE QgsStacConnection(const QString &name)
Constructor for QgsStacConnection, using the stored settings with the specified connection name.
void remove(const QString &name) const override
Deletes the connection from the settings.
static void addConnection(const QString &name, const Data &conn)
Adds a new connection to the list.
void store(const QString &name) const override
Stores the connection in the settings.
static QStringList connectionList()
Returns list of existing connections, unless the hidden ones.
static Data connection(const QString &name)
Returns connection details.
static QString encodedUri(const Data &conn)
Returns connection data encoded as a string.
static void deleteConnection(const QString &name)
Removes a connection from the list.
Represents decoded data of a connection.
QgsHttpHeaders httpHeaders
HTTP headers.
QString username
HTTP Basic username.
QString authCfg
Authentication configuration id.
QString url
Catalog URL.
QString password
HTTP Basic password.