7744ed922e
Change-Id: I5b856ac166b67097e1921ec71eb5b7e1819fec41
1088 lines
45 KiB
Diff
1088 lines
45 KiB
Diff
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( );
|
|
|