xref: /AOO41X/main/ucb/source/ucp/webdav/SerfUnlockProcImpl.cxx (revision 3edf699282957a8d2e0e344ed73ba96dfb5a45a4)
1*3edf6992SAndrea Pescetti /**************************************************************
2*3edf6992SAndrea Pescetti  *
3*3edf6992SAndrea Pescetti  * Licensed to the Apache Software Foundation (ASF) under one
4*3edf6992SAndrea Pescetti  * or more contributor license agreements.  See the NOTICE file
5*3edf6992SAndrea Pescetti  * distributed with this work for additional information
6*3edf6992SAndrea Pescetti  * regarding copyright ownership.  The ASF licenses this file
7*3edf6992SAndrea Pescetti  * to you under the Apache License, Version 2.0 (the
8*3edf6992SAndrea Pescetti  * "License"); you may not use this file except in compliance
9*3edf6992SAndrea Pescetti  * with the License.  You may obtain a copy of the License at
10*3edf6992SAndrea Pescetti  *
11*3edf6992SAndrea Pescetti  *   http://www.apache.org/licenses/LICENSE-2.0
12*3edf6992SAndrea Pescetti  *
13*3edf6992SAndrea Pescetti  * Unless required by applicable law or agreed to in writing,
14*3edf6992SAndrea Pescetti  * software distributed under the License is distributed on an
15*3edf6992SAndrea Pescetti  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*3edf6992SAndrea Pescetti  * KIND, either express or implied.  See the License for the
17*3edf6992SAndrea Pescetti  * specific language governing permissions and limitations
18*3edf6992SAndrea Pescetti  * under the License.
19*3edf6992SAndrea Pescetti  *
20*3edf6992SAndrea Pescetti  *************************************************************/
21*3edf6992SAndrea Pescetti 
22*3edf6992SAndrea Pescetti // MARKER(update_precomp.py): autogen include statement, do not remove
23*3edf6992SAndrea Pescetti #include "precompiled_ucb.hxx"
24*3edf6992SAndrea Pescetti 
25*3edf6992SAndrea Pescetti #include "SerfTypes.hxx"
26*3edf6992SAndrea Pescetti #include "SerfUnlockProcImpl.hxx"
27*3edf6992SAndrea Pescetti #include "DAVProperties.hxx"
28*3edf6992SAndrea Pescetti 
29*3edf6992SAndrea Pescetti #include "webdavresponseparser.hxx"
30*3edf6992SAndrea Pescetti #include <serf/serf.h>
31*3edf6992SAndrea Pescetti #include <rtl/ustrbuf.hxx>
32*3edf6992SAndrea Pescetti #include <apr/apr_strings.h>
33*3edf6992SAndrea Pescetti 
34*3edf6992SAndrea Pescetti namespace http_dav_ucp
35*3edf6992SAndrea Pescetti {
36*3edf6992SAndrea Pescetti 
37*3edf6992SAndrea Pescetti SerfUnlockProcImpl::SerfUnlockProcImpl( const char* inSourcePath,
38*3edf6992SAndrea Pescetti                                         const DAVRequestHeaders& inRequestHeaders,
39*3edf6992SAndrea Pescetti                                         const ucb::Lock& inLock,
40*3edf6992SAndrea Pescetti                                         const char* inLockToken )
41*3edf6992SAndrea Pescetti     : SerfRequestProcessorImpl( inSourcePath, inRequestHeaders )
42*3edf6992SAndrea Pescetti     , mLock( inLock )
43*3edf6992SAndrea Pescetti     , mpLockToken( inLockToken )
44*3edf6992SAndrea Pescetti     , xInputStream( new SerfInputStream() )
45*3edf6992SAndrea Pescetti {
46*3edf6992SAndrea Pescetti 
47*3edf6992SAndrea Pescetti }
48*3edf6992SAndrea Pescetti 
49*3edf6992SAndrea Pescetti SerfUnlockProcImpl::~SerfUnlockProcImpl()
50*3edf6992SAndrea Pescetti {
51*3edf6992SAndrea Pescetti }
52*3edf6992SAndrea Pescetti 
53*3edf6992SAndrea Pescetti serf_bucket_t * SerfUnlockProcImpl::createSerfRequestBucket( serf_request_t * inSerfRequest )
54*3edf6992SAndrea Pescetti {
55*3edf6992SAndrea Pescetti     // create serf request
56*3edf6992SAndrea Pescetti     serf_bucket_t *req_bkt = serf_request_bucket_request_create( inSerfRequest,
57*3edf6992SAndrea Pescetti                                                                  "UNLOCK",
58*3edf6992SAndrea Pescetti                                                                  getPathStr(),
59*3edf6992SAndrea Pescetti                                                                  0,
60*3edf6992SAndrea Pescetti                                                                  serf_request_get_alloc( inSerfRequest ) );
61*3edf6992SAndrea Pescetti     // set request header fields
62*3edf6992SAndrea Pescetti     serf_bucket_t* hdrs_bkt = serf_bucket_request_get_headers( req_bkt );
63*3edf6992SAndrea Pescetti     if (hdrs_bkt != NULL)
64*3edf6992SAndrea Pescetti     {
65*3edf6992SAndrea Pescetti         // general header fields provided by caller
66*3edf6992SAndrea Pescetti         setRequestHeaders( hdrs_bkt );
67*3edf6992SAndrea Pescetti 
68*3edf6992SAndrea Pescetti         // request specific header fields
69*3edf6992SAndrea Pescetti         serf_bucket_headers_set( hdrs_bkt, "Lock-Token", mpLockToken );
70*3edf6992SAndrea Pescetti     }
71*3edf6992SAndrea Pescetti     else
72*3edf6992SAndrea Pescetti     {
73*3edf6992SAndrea Pescetti         OSL_ASSERT("Headers Bucket missing");
74*3edf6992SAndrea Pescetti     }
75*3edf6992SAndrea Pescetti 
76*3edf6992SAndrea Pescetti     return req_bkt;
77*3edf6992SAndrea Pescetti }
78*3edf6992SAndrea Pescetti 
79*3edf6992SAndrea Pescetti void SerfUnlockProcImpl::processChunkOfResponseData( const char* data,
80*3edf6992SAndrea Pescetti                                                       apr_size_t len )
81*3edf6992SAndrea Pescetti {
82*3edf6992SAndrea Pescetti     if ( xInputStream.is() )
83*3edf6992SAndrea Pescetti     {
84*3edf6992SAndrea Pescetti         xInputStream->AddToStream( data, len );
85*3edf6992SAndrea Pescetti     }
86*3edf6992SAndrea Pescetti }
87*3edf6992SAndrea Pescetti 
88*3edf6992SAndrea Pescetti void SerfUnlockProcImpl::handleEndOfResponseData( serf_bucket_t * /*inSerfResponseBucket*/ )
89*3edf6992SAndrea Pescetti {
90*3edf6992SAndrea Pescetti }
91*3edf6992SAndrea Pescetti 
92*3edf6992SAndrea Pescetti } // namespace http_dav_ucp
93