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