18
18
#include " qgsserverparameters.h"
19
19
#include " qgsserverexception.h"
20
20
21
+ //
22
+ // QgsServerParameterDefinition
23
+ //
24
+ QgsServerParameterDefinition::QgsServerParameterDefinition ( const QVariant::Type type,
25
+ const QVariant defaultValue )
26
+ : mType( type )
27
+ , mDefaultValue( defaultValue )
28
+ {
29
+ }
30
+
31
+ QString QgsServerParameterDefinition::typeName () const
32
+ {
33
+ return QVariant::typeToName ( mType );
34
+ }
35
+
36
+ bool QgsServerParameterDefinition::isValid () const
37
+ {
38
+ return mValue .canConvert ( mType );
39
+ }
40
+
41
+ void QgsServerParameterDefinition::raiseError ( const QString &msg )
42
+ {
43
+ throw QgsBadRequestException ( QStringLiteral ( " Invalid Parameter" ), msg );
44
+ }
45
+
46
+ //
47
+ // QgsServerParameter
48
+ //
49
+ QgsServerParameter::QgsServerParameter ( const QgsServerParameter::Name name,
50
+ const QVariant::Type type, const QVariant defaultValue )
51
+ : QgsServerParameterDefinition( type, defaultValue )
52
+ , mName( name )
53
+ {
54
+ }
55
+
56
+ QString QgsServerParameter::name ( QgsServerParameter::Name name )
57
+ {
58
+ const QMetaEnum metaEnum ( QMetaEnum::fromType<QgsServerParameter::Name>() );
59
+ return metaEnum.valueToKey ( name );
60
+ }
61
+
62
+ QgsServerParameter::Name QgsServerParameter::name ( const QString &name )
63
+ {
64
+ const QMetaEnum metaEnum ( QMetaEnum::fromType<QgsServerParameter::Name>() );
65
+ return ( QgsServerParameter::Name ) metaEnum.keyToValue ( name.toUpper ().toStdString ().c_str () );
66
+ }
67
+
68
+ void QgsServerParameter::raiseError () const
69
+ {
70
+ const QString msg = QString ( " %1 ('%2') cannot be converted into %3" ).arg ( name ( mName ), mValue .toString (), typeName () );
71
+ QgsServerParameterDefinition::raiseError ( msg );
72
+ }
73
+
74
+ //
75
+ // QgsServerParameters
76
+ //
21
77
QgsServerParameters::QgsServerParameters ()
22
78
{
23
- const Parameter pService = { ParameterName::SERVICE,
24
- QVariant::String,
25
- QVariant ( " " ),
26
- QVariant (),
27
- false
28
- };
29
- save ( pService );
30
-
31
- const Parameter pRequest = { ParameterName::REQUEST,
32
- QVariant::String,
33
- QVariant ( " " ),
34
- QVariant (),
35
- false
36
- };
37
- save ( pRequest );
38
-
39
- const Parameter pVersion = { ParameterName::VERSION_SERVICE,
40
- QVariant::String,
41
- QVariant ( " " ),
42
- QVariant (),
43
- false
44
- };
45
- save ( pVersion );
46
-
47
- const Parameter pMap = { ParameterName::MAP,
48
- QVariant::String,
49
- QVariant ( " " ),
50
- QVariant (),
51
- false
52
- };
53
- save ( pMap );
54
-
55
- const Parameter pFile = { ParameterName::FILE_NAME,
56
- QVariant::String,
57
- QVariant ( " " ),
58
- QVariant (),
59
- false
60
- };
61
- save ( pFile );
79
+ save ( QgsServerParameter ( QgsServerParameter::SERVICE ) );
80
+ save ( QgsServerParameter ( QgsServerParameter::REQUEST ) );
81
+ save ( QgsServerParameter ( QgsServerParameter::VERSION_SERVICE ) );
82
+ save ( QgsServerParameter ( QgsServerParameter::MAP ) );
83
+ save ( QgsServerParameter ( QgsServerParameter::FILE_NAME ) );
62
84
}
63
85
64
86
QgsServerParameters::QgsServerParameters ( const QUrlQuery &query )
@@ -67,7 +89,7 @@ QgsServerParameters::QgsServerParameters( const QUrlQuery &query )
67
89
load ( query );
68
90
}
69
91
70
- void QgsServerParameters::save ( const Parameter ¶meter )
92
+ void QgsServerParameters::save ( const QgsServerParameter ¶meter )
71
93
{
72
94
mParameters [ parameter.mName ] = parameter;
73
95
}
@@ -99,7 +121,7 @@ void QgsServerParameters::remove( const QString &key )
99
121
}
100
122
else
101
123
{
102
- ParameterName paramName = name ( key );
124
+ QgsServerParameter::Name paramName = QgsServerParameter:: name ( key );
103
125
if ( mParameters .contains ( paramName ) )
104
126
{
105
127
mParameters .take ( paramName );
@@ -109,22 +131,22 @@ void QgsServerParameters::remove( const QString &key )
109
131
110
132
QString QgsServerParameters::map () const
111
133
{
112
- return value ( ParameterName ::MAP ).toString ();
134
+ return value ( QgsServerParameter ::MAP ).toString ();
113
135
}
114
136
115
137
QString QgsServerParameters::version () const
116
138
{
117
- return value ( ParameterName ::VERSION_SERVICE ).toString ();
139
+ return value ( QgsServerParameter ::VERSION_SERVICE ).toString ();
118
140
}
119
141
120
142
QString QgsServerParameters::fileName () const
121
143
{
122
- return value ( ParameterName ::FILE_NAME ).toString ();
144
+ return value ( QgsServerParameter ::FILE_NAME ).toString ();
123
145
}
124
146
125
147
QString QgsServerParameters::service () const
126
148
{
127
- QString serviceValue = value ( ParameterName ::SERVICE ).toString ();
149
+ QString serviceValue = value ( QgsServerParameter ::SERVICE ).toString ();
128
150
129
151
if ( serviceValue.isEmpty () )
130
152
{
@@ -143,14 +165,12 @@ QMap<QString, QString> QgsServerParameters::toMap() const
143
165
{
144
166
QMap<QString, QString> params = mUnmanagedParameters ;
145
167
146
- const QMetaEnum metaEnum ( QMetaEnum::fromType<ParameterName>() );
147
-
148
168
for ( auto parameter : mParameters .toStdMap () )
149
169
{
150
170
if ( ! parameter.second .mDefined )
151
171
continue ;
152
172
153
- const QString paramName = name ( parameter.first );
173
+ const QString paramName = QgsServerParameter:: name ( parameter.first );
154
174
params[paramName] = parameter.second .mValue .toString ();
155
175
}
156
176
@@ -159,15 +179,15 @@ QMap<QString, QString> QgsServerParameters::toMap() const
159
179
160
180
QString QgsServerParameters::request () const
161
181
{
162
- return value ( ParameterName ::REQUEST ).toString ();
182
+ return value ( QgsServerParameter ::REQUEST ).toString ();
163
183
}
164
184
165
185
QString QgsServerParameters::value ( const QString &key ) const
166
186
{
167
- return value ( name ( key ) ).toString ();
187
+ return value ( QgsServerParameter:: name ( key ) ).toString ();
168
188
}
169
189
170
- QVariant QgsServerParameters::value ( ParameterName name ) const
190
+ QVariant QgsServerParameters::value ( QgsServerParameter::Name name ) const
171
191
{
172
192
return mParameters [name].mValue ;
173
193
}
@@ -179,19 +199,16 @@ void QgsServerParameters::load( const QUrlQuery &query )
179
199
cleanQuery.setQuery ( query.query ().replace ( ' +' , QStringLiteral ( " %20" ) ) );
180
200
181
201
// load parameters
182
- const QMetaEnum metaEnum ( QMetaEnum::fromType<ParameterName>() );
183
-
184
202
for ( const auto &item : cleanQuery.queryItems ( QUrl::FullyDecoded ) )
185
203
{
186
- const ParameterName paramName = name ( item.first );
187
- if ( paramName >= 0 )
204
+ const QgsServerParameter::Name name = QgsServerParameter:: name ( item.first );
205
+ if ( name >= 0 )
188
206
{
189
- const QVariant value ( item.second );
190
- mParameters [paramName].mValue = value;
191
- mParameters [paramName].mDefined = true ;
192
- if ( !value.canConvert ( mParameters [paramName].mType ) )
207
+ mParameters [name].mValue = item.second ;
208
+ mParameters [name].mDefined = true ;
209
+ if ( ! mParameters [name].isValid () )
193
210
{
194
- raiseError ( paramName );
211
+ mParameters [name]. raiseError ();
195
212
}
196
213
}
197
214
else
@@ -206,29 +223,3 @@ void QgsServerParameters::clear()
206
223
mParameters .clear ();
207
224
mUnmanagedParameters .clear ();
208
225
}
209
-
210
- QString QgsServerParameters::name ( ParameterName name ) const
211
- {
212
- const QMetaEnum metaEnum ( QMetaEnum::fromType<ParameterName>() );
213
- return metaEnum.valueToKey ( name );
214
- }
215
-
216
- QgsServerParameters::ParameterName QgsServerParameters::name ( const QString &key ) const
217
- {
218
- const QMetaEnum metaEnum ( QMetaEnum::fromType<ParameterName>() );
219
- return ( ParameterName ) metaEnum.keyToValue ( key.toUpper ().toStdString ().c_str () );
220
- }
221
-
222
- void QgsServerParameters::raiseError ( ParameterName paramName ) const
223
- {
224
- const QString value = mParameters [paramName].mValue .toString ();
225
- const QString param = name ( paramName );
226
- const QString type = QVariant::typeToName ( mParameters [paramName].mType );
227
- const QString msg = QString ( " %1 ('%2') cannot be converted into %3" ).arg ( param, value, type );
228
- raiseError ( msg );
229
- }
230
-
231
- void QgsServerParameters::raiseError ( const QString &msg ) const
232
- {
233
- throw QgsBadRequestException ( QStringLiteral ( " Invalid WMS Parameter" ), msg );
234
- }
0 commit comments