diff options
author | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2013-01-24 14:19:02 +0100 |
---|---|---|
committer | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2013-01-24 14:20:09 +0100 |
commit | 7744ed922e0e22c7cdb8fbc7ecd685ecccc68dca (patch) | |
tree | b6d5a71b7cc891d0e5bbe008e079985413fde858 /libcmis | |
parent | 04f21f9ad6c4b5be606f3c62fd10b3f1c2df283a (diff) |
CMIS: use the proxy settings from the options
Change-Id: I5b856ac166b67097e1921ec71eb5b7e1819fec41
Diffstat (limited to 'libcmis')
-rw-r--r-- | libcmis/UnpackedTarball_cmis.mk | 1 | ||||
-rw-r--r-- | libcmis/libcmis-0.3.0-proxy.patch | 1088 |
2 files changed, 1089 insertions, 0 deletions
diff --git a/libcmis/UnpackedTarball_cmis.mk b/libcmis/UnpackedTarball_cmis.mk index ce10efee0342..a25c3164fd7e 100644 --- a/libcmis/UnpackedTarball_cmis.mk +++ b/libcmis/UnpackedTarball_cmis.mk @@ -17,6 +17,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,cmis, \ libcmis/libcmis-0.3.0-warnings.patch \ libcmis/libcmis-0.3.0-win.patch \ libcmis/libcmis-0.3.0.patch \ + libcmis/libcmis-0.3.0-proxy.patch \ )) ifeq ($(OS)$(COM),WNTMSC) diff --git a/libcmis/libcmis-0.3.0-proxy.patch b/libcmis/libcmis-0.3.0-proxy.patch new file mode 100644 index 000000000000..7311b023e7bf --- /dev/null +++ b/libcmis/libcmis-0.3.0-proxy.patch @@ -0,0 +1,1088 @@ +diff --git NEWS NEWS +index 6e9c10d..0047613 100644 +--- NEWS ++++ NEWS +@@ -50,3 +50,6 @@ + * Session factory automatically detects which binding to use + * C wrapper API + * Unit tests are now split between quick ones and the ones needing a CMIS server ++ ++0.3.1 ++ * Added support for proxy configuration +diff --git doc/cmis-client.xml doc/cmis-client.xml +index b7dce51..2d6cdea 100644 +--- doc/cmis-client.xml ++++ doc/cmis-client.xml +@@ -213,6 +213,41 @@ + </para> + </listitem> + </varlistentry> ++ <varlistentry> ++ <term>--proxy <replaceable class="parameter">url</replaceable></term> ++ <listitem> ++ <para> ++ Use <replaceable class="parameter">url</replaceable> as the HTTP proxy. ++ Setting this value will override the system proxy settings. ++ </para> ++ </listitem> ++ </varlistentry> ++ <varlistentry> ++ <term>--proxy-username <replaceable class="parameter">login</replaceable></term> ++ <listitem> ++ <para> ++ Use <replaceable class="parameter">login</replaceable> to authenticate on the HTTP proxy. ++ </para> ++ </listitem> ++ </varlistentry> ++ <varlistentry> ++ <term>--proxy-password <replaceable class="parameter">secret</replaceable></term> ++ <listitem> ++ <para> ++ Use <replaceable class="parameter">secret</replaceable> to authenticate on the HTTP proxy. ++ </para> ++ </listitem> ++ </varlistentry> ++ <varlistentry> ++ <term>--noproxy <replaceable class="parameter">list</replaceable></term> ++ <listitem> ++ <para> ++ Proxy settings won't apply to hostnames and domain names listed ++ in <replaceable class="parameter">list</replaceable>. ++ This value is a coma separated list. ++ </para> ++ </listitem> ++ </varlistentry> + </variablelist> + </refsect2> + <refsect2> +diff --git src/cmis-client.cxx src/cmis-client.cxx +index 587a05b..432e140 100644 +--- src/cmis-client.cxx ++++ src/cmis-client.cxx +@@ -121,11 +121,32 @@ libcmis::Session* CmisClient::getSession( ) throw ( CommandException, libcmis::E + password = m_vm["password"].as< string >(); + } + ++ // Look for proxy settings ++ string proxyUrl; ++ string proxyUser; ++ string proxyPass; ++ string noproxy; ++ if ( m_vm.count( "proxy" ) > 0 ) ++ { ++ proxyUrl = m_vm["proxy"].as< string >(); ++ ++ if ( m_vm.count( "proxy-user" ) > 0 ) ++ proxyUser = m_vm["proxy-user"].as< string >(); ++ ++ if ( m_vm.count( "proxy-password" ) > 0 ) ++ proxyPass = m_vm["proxy-password"].as< string >(); ++ ++ if ( m_vm.count( "noproxy" ) > 0 ) ++ noproxy = m_vm["noproxy"].as< string >(); ++ ++ libcmis::SessionFactory::setProxySettings( proxyUrl, noproxy, proxyUser, proxyPass ); ++ } + + bool verbose = m_vm.count( "verbose" ) > 0; + + string repoId; +- list< libcmis::RepositoryPtr > repositories = libcmis::SessionFactory:: getRepositories( url, username, password, verbose ); ++ list< libcmis::RepositoryPtr > repositories = libcmis::SessionFactory::getRepositories( ++ url, username, password, verbose ); + if ( repositories.size( ) == 1 ) + repoId = repositories.front( )->getId( ); + else +@@ -169,10 +190,31 @@ void CmisClient::execute( ) throw ( exception ) + password = m_vm["password"].as< string >(); + } + ++ // Look for proxy settings ++ string proxyUrl; ++ string proxyUser; ++ string proxyPass; ++ string noproxy; ++ if ( m_vm.count( "proxy" ) > 0 ) ++ { ++ proxyUrl = m_vm["proxy"].as< string >(); ++ ++ if ( m_vm.count( "proxy-user" ) > 0 ) ++ proxyUser = m_vm["proxy-user"].as< string >(); ++ ++ if ( m_vm.count( "proxy-password" ) > 0 ) ++ proxyPass = m_vm["proxy-password"].as< string >(); ++ ++ if ( m_vm.count( "noproxy" ) > 0 ) ++ noproxy = m_vm["noproxy"].as< string >(); ++ ++ libcmis::SessionFactory::setProxySettings( proxyUrl, noproxy, proxyUser, proxyPass ); ++ } + + bool verbose = m_vm.count( "verbose" ) > 0; + +- list< libcmis::RepositoryPtr > repos = libcmis::SessionFactory::getRepositories( url, username, password, verbose ); ++ list< libcmis::RepositoryPtr > repos = libcmis::SessionFactory::getRepositories( ++ url, username, password, verbose ); + + cout << "Repositories: name (id)" << endl; + for ( list< libcmis::RepositoryPtr >::iterator it = repos.begin(); it != repos.end(); ++it ) +@@ -828,6 +870,11 @@ options_description CmisClient::getOptionsDescription( ) + ( "repository,r", value< string >(), "Name of the repository to use" ) + ( "username,u", value< string >(), "Username used to authenticate to the repository" ) + ( "password,p", value< string >(), "Password used to authenticate to the repository" ) ++ ( "proxy", value< string >(), "HTTP proxy url to override the system settings" ) ++ ( "noproxy", value< string >(), "Coma separated list if host and domain names not going" ++ "through the proxy" ) ++ ( "proxy-username", value< string >(), "Username to authenticate on the proxy" ) ++ ( "proxy-password", value< string >(), "Password to authenticate on the proxy" ) + ; + + options_description setcontentOpts( "modification operations options" ); +diff --git src/libcmis-c/session-factory.cxx src/libcmis-c/session-factory.cxx +index a171c82..7ebb278 100644 +--- src/libcmis-c/session-factory.cxx ++++ src/libcmis-c/session-factory.cxx +@@ -37,6 +37,33 @@ + + using namespace std; + ++void libcmis_setProxySettings( char* proxy, char* noProxy, ++ char* proxyUser, char* proxyPass ) ++{ ++ libcmis::SessionFactory::setProxySettings( string( proxy ), string( noProxy ), ++ string( proxyUser ), string( proxyPass ) ); ++} ++ ++const char* libcmis_getProxy( ) ++{ ++ return libcmis::SessionFactory::getProxy( ).c_str(); ++} ++ ++const char* libcmis_getNoProxy( ) ++{ ++ return libcmis::SessionFactory::getNoProxy( ).c_str(); ++} ++ ++const char* libcmis_getProxyUser( ) ++{ ++ return libcmis::SessionFactory::getProxyUser( ).c_str(); ++} ++ ++const char* libcmis_getProxyPass( ) ++{ ++ return libcmis::SessionFactory::getProxyPass( ).c_str(); ++} ++ + libcmis_SessionPtr libcmis_createSession( + char* bindingUrl, + char* repositoryId, +@@ -49,7 +76,8 @@ libcmis_SessionPtr libcmis_createSession( + + try + { +- libcmis::Session* handle = libcmis::SessionFactory::createSession( bindingUrl, username, password, repositoryId, verbose ); ++ libcmis::Session* handle = libcmis::SessionFactory::createSession( bindingUrl, username, ++ password, repositoryId, verbose ); + session = new libcmis_session( ); + session->handle = handle; + } +diff --git src/libcmis-c/session-factory.h src/libcmis-c/session-factory.h +index ad95acc..d28059e 100644 +--- src/libcmis-c/session-factory.h ++++ src/libcmis-c/session-factory.h +@@ -34,6 +34,17 @@ extern "C" { + + #include "types.h" + ++void libcmis_setProxySettings( ++ char* proxy, ++ char* noProxy, ++ char* proxyUser, ++ char* proxyPass ); ++ ++const char* libcmis_getProxy( ); ++const char* libcmis_getNoProxy( ); ++const char* libcmis_getProxyUser( ); ++const char* libcmis_getProxyPass( ); ++ + libcmis_SessionPtr libcmis_createSession( + char* bindingUrl, + char* repositoryId, +diff --git src/libcmis/atom-session.cxx src/libcmis/atom-session.cxx +index 1716755..1f8ac2d 100644 +--- src/libcmis/atom-session.cxx ++++ src/libcmis/atom-session.cxx +@@ -39,7 +39,7 @@ + + using namespace std; + +-AtomPubSession::AtomPubSession( string atomPubUrl, string repositoryId, ++AtomPubSession::AtomPubSession( string atomPubUrl, string repositoryId, + string username, string password, bool verbose ) throw ( libcmis::Exception ) : + BaseSession( atomPubUrl, repositoryId, username, password, verbose ), + m_repository( ) +@@ -139,7 +139,8 @@ void AtomPubSession::initialize( ) throw ( libcmis::Exception ) + + } + +-list< libcmis::RepositoryPtr > AtomPubSession::getRepositories( string url, string username, string password, bool verbose ) throw ( libcmis::Exception ) ++list< libcmis::RepositoryPtr > AtomPubSession::getRepositories( string url, string username, ++ string password, bool verbose ) throw ( libcmis::Exception ) + { + AtomPubSession session( url, string(), username, password, verbose ); + return session.m_repositories; +diff --git src/libcmis/atom-session.hxx src/libcmis/atom-session.hxx +index 568b9b0..29eb359 100644 +--- src/libcmis/atom-session.hxx ++++ src/libcmis/atom-session.hxx +@@ -39,7 +39,7 @@ class AtomPubSession : public BaseSession + public: + AtomPubSession( std::string sAtomPubUrl, std::string repositoryId, + std::string username, std::string password, +- bool verbose ) throw ( libcmis::Exception ); ++ bool verbose =false ) throw ( libcmis::Exception ); + AtomPubSession( const AtomPubSession& copy ); + ~AtomPubSession( ); + +diff --git src/libcmis/base-session.cxx src/libcmis/base-session.cxx +index adc030e..b007a9d 100644 +--- src/libcmis/base-session.cxx ++++ src/libcmis/base-session.cxx +@@ -33,6 +33,7 @@ + #include <libxml/xpath.h> + + #include "base-session.hxx" ++#include "session-factory.hxx" + #include "xml-utils.hxx" + + using namespace std; +@@ -105,11 +106,12 @@ namespace + } + } + +-BaseSession::BaseSession( string atomPubUrl, string repositoryId, +- string username, string password, bool verbose ) throw ( libcmis::Exception ) : ++BaseSession::BaseSession( string atomPubUrl, string repositoryId, string username, ++ string password, bool verbose ) throw ( libcmis::Exception ) : + Session( ), + m_authProvider( ), + m_curlHandle( NULL ), ++ m_no100Continue( false ), + m_bindingUrl( atomPubUrl ), + m_repositoryId( repositoryId ), + m_username( username ), +@@ -127,6 +129,7 @@ BaseSession::BaseSession( const BaseSession& copy ) : + Session( ), + m_authProvider( copy.m_authProvider ), + m_curlHandle( NULL ), ++ m_no100Continue( copy.m_no100Continue ), + m_bindingUrl( copy.m_bindingUrl ), + m_repositoryId( copy.m_repositoryId ), + m_username( copy.m_username ), +@@ -141,11 +144,11 @@ BaseSession::BaseSession( const BaseSession& copy ) : + m_curlHandle = curl_easy_init( ); + } + +- + BaseSession& BaseSession::operator=( const BaseSession& copy ) + { + m_authProvider = copy.m_authProvider; + m_curlHandle = NULL; ++ m_no100Continue = copy.m_no100Continue; + m_bindingUrl = copy.m_bindingUrl; + m_repositoryId = copy.m_repositoryId; + m_username = copy.m_username; +@@ -186,7 +189,7 @@ string BaseSession::createUrl( const string& pattern, map< string, string > vari + if ( pos != string::npos ) + { + // Escape the URL by chunks +-#if LIBCURL_VERSION_VALUE >= 0x071504 ++#if LIBCURL_VERSION_VALUE >= 0x070F04 + char* escaped = curl_easy_escape( m_curlHandle, value.c_str(), value.length() ); + #else + char* escaped = curl_escape( value.c_str(), value.length() ); +@@ -215,6 +218,9 @@ string BaseSession::createUrl( const string& pattern, map< string, string > vari + + libcmis::HttpResponsePtr BaseSession::httpGetRequest( string url ) throw ( CurlException ) + { ++ // Reset the handle for the request ++ curl_easy_reset( m_curlHandle ); ++ + libcmis::HttpResponsePtr response( new libcmis::HttpResponse( ) ); + + curl_easy_setopt( m_curlHandle, CURLOPT_WRITEFUNCTION, lcl_bufferData ); +@@ -244,6 +250,9 @@ libcmis::HttpResponsePtr BaseSession::httpGetRequest( string url ) throw ( CurlE + + libcmis::HttpResponsePtr BaseSession::httpPutRequest( string url, istream& is, vector< string > headers ) throw ( CurlException ) + { ++ // Reset the handle for the request ++ curl_easy_reset( m_curlHandle ); ++ + libcmis::HttpResponsePtr response( new libcmis::HttpResponse( ) ); + + curl_easy_setopt( m_curlHandle, CURLOPT_WRITEFUNCTION, lcl_bufferData ); +@@ -266,12 +275,32 @@ libcmis::HttpResponsePtr BaseSession::httpPutRequest( string url, istream& is, v + struct curl_slist *headers_slist = NULL; + for ( vector< string >::iterator it = headers.begin( ); it != headers.end( ); ++it ) + headers_slist = curl_slist_append( headers_slist, it->c_str( ) ); ++ ++ // If we know for sure that 100-Continue won't be accepted, ++ // don't even try with it to save one HTTP request. ++ if ( m_no100Continue ) ++ headers_slist = curl_slist_append( headers_slist, "Expect:" ); + curl_easy_setopt( m_curlHandle, CURLOPT_HTTPHEADER, headers_slist ); + + try + { + httpRunRequest( url ); + response->getData( )->finish(); ++ ++ /** If we had a HTTP 417 response, this is likely to be due to some ++ HTTP 1.0 proxy / server not accepting the "Expect: 100-continue" ++ header. Try to disable this header and try again. ++ */ ++ if ( getHttpStatus() == 417 ) ++ { ++ headers_slist = curl_slist_append( headers_slist, "Expect:" ); ++ curl_easy_setopt( m_curlHandle, CURLOPT_HTTPHEADER, headers_slist ); ++ httpRunRequest( url ); ++ response->getData( )->finish(); ++ ++ // Remember that we don't want 100-Continue for the future requests ++ m_no100Continue = true; ++ } + } + catch ( CurlException& e ) + { +@@ -286,6 +315,9 @@ libcmis::HttpResponsePtr BaseSession::httpPutRequest( string url, istream& is, v + + libcmis::HttpResponsePtr BaseSession::httpPostRequest( string url, istringstream& is, string contentType ) throw ( CurlException ) + { ++ // Reset the handle for the request ++ curl_easy_reset( m_curlHandle ); ++ + libcmis::HttpResponsePtr response( new libcmis::HttpResponse( ) ); + + curl_easy_setopt( m_curlHandle, CURLOPT_WRITEFUNCTION, lcl_bufferData ); +@@ -308,12 +340,32 @@ libcmis::HttpResponsePtr BaseSession::httpPostRequest( string url, istringstream + struct curl_slist *headers_slist = NULL; + string contentTypeHeader = string( "Content-Type:" ) + contentType; + headers_slist = curl_slist_append( headers_slist, contentTypeHeader.c_str( ) ); ++ ++ // If we know for sure that 100-Continue won't be accepted, ++ // don't even try with it to save one HTTP request. ++ if ( m_no100Continue ) ++ headers_slist = curl_slist_append( headers_slist, "Expect:" ); + curl_easy_setopt( m_curlHandle, CURLOPT_HTTPHEADER, headers_slist ); + + try + { + httpRunRequest( url ); + response->getData( )->finish(); ++ ++ /** If we had a HTTP 417 response, this is likely to be due to some ++ HTTP 1.0 proxy / server not accepting the "Expect: 100-continue" ++ header. Try to disable this header and try again. ++ */ ++ if ( getHttpStatus() == 417 ) ++ { ++ headers_slist = curl_slist_append( headers_slist, "Expect:" ); ++ curl_easy_setopt( m_curlHandle, CURLOPT_HTTPHEADER, headers_slist ); ++ httpRunRequest( url ); ++ response->getData( )->finish(); ++ ++ // Remember that we don't want 100-Continue for the future requests ++ m_no100Continue = true; ++ } + } + catch ( const CurlException& e ) + { +@@ -328,6 +380,9 @@ libcmis::HttpResponsePtr BaseSession::httpPostRequest( string url, istringstream + + void BaseSession::httpDeleteRequest( string url ) throw ( CurlException ) + { ++ // Reset the handle for the request ++ curl_easy_reset( m_curlHandle ); ++ + curl_easy_setopt( m_curlHandle, CURLOPT_CUSTOMREQUEST, "DELETE" ); + httpRunRequest( url ); + } +@@ -351,7 +406,7 @@ void BaseSession::httpRunRequest( string url ) throw ( CurlException ) + { + curl_easy_setopt( m_curlHandle, CURLOPT_HTTPAUTH, CURLAUTH_ANY ); + +-#if LIBCURL_VERSION_VALUE >= 0x071901 ++#if LIBCURL_VERSION_VALUE >= 0x071301 + curl_easy_setopt( m_curlHandle, CURLOPT_USERNAME, m_username.c_str() ); + curl_easy_setopt( m_curlHandle, CURLOPT_PASSWORD, m_password.c_str() ); + #else +@@ -360,6 +415,28 @@ void BaseSession::httpRunRequest( string url ) throw ( CurlException ) + #endif + } + ++ // Set the proxy configuration if any ++ if ( !libcmis::SessionFactory::getProxy( ).empty() ) ++ { ++ curl_easy_setopt( m_curlHandle, CURLOPT_PROXY, libcmis::SessionFactory::getProxy( ).c_str() ); ++#if LIBCURL_VERSION_VALUE >= 0x071304 ++ curl_easy_setopt( m_curlHandle, CURLOPT_NOPROXY, libcmis::SessionFactory::getNoProxy( ).c_str() ); ++#endif ++ const string& proxyUser = libcmis::SessionFactory::getProxyUser( ); ++ const string& proxyPass = libcmis::SessionFactory::getProxyPass( ); ++ if ( !proxyUser.empty( ) && !proxyPass.empty( ) ) ++ { ++ curl_easy_setopt( m_curlHandle, CURLOPT_PROXYAUTH, CURLAUTH_ANY ); ++#if LIBCURL_VERSION_VALUE >= 0X071301 ++ curl_easy_setopt( m_curlHandle, CURLOPT_PROXYUSERNAME, proxyUser.c_str( ) ); ++ curl_easy_setopt( m_curlHandle, CURLOPT_PROXYPASSWORD, proxyPass.c_str( ) ); ++#else ++ string userpwd = proxyUser + ":" + proxyPass; ++ curl_easy_setopt( m_curlHandle, CURLOPT_PROXYUSERPWD, userpwd.c_str( ) ); ++#endif ++ } ++ } ++ + // Get some feedback when something wrong happens + char errBuff[CURL_ERROR_SIZE]; + curl_easy_setopt( m_curlHandle, CURLOPT_ERRORBUFFER, errBuff ); +@@ -373,9 +450,6 @@ void BaseSession::httpRunRequest( string url ) throw ( CurlException ) + + // Perform the query + CURLcode errCode = curl_easy_perform( m_curlHandle ); +- +- // Reset the handle for the next request +- curl_easy_reset( m_curlHandle ); + + bool isHttpError = errCode == CURLE_HTTP_RETURNED_ERROR; + if ( CURLE_OK != errCode && !( m_noHttpErrors && isHttpError ) ) +diff --git src/libcmis/base-session.hxx src/libcmis/base-session.hxx +index fb95ba7..0b90c1f 100644 +--- src/libcmis/base-session.hxx ++++ src/libcmis/base-session.hxx +@@ -94,6 +94,7 @@ class BaseSession : public libcmis::Session + libcmis::AuthProviderPtr m_authProvider; + + CURL* m_curlHandle; ++ bool m_no100Continue; + + protected: + std::string m_bindingUrl; +@@ -110,7 +111,7 @@ class BaseSession : public libcmis::Session + public: + BaseSession( std::string sBindingUrl, std::string repository, + std::string username, std::string password, +- bool verbose ) throw ( libcmis::Exception ); ++ bool verbose = false ) throw ( libcmis::Exception ); + BaseSession( const BaseSession& copy ); + ~BaseSession( ); + +@@ -137,8 +138,6 @@ class BaseSession : public libcmis::Session + libcmis::HttpResponsePtr httpPostRequest( std::string url, std::istringstream& is, std::string contentType ) throw ( CurlException ); + void httpDeleteRequest( std::string url ) throw ( CurlException ); + +- void httpRunRequest( std::string url ) throw ( CurlException ); +- + long getHttpStatus( ); + + // Session methods +@@ -148,6 +147,8 @@ class BaseSession : public libcmis::Session + virtual libcmis::FolderPtr getFolder( std::string id ) throw ( libcmis::Exception ); + + virtual void setAuthenticationProvider( libcmis::AuthProviderPtr provider ) { m_authProvider = provider; } ++ private: ++ void httpRunRequest( std::string url ) throw ( CurlException ); + }; + + #endif +diff --git src/libcmis/session-factory.cxx src/libcmis/session-factory.cxx +index d7d886b..afe6943 100644 +--- src/libcmis/session-factory.cxx ++++ src/libcmis/session-factory.cxx +@@ -33,8 +33,23 @@ using namespace std; + + namespace libcmis + { ++ string SessionFactory::s_proxy; ++ string SessionFactory::s_noProxy; ++ string SessionFactory::s_proxyUser; ++ string SessionFactory::s_proxyPass; ++ ++ void SessionFactory::setProxySettings( string proxy, string noProxy, ++ string proxyUser, string proxyPass ) ++ { ++ SessionFactory::s_proxy = proxy; ++ SessionFactory::s_noProxy = noProxy; ++ SessionFactory::s_proxyUser = proxyUser; ++ SessionFactory::s_proxyPass = proxyPass; ++ } ++ + Session* SessionFactory::createSession( string bindingUrl, string username, +- string password, string repository, bool verbose ) throw ( Exception ) ++ string password, string repository, ++ bool verbose ) throw ( Exception ) + { + Session* session = NULL; + +@@ -68,8 +83,8 @@ namespace libcmis + return session; + } + +- list< RepositoryPtr > SessionFactory::getRepositories( string bindingUrl, string username, +- string password, bool verbose ) throw ( Exception ) ++ list< RepositoryPtr > SessionFactory::getRepositories( string bindingUrl, ++ string username, string password, bool verbose ) throw ( Exception ) + { + list< RepositoryPtr > repos; + +diff --git src/libcmis/session-factory.hxx src/libcmis/session-factory.hxx +index 677c2ab..598497f 100644 +--- src/libcmis/session-factory.hxx ++++ src/libcmis/session-factory.hxx +@@ -40,8 +40,24 @@ namespace libcmis + { + class SessionFactory + { ++ private: ++ static std::string s_proxy; ++ static std::string s_noProxy; ++ static std::string s_proxyUser; ++ static std::string s_proxyPass; ++ + public: + ++ static void setProxySettings( std::string proxy, ++ std::string noProxy, ++ std::string proxyUser, ++ std::string proxyPass ); ++ ++ static const std::string& getProxy() { return s_proxy; } ++ static const std::string& getNoProxy() { return s_noProxy; } ++ static const std::string& getProxyUser() { return s_proxyUser; } ++ static const std::string& getProxyPass() { return s_proxyPass; } ++ + /** Create a session from the given parameters. The binding type is automatically + detected based on the provided URL. + +diff --git src/libcmis/test-atom.cxx src/libcmis/test-atom.cxx +index 4ee64ea..624078d 100644 +--- src/libcmis/test-atom.cxx ++++ src/libcmis/test-atom.cxx +@@ -211,7 +211,7 @@ class TestAuthProvider : public libcmis::AuthProvider + + void AtomTest::authCallbackTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, string( ), false); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, string( ) ); + + // Test cancelled authentication + { +@@ -239,7 +239,7 @@ void AtomTest::authCallbackTest( ) + + void AtomTest::getUnexistantTypeTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + try + { +@@ -254,7 +254,7 @@ void AtomTest::getUnexistantTypeTest( ) + + void AtomTest::getNormalTypeTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + libcmis::ObjectTypePtr type = session.getType( TEST_TYPE_ID ); + +@@ -265,7 +265,7 @@ void AtomTest::getNormalTypeTest( ) + + void AtomTest::getTypeChildrenTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + libcmis::ObjectTypePtr type = session.getType( CHILDREN_TEST_TYPE_ID ); + vector< libcmis::ObjectTypePtr > children = type->getChildren( ); +@@ -275,7 +275,7 @@ void AtomTest::getTypeChildrenTest( ) + + void AtomTest::getUnexistantFolderTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + try + { +@@ -290,7 +290,7 @@ void AtomTest::getUnexistantFolderTest( ) + + void AtomTest::getUnexistantObjectTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + try + { +@@ -305,7 +305,7 @@ void AtomTest::getUnexistantObjectTest( ) + + void AtomTest::getFolderFromOtherNodeTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::FolderPtr folder = session.getFolder( TEST_DOCUMENT_ID ); + + CPPUNIT_ASSERT_MESSAGE( "Nothing should be returned: not a folder", +@@ -314,7 +314,7 @@ void AtomTest::getFolderFromOtherNodeTest( ) + + void AtomTest::getFolderCreationFromUrlTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::FolderPtr folder = session.getFolder( TEST_FOLDER_ID ); + + AtomFolder* atomFolder = dynamic_cast< AtomFolder* >( folder.get( ) ); +@@ -336,7 +336,7 @@ void AtomTest::getFolderCreationFromUrlTest( ) + + void AtomTest::getDocumentCreationFromUrlTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::ObjectPtr object = session.getObject( TEST_DOCUMENT_ID ); + + AtomDocument* atomDocument = dynamic_cast< AtomDocument* >( object.get( ) ); +@@ -359,7 +359,7 @@ void AtomTest::getDocumentCreationFromUrlTest( ) + + void AtomTest::getByPathValidTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + try + { + libcmis::ObjectPtr object = session.getObjectByPath( TEST_PATH_VALID ); +@@ -376,7 +376,7 @@ void AtomTest::getByPathValidTest( ) + + void AtomTest::getByPathInvalidTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + try + { + libcmis::ObjectPtr object = session.getObjectByPath( TEST_PATH_INVALID ); +@@ -391,7 +391,7 @@ void AtomTest::getByPathInvalidTest( ) + + void AtomTest::getAllowableActionsTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::FolderPtr folder = session.getRootFolder( ); + + boost::shared_ptr< libcmis::AllowableActions > toCheck = folder->getAllowableActions( ); +@@ -405,7 +405,7 @@ void AtomTest::getAllowableActionsTest( ) + + void AtomTest::getChildrenTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::FolderPtr folder = session.getRootFolder( ); + + vector< libcmis::ObjectPtr > children = folder->getChildren( ); +@@ -429,7 +429,7 @@ void AtomTest::getChildrenTest( ) + + void AtomTest::getObjectParentsTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::ObjectPtr object = session.getObject( TEST_DOCUMENT_ID ); + libcmis::Document* document = dynamic_cast< libcmis::Document* >( object.get() ); + +@@ -445,7 +445,7 @@ void AtomTest::getObjectParentsTest( ) + + void AtomTest::getContentStreamTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::ObjectPtr object = session.getObject( TEST_DOCUMENT_ID ); + libcmis::Document* document = dynamic_cast< libcmis::Document* >( object.get() ); + +@@ -467,7 +467,7 @@ void AtomTest::getContentStreamTest( ) + + void AtomTest::setContentStreamTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::ObjectPtr object = session.getObject( TEST_DOCUMENT_ID ); + libcmis::Document* document = dynamic_cast< libcmis::Document* >( object.get() ); + +@@ -503,7 +503,7 @@ void AtomTest::setContentStreamTest( ) + + void AtomTest::updatePropertiesTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + // Values for the test + libcmis::ObjectPtr object = session.getObject( "114" ); +@@ -530,7 +530,7 @@ void AtomTest::updatePropertiesTest( ) + + void AtomTest::createFolderTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::FolderPtr parent = session.getFolder( session.getRootId( ) ); + + // Prepare the properties for the new object, object type is cmis:folder +@@ -564,7 +564,7 @@ void AtomTest::createFolderTest( ) + + void AtomTest::createFolderBadTypeTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::FolderPtr parent = session.getFolder( session.getRootId( ) ); + + // Prepare the properties for the new object, object type is cmis:document to trigger the exception +@@ -603,7 +603,7 @@ void AtomTest::createFolderBadTypeTest( ) + + void AtomTest::createDocumentTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::FolderPtr parent = session.getFolder( session.getRootId( ) ); + + // Prepare the properties for the new object, object type is cmis:folder +@@ -647,7 +647,7 @@ void AtomTest::createDocumentTest( ) + + void AtomTest::deleteDocumentTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + string id( "130" ); + libcmis::ObjectPtr object = session.getObject( id ); +@@ -669,7 +669,7 @@ void AtomTest::deleteDocumentTest( ) + + void AtomTest::deleteTreeTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + string id( "117" ); + libcmis::ObjectPtr object = session.getObject( id ); +@@ -691,7 +691,7 @@ void AtomTest::deleteTreeTest( ) + + void AtomTest::checkOutTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + // First create a document of type VersionableType + libcmis::DocumentPtr doc = test::createVersionableDocument( &session, "checkOutTest" ); +@@ -709,7 +709,7 @@ void AtomTest::checkOutTest( ) + + void AtomTest::cancelCheckOutTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + // First create a versionable document and check it out + libcmis::DocumentPtr doc = test::createVersionableDocument( &session, "cancelCheckOutTest" ); +@@ -734,7 +734,7 @@ void AtomTest::cancelCheckOutTest( ) + + void AtomTest::checkInTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + // First create a versionable document and check it out + libcmis::DocumentPtr doc = test::createVersionableDocument( &session, "checkInTest" ); +@@ -770,7 +770,7 @@ void AtomTest::checkInTest( ) + + void AtomTest::getAllVersionsTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + // First create a versionable document and check it out + libcmis::DocumentPtr doc = test::createVersionableDocument( &session, "getAllVersionsTest" ); +@@ -795,7 +795,7 @@ void AtomTest::getAllVersionsTest( ) + + void AtomTest::moveTest( ) + { +- AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD, false ); ++ AtomPubSession session( SERVER_ATOM_URL, SERVER_REPOSITORY, SERVER_USERNAME, SERVER_PASSWORD ); + + string id( "135" ); + libcmis::ObjectPtr object = session.getObject( id ); +diff --git src/libcmis/test-ws.cxx src/libcmis/test-ws.cxx +index 1b5dfee..ad564bc 100644 +--- src/libcmis/test-ws.cxx ++++ src/libcmis/test-ws.cxx +@@ -136,19 +136,19 @@ void WSTest::getRepositoriesTest() + + void WSTest::sessionCreationTest( ) + { +- WSSession session( SERVER_WSDL_URL, "", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "", SERVER_USERNAME, SERVER_PASSWORD ); + CPPUNIT_ASSERT_MESSAGE( "No RepositoryService URL", !session.getServiceUrl( "RepositoryService" ).empty( ) ); + } + + void WSTest::getRepositoryTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( "Repository info badly retrieved", string( "100" ), session.getRepository()->getRootId( ) ); + } + + void WSTest::getRepositoryBadTest( ) + { +- WSSession session( SERVER_WSDL_URL, "", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "", SERVER_USERNAME, SERVER_PASSWORD ); + try + { + session.getRepositoryService( ).getRepositoryInfo( "bad" ); +@@ -164,7 +164,7 @@ void WSTest::getRepositoryBadTest( ) + + void WSTest::getTypeDefinitionTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + string id( "ComplexType" ); + libcmis::ObjectTypePtr actual = session.getType( id ); + +@@ -175,7 +175,7 @@ void WSTest::getTypeDefinitionTest( ) + + void WSTest::getTypeDefinitionErrorTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + + string id( "bad_type" ); + try +@@ -192,7 +192,7 @@ void WSTest::getTypeDefinitionErrorTest( ) + + void WSTest::getTypeChildrenTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::ObjectTypePtr actual = session.getType( "cmis:document" ); + + vector< libcmis::ObjectTypePtr > children = actual->getChildren( ); +@@ -202,7 +202,7 @@ void WSTest::getTypeChildrenTest( ) + + void WSTest::getObjectTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + string id( "101" ); + libcmis::ObjectPtr actual = session.getObject( id ); + +@@ -217,7 +217,7 @@ void WSTest::getObjectTest( ) + + void WSTest::getObjectDocumentTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + string id( "114" ); + libcmis::ObjectPtr actual = session.getObject( id ); + +@@ -232,7 +232,7 @@ void WSTest::getObjectDocumentTest( ) + + void WSTest::getObjectParentsTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::ObjectPtr object = session.getObject( "116" ); + libcmis::Document* document = dynamic_cast< libcmis::Document* >( object.get() ); + +@@ -248,7 +248,7 @@ void WSTest::getObjectParentsTest( ) + + void WSTest::getChildrenTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::FolderPtr folder = session.getRootFolder( ); + + vector< libcmis::ObjectPtr > children = folder->getChildren( ); +@@ -270,7 +270,7 @@ void WSTest::getChildrenTest( ) + + void WSTest::getByPathValidTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + try + { + libcmis::ObjectPtr object = session.getObjectByPath( "/My_Folder-0-0/My_Document-1-2" ); +@@ -287,7 +287,7 @@ void WSTest::getByPathValidTest( ) + + void WSTest::getByPathInvalidTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + try + { + libcmis::ObjectPtr object = session.getObjectByPath( "/some/dummy/path" ); +@@ -302,7 +302,7 @@ void WSTest::getByPathInvalidTest( ) + + void WSTest::updatePropertiesTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + + // Values for the test + libcmis::ObjectPtr object = session.getObject( "114" ); +@@ -329,7 +329,7 @@ void WSTest::updatePropertiesTest( ) + + void WSTest::createFolderTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::FolderPtr parent = session.getFolder( session.getRootId( ) ); + + // Prepare the properties for the new object, object type is cmis:folder +@@ -363,7 +363,7 @@ void WSTest::createFolderTest( ) + + void WSTest::createFolderBadTypeTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::FolderPtr parent = session.getFolder( session.getRootId( ) ); + + // Prepare the properties for the new object, object type is cmis:document to trigger the exception +@@ -401,7 +401,7 @@ void WSTest::createFolderBadTypeTest( ) + + void WSTest::createDocumentTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::FolderPtr parent = session.getFolder( session.getRootId( ) ); + + // Prepare the properties for the new object, object type is cmis:folder +@@ -444,7 +444,7 @@ void WSTest::createDocumentTest( ) + + void WSTest::deleteObjectTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + + // Get the object to remove + string id( "130" ); +@@ -467,7 +467,7 @@ void WSTest::deleteObjectTest( ) + + void WSTest::deleteTreeTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + + string id( "117" ); + libcmis::ObjectPtr object = session.getObject( id ); +@@ -489,7 +489,7 @@ void WSTest::deleteTreeTest( ) + + void WSTest::moveTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + + string id( "135" ); + libcmis::ObjectPtr object = session.getObject( id ); +@@ -508,7 +508,7 @@ void WSTest::moveTest( ) + + void WSTest::getContentStreamTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::ObjectPtr object = session.getObject( "116" ); + libcmis::Document* document = dynamic_cast< libcmis::Document* >( object.get() ); + +@@ -532,7 +532,7 @@ void WSTest::getContentStreamTest( ) + + void WSTest::setContentStreamTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + libcmis::ObjectPtr object = session.getObject( "116" ); + libcmis::Document* document = dynamic_cast< libcmis::Document* >( object.get() ); + +@@ -570,7 +570,7 @@ void WSTest::setContentStreamTest( ) + + void WSTest::checkOutTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + + // First create a document of type VersionableType + libcmis::DocumentPtr doc = test::createVersionableDocument( &session, "checkOutTest" ); +@@ -588,7 +588,7 @@ void WSTest::checkOutTest( ) + + void WSTest::cancelCheckOutTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + + // First create a versionable document and check it out + libcmis::DocumentPtr doc = test::createVersionableDocument( &session, "cancelCheckOutTest" ); +@@ -613,7 +613,7 @@ void WSTest::cancelCheckOutTest( ) + + void WSTest::checkInTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + + // First create a versionable document and check it out + libcmis::DocumentPtr doc = test::createVersionableDocument( &session, "checkInTest" ); +@@ -649,7 +649,7 @@ void WSTest::checkInTest( ) + + void WSTest::getAllVersionsTest( ) + { +- WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD, false ); ++ WSSession session( SERVER_WSDL_URL, "A1", SERVER_USERNAME, SERVER_PASSWORD ); + + // First create a versionable document and check it out + libcmis::DocumentPtr doc = test::createVersionableDocument( &session, "getAllVersionsTest" ); +diff --git src/libcmis/ws-relatedmultipart.cxx src/libcmis/ws-relatedmultipart.cxx +index 37f133a..ef91b4d 100644 +--- src/libcmis/ws-relatedmultipart.cxx ++++ src/libcmis/ws-relatedmultipart.cxx +@@ -299,7 +299,7 @@ boost::shared_ptr< istream > getStreamFromNode( xmlNodePtr node, RelatedMultipar + { + id = href.substr( 4 ); + // URL-decode the id +-#if LIBCURL_VERSION_VALUE >= 0x071504 ++#if LIBCURL_VERSION_VALUE >= 0x070F04 + char* escaped = curl_easy_unescape( NULL, id.c_str(), id.length(), NULL ); + #else + char* escaped = curl_unescape( id.c_str(), id.length() ); +diff --git src/libcmis/ws-session.cxx src/libcmis/ws-session.cxx +index b906a5a..f551109 100644 +--- src/libcmis/ws-session.cxx ++++ src/libcmis/ws-session.cxx +@@ -39,8 +39,8 @@ + + using namespace std; + +-WSSession::WSSession( string bindingUrl, string repositoryId, +- string username, string password, bool verbose ) throw ( libcmis::Exception ) : ++WSSession::WSSession( string bindingUrl, string repositoryId, string username, ++ string password, bool verbose ) throw ( libcmis::Exception ) : + BaseSession( bindingUrl, repositoryId, username, password, verbose ), + m_servicesUrls( ), + m_navigationService( NULL ), +@@ -336,7 +336,8 @@ VersioningService& WSSession::getVersioningService( ) + return *m_versioningService; + } + +-list< libcmis::RepositoryPtr > WSSession::getRepositories( string url, string username, string password, bool verbose ) throw ( libcmis::Exception ) ++list< libcmis::RepositoryPtr > WSSession::getRepositories( string url, string username, ++ string password, bool verbose ) throw ( libcmis::Exception ) + { + WSSession session( url, string(), username, password, verbose ); + return session.m_repositories; +diff --git src/libcmis/ws-session.hxx src/libcmis/ws-session.hxx +index 952e914..e8b806a 100644 +--- src/libcmis/ws-session.hxx ++++ src/libcmis/ws-session.hxx +@@ -52,7 +52,7 @@ class WSSession : public BaseSession, public SoapSession + public: + WSSession( std::string bindingUrl, std::string repositoryId, + std::string username, std::string password, +- bool verbose ) throw ( libcmis::Exception ); ++ bool verbose = false ) throw ( libcmis::Exception ); + WSSession( const WSSession& copy ); + ~WSSession( ); + |