Bump for 3.6-28
[LibreOffice.git] / ucb / source / ucp / webdav / DAVResourceAccess.hxx
blob30770b06e3c1ef512e6b2d8b56abe39e3ecccf26
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*************************************************************************
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6 * Copyright 2000, 2010 Oracle and/or its affiliates.
8 * OpenOffice.org - a multi-platform office productivity suite
10 * This file is part of OpenOffice.org.
12 * OpenOffice.org is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License version 3
14 * only, as published by the Free Software Foundation.
16 * OpenOffice.org is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License version 3 for more details
20 * (a copy is included in the LICENSE file that accompanied this code).
22 * You should have received a copy of the GNU Lesser General Public License
23 * version 3 along with OpenOffice.org. If not, see
24 * <http://www.openoffice.org/license.html>
25 * for a copy of the LGPLv3 License.
27 ************************************************************************/
29 #ifndef _DAVRESOURCEACCESS_HXX_
30 #define _DAVRESOURCEACCESS_HXX_
32 #include <vector>
33 #include <rtl/ustring.hxx>
34 #include <rtl/ref.hxx>
35 #include <osl/mutex.hxx>
36 #include <com/sun/star/io/XInputStream.hpp>
37 #include <com/sun/star/io/XOutputStream.hpp>
38 #include <com/sun/star/beans/NamedValue.hpp>
39 #include <com/sun/star/ucb/Lock.hpp>
40 #include <com/sun/star/ucb/XCommandEnvironment.hpp>
41 #include "DAVAuthListener.hxx"
42 #include "DAVException.hxx"
43 #include "DAVSession.hxx"
44 #include "DAVResource.hxx"
45 #include "DAVTypes.hxx"
46 #include "NeonUri.hxx"
48 namespace webdav_ucp
51 class DAVSessionFactory;
53 class DAVResourceAccess
55 osl::Mutex m_aMutex;
56 rtl::OUString m_aURL;
57 rtl::OUString m_aPath;
58 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > m_aFlags;
59 rtl::Reference< DAVSession > m_xSession;
60 rtl::Reference< DAVSessionFactory > m_xSessionFactory;
61 com::sun::star::uno::Reference<
62 com::sun::star::lang::XMultiServiceFactory > m_xSMgr;
63 std::vector< NeonUri > m_aRedirectURIs;
65 public:
66 DAVResourceAccess() : m_xSessionFactory( 0 ) {}
67 DAVResourceAccess( const com::sun::star::uno::Reference<
68 com::sun::star::lang::XMultiServiceFactory > & rSMgr,
69 rtl::Reference<
70 DAVSessionFactory > const & rSessionFactory,
71 const rtl::OUString & rURL );
72 DAVResourceAccess( const DAVResourceAccess & rOther );
74 DAVResourceAccess & operator=( const DAVResourceAccess & rOther );
76 void setFlags( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& rFlags )
77 throw ( DAVException );
79 void setURL( const rtl::OUString & rNewURL )
80 throw ( DAVException );
82 void resetUri();
84 const rtl::OUString & getURL() const { return m_aURL; }
86 rtl::Reference< DAVSessionFactory > getSessionFactory() const
87 { return m_xSessionFactory; }
89 // DAV methods
92 #if 0 // currently not used, but please don't remove code
93 void
94 OPTIONS( DAVCapabilities & rCapabilities,
95 const com::sun::star::uno::Reference<
96 com::sun::star::ucb::XCommandEnvironment > & xEnv )
97 throw ( DAVException );
98 #endif
100 // allprop & named
101 void
102 PROPFIND( const Depth nDepth,
103 const std::vector< rtl::OUString > & rPropertyNames,
104 std::vector< DAVResource > & rResources,
105 const com::sun::star::uno::Reference<
106 com::sun::star::ucb::XCommandEnvironment > & xEnv )
107 throw ( DAVException );
109 // propnames
110 void
111 PROPFIND( const Depth nDepth,
112 std::vector< DAVResourceInfo > & rResInfo,
113 const com::sun::star::uno::Reference<
114 com::sun::star::ucb::XCommandEnvironment > & xEnv )
115 throw ( DAVException );
117 void
118 PROPPATCH( const std::vector< ProppatchValue > & rValues,
119 const com::sun::star::uno::Reference<
120 com::sun::star::ucb::XCommandEnvironment >& xEnv )
121 throw ( DAVException );
123 void
124 HEAD( const std::vector< rtl::OUString > & rHeaderNames, // empty == 'all'
125 DAVResource & rResource,
126 const com::sun::star::uno::Reference<
127 com::sun::star::ucb::XCommandEnvironment >& xEnv )
128 throw ( DAVException );
130 com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
131 GET( const com::sun::star::uno::Reference<
132 com::sun::star::ucb::XCommandEnvironment > & xEnv )
133 throw ( DAVException );
135 void
136 GET( com::sun::star::uno::Reference<
137 com::sun::star::io::XOutputStream > & rStream,
138 const com::sun::star::uno::Reference<
139 com::sun::star::ucb::XCommandEnvironment > & xEnv )
140 throw ( DAVException );
142 com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
143 GET( const std::vector< rtl::OUString > & rHeaderNames, // empty == 'all'
144 DAVResource & rResource,
145 const com::sun::star::uno::Reference<
146 com::sun::star::ucb::XCommandEnvironment > & xEnv )
147 throw ( DAVException );
149 void
150 GET( com::sun::star::uno::Reference<
151 com::sun::star::io::XOutputStream > & rStream,
152 const std::vector< rtl::OUString > & rHeaderNames, // empty == 'all'
153 DAVResource & rResource,
154 const com::sun::star::uno::Reference<
155 com::sun::star::ucb::XCommandEnvironment > & xEnv )
156 throw ( DAVException );
158 void
159 PUT( const com::sun::star::uno::Reference<
160 com::sun::star::io::XInputStream > & rStream,
161 const com::sun::star::uno::Reference<
162 com::sun::star::ucb::XCommandEnvironment > & xEnv )
163 throw ( DAVException );
165 com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
166 POST( const rtl::OUString & rContentType,
167 const rtl::OUString & rReferer,
168 const com::sun::star::uno::Reference<
169 com::sun::star::io::XInputStream > & rInputStream,
170 const com::sun::star::uno::Reference<
171 com::sun::star::ucb::XCommandEnvironment >& xEnv )
172 throw ( DAVException );
174 void
175 POST( const rtl::OUString & rContentType,
176 const rtl::OUString & rReferer,
177 const com::sun::star::uno::Reference<
178 com::sun::star::io::XInputStream > & rInputStream,
179 com::sun::star::uno::Reference<
180 com::sun::star::io::XOutputStream > & rOutputStream,
181 const com::sun::star::uno::Reference<
182 com::sun::star::ucb::XCommandEnvironment >& xEnv )
183 throw ( DAVException );
185 void
186 MKCOL( const com::sun::star::uno::Reference<
187 com::sun::star::ucb::XCommandEnvironment > & xEnv )
188 throw ( DAVException );
190 void
191 COPY( const ::rtl::OUString & rSourcePath,
192 const ::rtl::OUString & rDestinationURI,
193 sal_Bool bOverwrite,
194 const com::sun::star::uno::Reference<
195 com::sun::star::ucb::XCommandEnvironment > & xEnv )
196 throw ( DAVException );
198 void
199 MOVE( const ::rtl::OUString & rSourcePath,
200 const ::rtl::OUString & rDestinationURI,
201 sal_Bool bOverwrite,
202 const com::sun::star::uno::Reference<
203 com::sun::star::ucb::XCommandEnvironment > & xEnv )
204 throw ( DAVException );
206 void
207 DESTROY( const com::sun::star::uno::Reference<
208 com::sun::star::ucb::XCommandEnvironment > & xEnv )
209 throw ( DAVException );
211 // set new lock.
212 void
213 LOCK( com::sun::star::ucb::Lock & inLock,
214 const com::sun::star::uno::Reference<
215 com::sun::star::ucb::XCommandEnvironment > & xEnv )
216 throw( DAVException );
218 #if 0 // currently not used, but please don't remove code
219 // refresh existing lock.
220 sal_Int64
221 LOCK( sal_Int64 nTimeout,
222 const com::sun::star::uno::Reference<
223 com::sun::star::ucb::XCommandEnvironment > & xEnv )
224 throw ( DAVException );
225 #endif
227 void
228 UNLOCK( const com::sun::star::uno::Reference<
229 com::sun::star::ucb::XCommandEnvironment > & xEnv )
230 throw ( DAVException );
232 void
233 abort()
234 throw ( DAVException );
236 // helper
237 static void
238 getUserRequestHeaders(
239 const com::sun::star::uno::Reference<
240 com::sun::star::ucb::XCommandEnvironment > & xEnv,
241 const rtl::OUString & rURI,
242 const rtl::OUString & rMethod,
243 DAVRequestHeaders & rRequestHeaders );
245 private:
246 const rtl::OUString & getRequestURI() const;
247 sal_Bool detectRedirectCycle( const rtl::OUString& rRedirectURL )
248 throw ( DAVException );
249 sal_Bool handleException( const DAVException & e, int errorCount )
250 throw ( DAVException );
251 void initialize()
252 throw ( DAVException );
255 } // namespace webdav_ucp
257 #endif // _DAVRESOURCEACCESS_HXX_
259 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */