forked from open-eid/qt-common
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSOAPDocument.cpp
67 lines (57 loc) · 2.03 KB
/
SOAPDocument.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
* QEstEidCommon
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#include "SOAPDocument.h"
#include <QtCore/QBuffer>
#include <QtCore/QVariant>
SOAPDocument::SOAPDocument( const QString &action, const QString &namespaceUri )
: QXmlStreamWriter()
, data( new QBuffer() )
{
data->open( QBuffer::WriteOnly );
setDevice( data );
setAutoFormatting( true );
writeStartDocument();
writeNamespace( XML_SCHEMA, "xsd" );
writeNamespace( XML_SCHEMA_INSTANCE, "xsi" );
writeNamespace( SOAP_ENV, "SOAP-ENV" );
writeNamespace( SOAP_ENC, "SOAP-ENC" );
writeStartElement( SOAP_ENV, "Envelope" );
writeStartElement( SOAP_ENV, "Body" );
writeNamespace( namespaceUri, "m" );
writeStartElement( namespaceUri, action );
writeAttribute( SOAP_ENV, "encodingStyle", SOAP_ENC );
}
SOAPDocument::~SOAPDocument() { delete data; }
QByteArray SOAPDocument::document() const { return data->data(); }
void SOAPDocument::writeParameter( const QString &name, const QVariant &value )
{
QString type;
switch( value.type() )
{
case QMetaType::Bool: type = "boolean"; break;
case QMetaType::Int: type = "int"; break;
case QMetaType::QByteArray:
case QMetaType::QString:
default: type = "string"; break;
}
writeStartElement( name );
writeAttribute( XML_SCHEMA_INSTANCE, "type", QString( "xsd:" ).append( type ) );
writeCharacters( value.toString() );
writeEndElement();
}