1*9646dec5SDamjan Jovanovic /**************************************************************
2*9646dec5SDamjan Jovanovic  *
3*9646dec5SDamjan Jovanovic  * Licensed to the Apache Software Foundation (ASF) under one
4*9646dec5SDamjan Jovanovic  * or more contributor license agreements.  See the NOTICE file
5*9646dec5SDamjan Jovanovic  * distributed with this work for additional information
6*9646dec5SDamjan Jovanovic  * regarding copyright ownership.  The ASF licenses this file
7*9646dec5SDamjan Jovanovic  * to you under the Apache License, Version 2.0 (the
8*9646dec5SDamjan Jovanovic  * "License"); you may not use this file except in compliance
9*9646dec5SDamjan Jovanovic  * with the License.  You may obtain a copy of the License at
10*9646dec5SDamjan Jovanovic  *
11*9646dec5SDamjan Jovanovic  *   http://www.apache.org/licenses/LICENSE-2.0
12*9646dec5SDamjan Jovanovic  *
13*9646dec5SDamjan Jovanovic  * Unless required by applicable law or agreed to in writing,
14*9646dec5SDamjan Jovanovic  * software distributed under the License is distributed on an
15*9646dec5SDamjan Jovanovic  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*9646dec5SDamjan Jovanovic  * KIND, either express or implied.  See the License for the
17*9646dec5SDamjan Jovanovic  * specific language governing permissions and limitations
18*9646dec5SDamjan Jovanovic  * under the License.
19*9646dec5SDamjan Jovanovic  *
20*9646dec5SDamjan Jovanovic  *************************************************************/
21*9646dec5SDamjan Jovanovic 
22*9646dec5SDamjan Jovanovic // MARKER(update_precomp.py): autogen include statement, do not remove
23*9646dec5SDamjan Jovanovic #include "precompiled_webdav.hxx"
24*9646dec5SDamjan Jovanovic 
25*9646dec5SDamjan Jovanovic #include <rtl/ustrbuf.hxx>
26*9646dec5SDamjan Jovanovic #include "LockRequest.hxx"
27*9646dec5SDamjan Jovanovic 
28*9646dec5SDamjan Jovanovic using namespace http_dav_ucp;
29*9646dec5SDamjan Jovanovic 
30*9646dec5SDamjan Jovanovic #define LOCK_HEADER "<?xml version=\"1.0\" encoding=\"utf-8\"?><lockinfo xmlns=\"DAV:\">"
31*9646dec5SDamjan Jovanovic #define LOCK_TYPE "<locktype><write/></locktype>"
32*9646dec5SDamjan Jovanovic #define LOCK_TRAILER "</lockinfo>"
33*9646dec5SDamjan Jovanovic 
generateRequestBody(const ucb::Lock & inLock)34*9646dec5SDamjan Jovanovic rtl::OString LockRequest::generateRequestBody( const ucb::Lock& inLock )
35*9646dec5SDamjan Jovanovic {
36*9646dec5SDamjan Jovanovic     const char *lockScope = NULL;
37*9646dec5SDamjan Jovanovic     switch ( inLock.Scope )
38*9646dec5SDamjan Jovanovic     {
39*9646dec5SDamjan Jovanovic         //i126305 TODO investigate on this case...
40*9646dec5SDamjan Jovanovic     case ucb::LockScope_MAKE_FIXED_SIZE:
41*9646dec5SDamjan Jovanovic 
42*9646dec5SDamjan Jovanovic     case ucb::LockScope_EXCLUSIVE:
43*9646dec5SDamjan Jovanovic         lockScope = "<lockscope><exclusive/></lockscope>";
44*9646dec5SDamjan Jovanovic         break;
45*9646dec5SDamjan Jovanovic     case ucb::LockScope_SHARED:
46*9646dec5SDamjan Jovanovic         lockScope = "<lockscope><shared/></lockscope>";
47*9646dec5SDamjan Jovanovic         break;
48*9646dec5SDamjan Jovanovic     }
49*9646dec5SDamjan Jovanovic 
50*9646dec5SDamjan Jovanovic     rtl::OUStringBuffer aBuffer;
51*9646dec5SDamjan Jovanovic     aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( LOCK_HEADER ));
52*9646dec5SDamjan Jovanovic     aBuffer.appendAscii( lockScope );
53*9646dec5SDamjan Jovanovic     aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( LOCK_TYPE ));
54*9646dec5SDamjan Jovanovic     aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( "<owner>" ));
55*9646dec5SDamjan Jovanovic     rtl::OUString aStr;
56*9646dec5SDamjan Jovanovic     inLock.Owner >>= aStr;
57*9646dec5SDamjan Jovanovic     aBuffer.appendAscii( rtl::OUStringToOString( aStr, RTL_TEXTENCODING_UTF8 ).getStr() );
58*9646dec5SDamjan Jovanovic     aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( "</owner>" ));
59*9646dec5SDamjan Jovanovic     aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( LOCK_TRAILER ));
60*9646dec5SDamjan Jovanovic     return rtl::OUStringToOString( aBuffer.makeStringAndClear(), RTL_TEXTENCODING_UTF8 );
61*9646dec5SDamjan Jovanovic }
62