20 #include <rtl/ustring.hxx>
21 #include <rtl/ustrbuf.hxx>
32 const std::vector< ProppatchValue > & inProperties )
34 , mpProperties( &inProperties )
42 #define PROPPATCH_HEADER "<?xml version=\"1.0\" encoding=\"utf-8\"?><propertyupdate xmlns=\"DAV:\">"
43 #define PROPPATCH_TRAILER "</propertyupdate>"
47 serf_bucket_alloc_t* pSerfBucketAlloc = serf_request_get_alloc( inSerfRequest );
50 serf_bucket_t* body_bkt =
nullptr;
60 { RTL_CONSTASCII_STRINGPARAM(
"set" ) },
61 { RTL_CONSTASCII_STRINGPARAM(
"remove" ) }
75 aBuffer.append(
"<" );
76 aBuffer.appendAscii(
OpCode[lastOp].str,
OpCode[lastOp].len );
77 aBuffer.append(
"><prop>" );
80 for (
int n = 0;
n < nPropCount; ++
n )
90 aBuffer.append(
"</prop></" );
91 aBuffer.appendAscii(
OpCode[lastOp].str,
OpCode[lastOp].len );
92 aBuffer.append(
"><" );
94 aBuffer.append(
"><prop>" );
98 aBuffer.append(
"<" );
99 aBuffer.appendAscii( thePropName.
name );
100 aBuffer.append(
" xmlns=\"" );
101 aBuffer.appendAscii( thePropName.
nspace );
102 aBuffer.append(
"\"" );
107 aBuffer.append(
">" );
109 OUString aStringValue;
117 rProperty.
value >>= aStringValue;
119 aBuffer.append( aStringValue );
120 aBuffer.append(
"</" );
121 aBuffer.appendAscii( thePropName.
name );
122 aBuffer.append(
">" );
126 aBuffer.append(
"/>" );
133 aBuffer.append(
"</prop></" );
134 aBuffer.appendAscii(
OpCode[lastOp].str,
OpCode[lastOp].len );
135 aBuffer.append(
">" );
140 aBodyText =
OUStringToOString( aBuffer.makeStringAndClear(), RTL_TEXTENCODING_UTF8 );
141 body_bkt = serf_bucket_simple_copy_create( aBodyText.getStr(),
142 aBodyText.getLength(),
148 serf_bucket_t *req_bkt = serf_request_bucket_request_create( inSerfRequest,
156 serf_bucket_t* hdrs_bkt = serf_bucket_request_get_headers( req_bkt );
157 if (hdrs_bkt !=
nullptr)
163 if ( body_bkt !=
nullptr && aBodyText.getLength() > 0 )
165 serf_bucket_headers_set( hdrs_bkt,
"Content-Type",
"application/xml" );
170 assert(!
"Headers Bucket missing");
std::vector< DAVRequestHeader > DAVRequestHeaders
virtual serf_bucket_t * createSerfRequestBucket(serf_request_t *inSerfRequest) override
ProppatchOperation operation
void setRequestHeaders(serf_bucket_t *inoutSerfHeaderBucket)
const char * getPathStr() const
virtual void handleEndOfResponseData(serf_bucket_t *inSerfResponseBucket) override
virtual void processChunkOfResponseData(const char *data, apr_size_t len) override
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
void handleChunkedEncoding(serf_bucket_t *pRequestBucket, apr_int64_t nLength) const
Turn chunked encoding on or off, depending on the result of useChunkedEncoding(). ...
static bool isUCBDeadProperty(const SerfPropName &rName)
SerfPropPatchReqProcImpl(const char *inPath, const DAVRequestHeaders &inRequestHeaders, const std::vector< ProppatchValue > &inProperties)
static void createSerfPropName(const OUString &rFullName, SerfPropName &rName)
const std::vector< ProppatchValue > * mpProperties
static bool toXML(const css::uno::Any &rInData, OUString &rOutData)
std::unique_ptr< char[]> aBuffer
virtual ~SerfPropPatchReqProcImpl() override
#define PROPPATCH_TRAILER