QGIS API Documentation 3.99.0-Master (d270888f95f)
Loading...
Searching...
No Matches
qgssensorthingsconnection.cpp
Go to the documentation of this file.
1/***************************************************************************
2 QgsSensorThingsProviderConnection.cpp
3 ---------------------
4 Date : December 2023
5 Copyright : (C) 2023 by Nyall Dawson
6 Email : nyall dot dawson 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
17
18#include "qgsdatasourceuri.h"
19#include "qgslogger.h"
20#include "qgsowsconnection.h"
22
23#include <QString>
24
25using namespace Qt::StringLiterals;
26
28const QgsSettingsEntryString *QgsSensorThingsProviderConnection::settingsUrl = new QgsSettingsEntryString( u"url"_s, sTreeSensorThingsConnections, QString() ) ;
29const QgsSettingsEntryVariantMap *QgsSensorThingsProviderConnection::settingsHeaders = new QgsSettingsEntryVariantMap( u"http-header"_s, sTreeSensorThingsConnections ) ;
30const QgsSettingsEntryString *QgsSensorThingsProviderConnection::settingsUsername = new QgsSettingsEntryString( u"username"_s, sTreeSensorThingsConnections ) ;
31const QgsSettingsEntryString *QgsSensorThingsProviderConnection::settingsPassword = new QgsSettingsEntryString( u"password"_s, sTreeSensorThingsConnections ) ;
32const QgsSettingsEntryString *QgsSensorThingsProviderConnection::settingsAuthcfg = new QgsSettingsEntryString( u"authcfg"_s, sTreeSensorThingsConnections ) ;
34
35
36
39{
40 const QgsSensorThingsProviderConnection::Data connectionData = connection( name );
41 setUri( encodedUri( connectionData ) );
42}
43
48
49void QgsSensorThingsProviderConnection::store( const QString &name ) const
50{
52 addConnection( name, connectionData );
53}
54
55void QgsSensorThingsProviderConnection::remove( const QString &name ) const
56{
57 sTreeSensorThingsConnections->deleteItem( name );
58}
59
61{
62 return sTreeSensorThingsConnections->selectedItem();
63}
64
66{
67 sTreeSensorThingsConnections->setSelectedItem( name );
68}
69
70void QgsSensorThingsProviderConnection::addConnection( const QString &name, const Data &conn )
71{
72 settingsUrl->setValue( conn.url, name );
73 settingsAuthcfg->setValue( conn.authCfg, name );
74 settingsUsername->setValue( conn.username, name );
75 settingsPassword->setValue( conn.password, name );
76 settingsHeaders->setValue( conn.httpHeaders.headers(), name );
77}
78
80{
81 if ( !settingsUrl->exists( name ) )
83
85 conn.url = settingsUrl->value( name );
86 conn.authCfg = settingsAuthcfg->value( name );
87 conn.username = settingsUsername->value( name );
88 conn.password = settingsPassword->value( name );
89
90 if ( settingsHeaders->exists( name ) )
91 conn.httpHeaders = QgsHttpHeaders( settingsHeaders->value( name ) );
92
93 return conn;
94}
95
97{
98 return QgsSensorThingsProviderConnection::sTreeSensorThingsConnections->items();
99}
100
102{
104 if ( !data.url.isEmpty() )
105 uri.setParam( u"url"_s, data.url );
106 if ( !data.authCfg.isEmpty() )
107 uri.setAuthConfigId( data.authCfg );
108 if ( !data.username.isEmpty() )
109 uri.setUsername( data.username );
110 if ( !data.password.isEmpty() )
111 uri.setPassword( data.password );
112
113 uri.setHttpHeaders( data.httpHeaders );
114 return uri.encodedUri();
115}
116
118{
119 QgsDataSourceUri dsUri;
120 dsUri.setEncodedUri( uri );
121
123 conn.url = dsUri.param( u"url"_s );
124 conn.authCfg = dsUri.authConfigId();
125 conn.username = dsUri.username();
126 conn.password = dsUri.password();
127 conn.httpHeaders = dsUri.httpHeaders();
128
129 return conn;
130}
131
133{
135
136 uri.setParam( u"url"_s, data.url );
137 if ( !data.authCfg.isEmpty() )
138 uri.setAuthConfigId( data.authCfg );
139 if ( !data.username.isEmpty() )
140 uri.setUsername( data.username );
141 if ( !data.password.isEmpty() )
142 uri.setPassword( data.password );
143
144 uri.setHttpHeaders( data.httpHeaders );
145
146 return uri.uri( false );
147}
148
QVariantMap configuration() const
Returns the connection configuration parameters.
void setUri(const QString &uri)
Sets the connection data source URI to uri.
QgsAbstractProviderConnection(const QString &name)
Creates a new connection with name by reading its configuration from the settings.
QString uri() const
Returns the connection data source URI string representation.
Stores the component parts of a data source URI (e.g.
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.
Implements simple HTTP header management.
QVariantMap headers() const
Returns the headers as a variant map.
static QString selectedConnection()
Returns the name of the last used connection.
static QString encodedUri(const Data &data)
Returns connection data encoded as a string.
static QString encodedLayerUri(const Data &data)
Returns connection data encoded as a string containing a URI for a SensorThings vector data provider.
void remove(const QString &name) const final
Deletes the connection from the settings.
static void setSelectedConnection(const QString &name)
Stores the name of the last used connection.
static QStringList connectionList()
Returns a list of the stored connection names.
static Data connection(const QString &name)
Returns connection details for the stored connection with the specified name.
PRIVATE QgsSensorThingsProviderConnection(const QString &name)
Constructor for QgsSensorThingsProviderConnection, using the stored settings with the specified conne...
static Data decodedUri(const QString &uri)
Returns a connection uri decoded to a data structure.
void store(const QString &name) const final
Stores the connection in the settings.
static void addConnection(const QString &name, const Data &connection)
Stores a new connection, under the specified connection name.
A string settings entry.
A string list settings entry.
Represents decoded data of a SensorThings connection.
QString authCfg
Authentication configuration id.