You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by ar...@apache.org on 2013/03/24 14:22:15 UTC
svn commit: r1460360 - in /openoffice/trunk/main/ucb/source/ucp/webdav:
DAVResourceAccess.cxx SerfPropPatchReqProcImpl.cxx SerfPutReqProcImpl.cxx
SerfRequestProcessorImpl.cxx makefile.mk webdavprovider.cxx
webdavuseragent.hxx
Author: arielch
Date: Sun Mar 24 13:22:15 2013
New Revision: 1460360
URL: http://svn.apache.org/r1460360
Log:
i121947 - Default User-Agent
Added:
openoffice/trunk/main/ucb/source/ucp/webdav/webdavuseragent.hxx
Modified:
openoffice/trunk/main/ucb/source/ucp/webdav/DAVResourceAccess.cxx
openoffice/trunk/main/ucb/source/ucp/webdav/SerfPropPatchReqProcImpl.cxx
openoffice/trunk/main/ucb/source/ucp/webdav/SerfPutReqProcImpl.cxx
openoffice/trunk/main/ucb/source/ucp/webdav/SerfRequestProcessorImpl.cxx
openoffice/trunk/main/ucb/source/ucp/webdav/makefile.mk
openoffice/trunk/main/ucb/source/ucp/webdav/webdavprovider.cxx
Modified: openoffice/trunk/main/ucb/source/ucp/webdav/DAVResourceAccess.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/ucb/source/ucp/webdav/DAVResourceAccess.cxx?rev=1460360&r1=1460359&r2=1460360&view=diff
==============================================================================
--- openoffice/trunk/main/ucb/source/ucp/webdav/DAVResourceAccess.cxx (original)
+++ openoffice/trunk/main/ucb/source/ucp/webdav/DAVResourceAccess.cxx Sun Mar 24 13:22:15 2013
@@ -1117,32 +1117,33 @@ void DAVResourceAccess::getUserRequestHe
const rtl::OUString & rMethod,
DAVRequestHeaders & rRequestHeaders )
{
- if ( xEnv.is() )
+ if ( !xEnv.is() )
+ return;
+
+ uno::Reference< ucb::XWebDAVCommandEnvironment > xDAVEnv(
+ xEnv, uno::UNO_QUERY );
+
+ if ( !xDAVEnv.is() )
+ return;
+
+ uno::Sequence< beans::NamedValue > aRequestHeaders
+ = xDAVEnv->getUserRequestHeaders( rURI, rMethod );
+
+ for ( sal_Int32 n = 0; n < aRequestHeaders.getLength(); ++n )
{
- uno::Reference< ucb::XWebDAVCommandEnvironment > xDAVEnv(
- xEnv, uno::UNO_QUERY );
+ rtl::OUString aValue;
+ sal_Bool isString = aRequestHeaders[ n ].Value >>= aValue;
- if ( xDAVEnv.is() )
+ if ( !isString )
{
- uno::Sequence< beans::NamedValue > aRequestHeaders
- = xDAVEnv->getUserRequestHeaders( rURI, rMethod );
-
- for ( sal_Int32 n = 0; n < aRequestHeaders.getLength(); ++n )
- {
- rtl::OUString aValue;
- sal_Bool isString = aRequestHeaders[ n ].Value >>= aValue;
-
- if ( !isString )
- {
- OSL_ENSURE( isString,
- "DAVResourceAccess::getUserRequestHeaders :"
- "Value is not a string! Ignoring..." );
- }
-
- rRequestHeaders.push_back(
- DAVRequestHeader( aRequestHeaders[ n ].Name, aValue ) );
- }
+ OSL_ENSURE( isString,
+ "DAVResourceAccess::getUserRequestHeaders :"
+ "Value is not a string! Ignoring..." );
+ continue;
}
+
+ rRequestHeaders.push_back(
+ DAVRequestHeader( aRequestHeaders[ n ].Name, aValue ) );
}
}
Modified: openoffice/trunk/main/ucb/source/ucp/webdav/SerfPropPatchReqProcImpl.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/ucb/source/ucp/webdav/SerfPropPatchReqProcImpl.cxx?rev=1460360&r1=1460359&r2=1460360&view=diff
==============================================================================
--- openoffice/trunk/main/ucb/source/ucp/webdav/SerfPropPatchReqProcImpl.cxx (original)
+++ openoffice/trunk/main/ucb/source/ucp/webdav/SerfPropPatchReqProcImpl.cxx Sun Mar 24 13:22:15 2013
@@ -165,7 +165,7 @@ serf_bucket_t * SerfPropPatchReqProcImpl
{
// general header fields provided by caller
setRequestHeaders( hdrs_bkt );
-
+
// request specific header fields
if ( body_bkt != 0 && aBodyText.getLength() > 0 )
{
Modified: openoffice/trunk/main/ucb/source/ucp/webdav/SerfPutReqProcImpl.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/ucb/source/ucp/webdav/SerfPutReqProcImpl.cxx?rev=1460360&r1=1460359&r2=1460360&view=diff
==============================================================================
--- openoffice/trunk/main/ucb/source/ucp/webdav/SerfPutReqProcImpl.cxx (original)
+++ openoffice/trunk/main/ucb/source/ucp/webdav/SerfPutReqProcImpl.cxx Sun Mar 24 13:22:15 2013
@@ -64,6 +64,11 @@ serf_bucket_t * SerfPutReqProcImpl::crea
serf_request_get_alloc( inSerfRequest ) );
handleChunkedEncoding(req_bkt, mnDataLen);
+ // set request header fields
+ serf_bucket_t* hdrs_bkt = serf_bucket_request_get_headers( req_bkt );
+ // general header fields provided by caller
+ setRequestHeaders( hdrs_bkt );
+
return req_bkt;
}
Modified: openoffice/trunk/main/ucb/source/ucp/webdav/SerfRequestProcessorImpl.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/ucb/source/ucp/webdav/SerfRequestProcessorImpl.cxx?rev=1460360&r1=1460359&r2=1460360&view=diff
==============================================================================
--- openoffice/trunk/main/ucb/source/ucp/webdav/SerfRequestProcessorImpl.cxx (original)
+++ openoffice/trunk/main/ucb/source/ucp/webdav/SerfRequestProcessorImpl.cxx Sun Mar 24 13:22:15 2013
@@ -20,6 +20,7 @@
*************************************************************/
#include "SerfRequestProcessorImpl.hxx"
+#include "webdavuseragent.hxx"
namespace
{
@@ -82,6 +83,7 @@ void SerfRequestProcessorImpl::handleChu
void SerfRequestProcessorImpl::setRequestHeaders( serf_bucket_t* inoutSerfHeaderBucket )
{
+ bool bHasUserAgent( false );
DAVRequestHeaders::const_iterator aHeaderIter( mrRequestHeaders.begin() );
const DAVRequestHeaders::const_iterator aEnd( mrRequestHeaders.end() );
@@ -92,6 +94,11 @@ void SerfRequestProcessorImpl::setReques
const rtl::OString aValue = rtl::OUStringToOString( (*aHeaderIter).second,
RTL_TEXTENCODING_UTF8 );
+ OSL_TRACE( "Request Header - \"%s: %s\"", aHeader.getStr(), aValue.getStr() );
+ if ( !bHasUserAgent )
+ bHasUserAgent = aHeaderIter->first.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "User-Agent" ) );
+
serf_bucket_headers_set( inoutSerfHeaderBucket,
aHeader.getStr(),
aValue.getStr() );
@@ -99,6 +106,14 @@ void SerfRequestProcessorImpl::setReques
++aHeaderIter;
}
+ if ( !bHasUserAgent )
+ {
+ const rtl::OUString &rUserAgent = WebDAVUserAgent::get();
+ serf_bucket_headers_set( inoutSerfHeaderBucket,
+ "User-Agent",
+ rtl::OUStringToOString( rUserAgent, RTL_TEXTENCODING_UTF8 ).getStr() );
+ }
+
serf_bucket_headers_set( inoutSerfHeaderBucket, "Accept-Encoding", "gzip");
}
Modified: openoffice/trunk/main/ucb/source/ucp/webdav/makefile.mk
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/ucb/source/ucp/webdav/makefile.mk?rev=1460360&r1=1460359&r2=1460360&view=diff
==============================================================================
--- openoffice/trunk/main/ucb/source/ucp/webdav/makefile.mk (original)
+++ openoffice/trunk/main/ucb/source/ucp/webdav/makefile.mk Sun Mar 24 13:22:15 2013
@@ -61,6 +61,9 @@ SHL1STDLIBS+=$(APR_LIBS)
.ELSE
CFLAGS+= -I$(SOLARINCDIR)$/$(APRINCDIR)
SHL1STDLIBS+=$(INTERNAL_APR_LIBS)
+.INCLUDE : apr_version.mk
+CFLAGS+=\
+ -DAPR_VERSION=\"$(APR_MAJOR).$(APR_MINOR).$(APR_MICRO)\"
.ENDIF
.IF "$(SYSTEM_APR_UTIL)" == "YES"
@@ -69,6 +72,9 @@ SHL1STDLIBS+=$(APR_UTIL_LIBS)
.ELSE
CFLAGS+= -I$(SOLARINCDIR)$/$(APRUTILINCDIR)
SHL1STDLIBS+=$(INTERNAL_APR_UTIL_LIBS)
+.INCLUDE : aprutil_version.mk
+CFLAGS+=\
+ -DAPR_UTIL_VERSION=\"$(APR_UTIL_MAJOR).$(APR_UTIL_MINOR).$(APR_UTIL_MICRO)\"
.ENDIF
.IF "$(SYSTEM_SERF)" == "YES"
@@ -77,6 +83,9 @@ SHL1STDLIBS+=$(SERF_LIBS)
.ELSE
CFLAGS+= -I$(SOLARINCDIR)$/$(SERFINCDIR)
SHL1STDLIBS+=$(INTERNAL_SERF_LIBS)
+.INCLUDE : serf_version.mk
+CFLAGS+=\
+ -DSERF_VERSION=\"$(SERF_MAJOR).$(SERF_MINOR).$(SERF_MICRO)\"
.ENDIF
.IF "$(SYSTEM_LIBXML)" == "YES"
Modified: openoffice/trunk/main/ucb/source/ucp/webdav/webdavprovider.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/ucb/source/ucp/webdav/webdavprovider.cxx?rev=1460360&r1=1460359&r2=1460360&view=diff
==============================================================================
--- openoffice/trunk/main/ucb/source/ucp/webdav/webdavprovider.cxx (original)
+++ openoffice/trunk/main/ucb/source/ucp/webdav/webdavprovider.cxx Sun Mar 24 13:22:15 2013
@@ -32,12 +32,39 @@
#include <ucbhelper/contentidentifier.hxx>
#include "webdavprovider.hxx"
#include "webdavcontent.hxx"
+#include "webdavuseragent.hxx"
#include <osl/mutex.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
using namespace com::sun::star;
using namespace http_dav_ucp;
+
+rtl::OUString &WebDAVUserAgent::operator()() const
+{
+ rtl::OUStringBuffer aBuffer;
+ aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( "$ooName/$ooSetupVersion" ));
+#if OSL_DEBUG_LEVEL > 0
+#ifdef APR_VERSION
+ aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( " apr/" APR_VERSION ));
+#endif
+
+#ifdef APR_UTIL_VERSION
+ aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( " apr-util/" APR_UTIL_VERSION ));
+#endif
+
+#ifdef SERF_VERSION
+ aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( " serf/" SERF_VERSION ));
+#endif
+#endif
+ static rtl::OUString aUserAgent( aBuffer.makeStringAndClear() );
+ return aUserAgent;
+}
+
//=========================================================================
//=========================================================================
//
@@ -52,6 +79,55 @@ ContentProvider::ContentProvider(
m_xDAVSessionFactory( new DAVSessionFactory() ),
m_pProps( 0 )
{
+ static bool bInit = false;
+ if ( bInit )
+ return;
+ bInit = true;
+ try
+ {
+ uno::Reference< uno::XComponentContext > xContext(
+ ::comphelper::getProcessComponentContext() );
+ uno::Reference< lang::XMultiServiceFactory > xConfigProvider(
+ xContext->getServiceManager()->createInstanceWithContext(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.configuration.ConfigurationProvider")), xContext),
+ uno::UNO_QUERY_THROW );
+
+ beans::NamedValue aNodePath;
+ aNodePath.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) );
+ aNodePath.Value <<= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Setup/Product"));
+
+ uno::Sequence< uno::Any > aArgs( 1 );
+ aArgs[0] <<= aNodePath;
+
+ uno::Reference< container::XNameAccess > xConfigAccess(
+ xConfigProvider->createInstanceWithArguments(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.configuration.ConfigurationAccess")), aArgs),
+ uno::UNO_QUERY_THROW );
+
+ rtl::OUString aVal;
+ xConfigAccess->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooName"))) >>= aVal;
+
+ rtl::OUString &aUserAgent = WebDAVUserAgent::get();
+ sal_Int32 nIndex = aUserAgent.indexOfAsciiL( RTL_CONSTASCII_STRINGPARAM( "$ooName" ) );
+ if ( !aVal.getLength() || nIndex == -1 )
+ return;
+ aUserAgent = aUserAgent.replaceAt( nIndex, RTL_CONSTASCII_LENGTH( "$ooName" ), aVal );
+
+ xConfigAccess->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooSetupVersion"))) >>= aVal;
+ nIndex = aUserAgent.indexOfAsciiL( RTL_CONSTASCII_STRINGPARAM( "$ooSetupVersion" ) );
+ if ( !aVal.getLength() || nIndex == -1 )
+ return;
+ aUserAgent = aUserAgent.replaceAt( nIndex, RTL_CONSTASCII_LENGTH( "$ooSetupVersion" ), aVal );
+
+ }
+ catch ( const uno::Exception &e )
+ {
+ OSL_TRACE( "ContentProvider -caught exception! %s",
+ rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
+ (void) e;
+ }
}
//=========================================================================
Added: openoffice/trunk/main/ucb/source/ucp/webdav/webdavuseragent.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/ucb/source/ucp/webdav/webdavuseragent.hxx?rev=1460360&view=auto
==============================================================================
--- openoffice/trunk/main/ucb/source/ucp/webdav/webdavuseragent.hxx (added)
+++ openoffice/trunk/main/ucb/source/ucp/webdav/webdavuseragent.hxx Sun Mar 24 13:22:15 2013
@@ -0,0 +1,38 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+#ifndef INCLUDED_WEBDAV_UCP_USERAGENT_HXX
+#define INCLUDED_WEBDAV_UCP_USERAGENT_HXX
+
+#include <rtl/ustring.hxx>
+#include <rtl/instance.hxx>
+
+namespace http_dav_ucp {
+
+struct WebDAVUserAgent
+ : public ::rtl::StaticWithInit< rtl::OUString, WebDAVUserAgent >
+{
+ rtl::OUString &operator()() const;
+};
+
+}
+
+#endif