1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef _DAVEXCEPTION_HXX_ 25*b1cdbd2cSJim Jagielski #define _DAVEXCEPTION_HXX_ 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include <rtl/ustring.hxx> 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski namespace http_dav_ucp 30*b1cdbd2cSJim Jagielski { 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski ///////////////////////////////////////////////////////////////////////////// 33*b1cdbd2cSJim Jagielski // HTTP/WebDAV status codes 34*b1cdbd2cSJim Jagielski ///////////////////////////////////////////////////////////////////////////// 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski const sal_uInt16 SC_NONE = 0; 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski // 1xx (Informational - no errors) 39*b1cdbd2cSJim Jagielski const sal_uInt16 SC_CONTINUE = 100; 40*b1cdbd2cSJim Jagielski const sal_uInt16 SC_SWITCHING_PROTOCOLS = 101; 41*b1cdbd2cSJim Jagielski // DAV extensions 42*b1cdbd2cSJim Jagielski const sal_uInt16 SC_PROCESSING = 102; 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski //2xx (Successful - no errors) 45*b1cdbd2cSJim Jagielski const sal_uInt16 SC_OK = 200; 46*b1cdbd2cSJim Jagielski const sal_uInt16 SC_CREATED = 201; 47*b1cdbd2cSJim Jagielski const sal_uInt16 SC_ACCEPTED = 202; 48*b1cdbd2cSJim Jagielski const sal_uInt16 SC_NON_AUTHORITATIVE_INFORMATION = 203; 49*b1cdbd2cSJim Jagielski const sal_uInt16 SC_NO_CONTENT = 204; 50*b1cdbd2cSJim Jagielski const sal_uInt16 SC_RESET_CONTENT = 205; 51*b1cdbd2cSJim Jagielski const sal_uInt16 SC_PARTIAL_CONTENT = 206; 52*b1cdbd2cSJim Jagielski // DAV extensions 53*b1cdbd2cSJim Jagielski const sal_uInt16 SC_MULTISTATUS = 207; 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski //3xx (Redirection) 56*b1cdbd2cSJim Jagielski const sal_uInt16 SC_MULTIPLE_CHOICES = 300; 57*b1cdbd2cSJim Jagielski const sal_uInt16 SC_MOVED_PERMANENTLY = 301; 58*b1cdbd2cSJim Jagielski const sal_uInt16 SC_MOVED_TEMPORARILY = 302; 59*b1cdbd2cSJim Jagielski const sal_uInt16 SC_SEE_OTHER = 303; 60*b1cdbd2cSJim Jagielski const sal_uInt16 SC_NOT_MODIFIED = 304; 61*b1cdbd2cSJim Jagielski const sal_uInt16 SC_USE_PROXY = 305; 62*b1cdbd2cSJim Jagielski const sal_uInt16 SC_TEMPORARY_REDIRECT = 307; 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski //4xx (Client error) 65*b1cdbd2cSJim Jagielski const sal_uInt16 SC_BAD_REQUEST = 400; 66*b1cdbd2cSJim Jagielski const sal_uInt16 SC_UNAUTHORIZED = 401; 67*b1cdbd2cSJim Jagielski const sal_uInt16 SC_PAYMENT_REQUIRED = 402; 68*b1cdbd2cSJim Jagielski const sal_uInt16 SC_FORBIDDEN = 403; 69*b1cdbd2cSJim Jagielski const sal_uInt16 SC_NOT_FOUND = 404; 70*b1cdbd2cSJim Jagielski const sal_uInt16 SC_METHOD_NOT_ALLOWED = 405; 71*b1cdbd2cSJim Jagielski const sal_uInt16 SC_NOT_ACCEPTABLE = 406; 72*b1cdbd2cSJim Jagielski const sal_uInt16 SC_PROXY_AUTHENTICATION_REQUIRED = 407; 73*b1cdbd2cSJim Jagielski const sal_uInt16 SC_REQUEST_TIMEOUT = 408; 74*b1cdbd2cSJim Jagielski const sal_uInt16 SC_CONFLICT = 409; 75*b1cdbd2cSJim Jagielski const sal_uInt16 SC_GONE = 410; 76*b1cdbd2cSJim Jagielski const sal_uInt16 SC_LENGTH_REQUIRED = 411; 77*b1cdbd2cSJim Jagielski const sal_uInt16 SC_PRECONDITION_FAILED = 412; 78*b1cdbd2cSJim Jagielski const sal_uInt16 SC_REQUEST_ENTITY_TOO_LARGE = 413; 79*b1cdbd2cSJim Jagielski const sal_uInt16 SC_REQUEST_URI_TOO_LONG = 414; 80*b1cdbd2cSJim Jagielski const sal_uInt16 SC_UNSUPPORTED_MEDIA_TYPE = 415; 81*b1cdbd2cSJim Jagielski const sal_uInt16 SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416; 82*b1cdbd2cSJim Jagielski const sal_uInt16 SC_EXPECTATION_FAILED = 417; 83*b1cdbd2cSJim Jagielski // DAV extensions 84*b1cdbd2cSJim Jagielski const sal_uInt16 SC_UNPROCESSABLE_ENTITY = 422; 85*b1cdbd2cSJim Jagielski const sal_uInt16 SC_LOCKED = 423; 86*b1cdbd2cSJim Jagielski const sal_uInt16 SC_FAILED_DEPENDENCY = 424; 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski //5xx (Server error) 89*b1cdbd2cSJim Jagielski const sal_uInt16 SC_INTERNAL_SERVER_ERROR = 500; 90*b1cdbd2cSJim Jagielski const sal_uInt16 SC_NOT_IMPLEMENTED = 501; 91*b1cdbd2cSJim Jagielski const sal_uInt16 SC_BAD_GATEWAY = 502; 92*b1cdbd2cSJim Jagielski const sal_uInt16 SC_SERVICE_UNAVAILABLE = 503; 93*b1cdbd2cSJim Jagielski const sal_uInt16 SC_GATEWAY_TIMEOUT = 504; 94*b1cdbd2cSJim Jagielski const sal_uInt16 SC_HTTP_VERSION_NOT_SUPPORTED = 505; 95*b1cdbd2cSJim Jagielski // DAV extensions 96*b1cdbd2cSJim Jagielski const sal_uInt16 SC_INSUFFICIENT_STORAGE = 507; 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski ///////////////////////////////////////////////////////////////////////////// 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski class DAVException 101*b1cdbd2cSJim Jagielski { 102*b1cdbd2cSJim Jagielski public: 103*b1cdbd2cSJim Jagielski enum ExceptionCode { 104*b1cdbd2cSJim Jagielski DAV_HTTP_ERROR = 0, // Generic error, 105*b1cdbd2cSJim Jagielski // mData = server error message, 106*b1cdbd2cSJim Jagielski // mStatusCode = HTTP status code 107*b1cdbd2cSJim Jagielski DAV_HTTP_LOOKUP, // Name lookup failed, 108*b1cdbd2cSJim Jagielski // mData = server[:port] 109*b1cdbd2cSJim Jagielski DAV_HTTP_NOAUTH, // No User authentication data provided - e.g., user aborts corresponding dialog 110*b1cdbd2cSJim Jagielski // mData = server[:port] 111*b1cdbd2cSJim Jagielski DAV_HTTP_AUTH, // User authentication failed on server, 112*b1cdbd2cSJim Jagielski // mData = server[:port] 113*b1cdbd2cSJim Jagielski DAV_HTTP_AUTHPROXY, // User authentication failed on proxy, 114*b1cdbd2cSJim Jagielski // mData = proxy server[:port] 115*b1cdbd2cSJim Jagielski DAV_HTTP_CONNECT, // Could not connect to server, 116*b1cdbd2cSJim Jagielski // mData = server[:port] 117*b1cdbd2cSJim Jagielski DAV_HTTP_TIMEOUT, // Connection timed out 118*b1cdbd2cSJim Jagielski // mData = server[:port] 119*b1cdbd2cSJim Jagielski DAV_HTTP_FAILED, // The precondition failed 120*b1cdbd2cSJim Jagielski // mData = server[:port] 121*b1cdbd2cSJim Jagielski DAV_HTTP_RETRY, // Retry request 122*b1cdbd2cSJim Jagielski // mData = server[:port] 123*b1cdbd2cSJim Jagielski DAV_HTTP_REDIRECT, // Request was redirected, 124*b1cdbd2cSJim Jagielski // mData = new URL 125*b1cdbd2cSJim Jagielski DAV_SESSION_CREATE, // session creation error, 126*b1cdbd2cSJim Jagielski // mData = server[:port] 127*b1cdbd2cSJim Jagielski DAV_INVALID_ARG, // invalid argument 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski DAV_LOCK_EXPIRED, // DAV lock expired 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski DAV_NOT_LOCKED, // not locked 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski DAV_LOCKED_SELF, // locked by this OOo session 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski DAV_LOCKED // locked by third party 136*b1cdbd2cSJim Jagielski }; 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski private: 139*b1cdbd2cSJim Jagielski ExceptionCode mExceptionCode; 140*b1cdbd2cSJim Jagielski rtl::OUString mData; 141*b1cdbd2cSJim Jagielski //owner of the lock in case of DAV_LOCKED 142*b1cdbd2cSJim Jagielski rtl::OUString mOwner; 143*b1cdbd2cSJim Jagielski //extendend error information, if the server has a specific header 144*b1cdbd2cSJim Jagielski //see in SerfRequestProcessor::handleSerfResponse for detail on how this is obtained 145*b1cdbd2cSJim Jagielski rtl::OUString mExtendedError; 146*b1cdbd2cSJim Jagielski sal_uInt16 mStatusCode; 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski public: DAVException(ExceptionCode inExceptionCode)149*b1cdbd2cSJim Jagielski DAVException( ExceptionCode inExceptionCode ) 150*b1cdbd2cSJim Jagielski : mExceptionCode( inExceptionCode ) 151*b1cdbd2cSJim Jagielski , mData() 152*b1cdbd2cSJim Jagielski , mOwner() 153*b1cdbd2cSJim Jagielski , mExtendedError() 154*b1cdbd2cSJim Jagielski , mStatusCode( SC_NONE ) 155*b1cdbd2cSJim Jagielski {}; DAVException(ExceptionCode inExceptionCode,const rtl::OUString & rData)156*b1cdbd2cSJim Jagielski DAVException( ExceptionCode inExceptionCode, 157*b1cdbd2cSJim Jagielski const rtl::OUString & rData ) 158*b1cdbd2cSJim Jagielski : mExceptionCode( inExceptionCode ) 159*b1cdbd2cSJim Jagielski , mData( rData ) 160*b1cdbd2cSJim Jagielski , mOwner() 161*b1cdbd2cSJim Jagielski , mExtendedError() 162*b1cdbd2cSJim Jagielski , mStatusCode( SC_NONE ) 163*b1cdbd2cSJim Jagielski {}; DAVException(ExceptionCode inExceptionCode,const rtl::OUString & rData,sal_uInt16 nStatusCode)164*b1cdbd2cSJim Jagielski DAVException( ExceptionCode inExceptionCode, 165*b1cdbd2cSJim Jagielski const rtl::OUString & rData, 166*b1cdbd2cSJim Jagielski sal_uInt16 nStatusCode ) 167*b1cdbd2cSJim Jagielski : mExceptionCode( inExceptionCode ) 168*b1cdbd2cSJim Jagielski , mData( rData ) 169*b1cdbd2cSJim Jagielski , mOwner() 170*b1cdbd2cSJim Jagielski , mExtendedError() 171*b1cdbd2cSJim Jagielski , mStatusCode( nStatusCode ) 172*b1cdbd2cSJim Jagielski {}; DAVException(ExceptionCode inExceptionCode,const rtl::OUString & rData,const rtl::OUString & rExtendedError,sal_uInt16 nStatusCode=SC_NONE)173*b1cdbd2cSJim Jagielski DAVException( ExceptionCode inExceptionCode, 174*b1cdbd2cSJim Jagielski const rtl::OUString & rData, 175*b1cdbd2cSJim Jagielski const rtl::OUString & rExtendedError, 176*b1cdbd2cSJim Jagielski sal_uInt16 nStatusCode = SC_NONE ) 177*b1cdbd2cSJim Jagielski : mExceptionCode( inExceptionCode ) 178*b1cdbd2cSJim Jagielski , mData( rData ) 179*b1cdbd2cSJim Jagielski , mOwner() 180*b1cdbd2cSJim Jagielski , mExtendedError( rExtendedError ) 181*b1cdbd2cSJim Jagielski , mStatusCode( nStatusCode ) 182*b1cdbd2cSJim Jagielski {}; ~DAVException()183*b1cdbd2cSJim Jagielski ~DAVException( ) {}; 184*b1cdbd2cSJim Jagielski getError() const185*b1cdbd2cSJim Jagielski const ExceptionCode & getError() const { return mExceptionCode; } getData() const186*b1cdbd2cSJim Jagielski const rtl::OUString & getData() const { return mData; } getExtendedError() const187*b1cdbd2cSJim Jagielski const rtl::OUString & getExtendedError() const { return mExtendedError; } getStatus() const188*b1cdbd2cSJim Jagielski sal_uInt16 getStatus() const { return mStatusCode; } getOwner() const189*b1cdbd2cSJim Jagielski const rtl::OUString & getOwner() const { return mOwner; } setOwner(const rtl::OUString & rOwner)190*b1cdbd2cSJim Jagielski void setOwner(const rtl::OUString & rOwner) { mOwner = rOwner; } 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim Jagielski }; 193*b1cdbd2cSJim Jagielski 194*b1cdbd2cSJim Jagielski } // namespace http_dav_ucp 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielski #endif // _DAVEXCEPTION_HXX_ 197