23 #include <tqptrlist.h>
25 #include <tqstringlist.h>
26 #include <tqguardedptr.h>
29 #include <sys/types.h>
33 #include <tdeio/jobclasses.h>
34 #include <tdeio/global.h>
35 #include <tdeio/http.h>
36 #include <tdeio/davjob.h>
37 #include <tdeio/job.h>
38 #include <tdeio/slaveinterface.h>
40 #define TDEIO_ARGS TQByteArray packedArgs; TQDataStream stream( packedArgs, IO_WriteOnly ); stream
42 using namespace TDEIO;
44 class DavJob::DavJobPrivate
47 TQByteArray savedStaticData;
48 TQByteArray str_response;
51 DavJob::DavJob(
const KURL& url,
int method,
const TQString& request,
bool showProgressInfo )
52 :
TransferJob( url,
TDEIO::CMD_SPECIAL, TQByteArray(), TQByteArray(), showProgressInfo )
54 d =
new DavJobPrivate;
57 TQDataStream stream( m_packedArgs, IO_WriteOnly );
58 stream << (int) 7 <<
url << method;
60 if ( ! request.isEmpty() && ! request.isNull() ) {
61 staticData =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" + request.utf8();
62 staticData.truncate( staticData.size() - 1 );
63 d->savedStaticData = staticData.copy();
67 void DavJob::slotData(
const TQByteArray& data )
69 if(m_redirectionURL.isEmpty() || !m_redirectionURL.isValid() || m_error) {
70 unsigned int oldSize = d->str_response.size();
71 d->str_response.resize( oldSize +
data.size() );
72 memcpy( d->str_response.data() + oldSize,
data.data(),
data.size() );
76 void DavJob::slotFinished()
80 if (!m_redirectionURL.isEmpty() && m_redirectionURL.isValid() && (m_command == CMD_SPECIAL)) {
81 TQDataStream istream( m_packedArgs, IO_ReadOnly );
88 if ( (s_cmd == 7) && (s_method == (
int)TDEIO::DAV_PROPFIND) ) {
89 m_packedArgs.truncate(0);
90 TQDataStream stream( m_packedArgs, IO_WriteOnly );
91 stream << (int)7 << m_redirectionURL << (
int)TDEIO::DAV_PROPFIND;
93 }
else if ( ! m_response.setContent( d->str_response,
true ) ) {
95 TQDomElement root = m_response.createElementNS(
"DAV:",
"error-report" );
96 m_response.appendChild( root );
98 TQDomElement el = m_response.createElementNS(
"DAV:",
"offending-response" );
99 TQDomText textnode = m_response.createTextNode( d->str_response );
100 el.appendChild( textnode );
101 root.appendChild( el );
109 TransferJob::slotFinished();
110 if( d ) staticData = d->savedStaticData.copy();
118 DavJob *job =
new DavJob( url, (
int) TDEIO::DAV_PROPFIND, properties.toString(), showProgressInfo );
126 return new DavJob( url, (
int) TDEIO::DAV_PROPPATCH, properties.toString(), showProgressInfo );
129 DavJob*
TDEIO::davSearch(
const KURL& url,
const TQString& nsURI,
const TQString& qName,
const TQString& query,
bool showProgressInfo )
132 TQDomElement searchrequest = doc.createElementNS(
"DAV:",
"searchrequest" );
133 TQDomElement searchelement = doc.createElementNS( nsURI, qName );
134 TQDomText text = doc.createTextNode( query );
135 searchelement.appendChild( text );
136 searchrequest.appendChild( searchelement );
137 doc.appendChild( searchrequest );
138 return new DavJob( url, TDEIO::DAV_SEARCH, doc.toString(), showProgressInfo );
141 #include "davjob.moc"
The transfer job pumps data into and/or out of a Slave.
DavJob(const KURL &url, int method, const TQString &request, bool showProgressInfo)
Use TDEIO::davPropFind(), TDEIO::davPropPatch() and TDEIO::davSearch() to create a new DavJob.
void addMetaData(const TQString &key, const TQString &value)
const KURL & url() const
Returns the SimpleJob's URL.
The transfer job pumps data into and/or out of a Slave.
void data(TDEIO::Job *job, const TQByteArray &data)
Data from the slave has arrived.
A namespace for TDEIO globals.
TDEIO_EXPORT DavJob * davPropFind(const KURL &url, const TQDomDocument &properties, TQString depth, bool showProgressInfo=true)
Creates a new DavJob that issues a PROPFIND command.
TDEIO_EXPORT DavJob * davSearch(const KURL &url, const TQString &nsURI, const TQString &qName, const TQString &query, bool showProgressInfo=true)
Creates a new DavJob that issues a SEARCH command.
TDEIO_EXPORT DavJob * davPropPatch(const KURL &url, const TQDomDocument &properties, bool showProgressInfo=true)
Creates a new DavJob that issues a PROPPATCH command.