1b482aec4e
for a given site. This patch uses the fact that getFolderByServerRelativeUrl API returns site's root folder if used with empty path (''). Hopefully this isn't otherwise context-dependent, so that it doesn't return other folders in some unknown circumstances. More correct would be instead to use the site's root path directly, like '/sites/mysite'. But I don't know a reliable way to filter the API part from the base URI. To make use of the corrected SharePoint repository root id, the patch also redirects all cases where "/" object is queried, to session's getRootFolder(). libcmis part of the patch will hopefully soon be merged upstream. Change-Id: I0f3b9930748de3fe4763eb27721739f097b9892d Reviewed-on: https://gerrit.libreoffice.org/27987 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: David Tardon <dtardon@redhat.com>
24 lines
1.3 KiB
Diff
24 lines
1.3 KiB
Diff
diff --git a/src/libcmis/sharepoint-repository.cxx b/src/libcmis/sharepoint-repository.cxx
|
|
index 780624d..f992689 100644
|
|
--- a/src/libcmis/sharepoint-repository.cxx
|
|
+++ b/src/libcmis/sharepoint-repository.cxx
|
|
@@ -35,7 +35,18 @@ SharePointRepository::SharePointRepository( std::string baseUrl ) :
|
|
m_description = "SharePoint repository";
|
|
m_productName = "SharePoint";
|
|
m_productVersion = "2010/2013";
|
|
- m_rootId = baseUrl + "/getFolderByServerRelativeUrl('/')";
|
|
+ // getFolderByServerRelativeUrl() API expects path to be
|
|
+ // *server-relative*, i.e. they must include site path.
|
|
+ // Given the baseUrl like "https://sp2013/sites/mysite/_api/Web"
|
|
+ // for a site "mysite" on sharepoint server "sp2013",
|
|
+ // the site root is '/sites/mysite/', not '/'.
|
|
+ // Trying to get folder '/' results in "Value does not fall
|
|
+ // within expected range" error.
|
|
+ // Preferrable here is to extract the root path from baseUrl,
|
|
+ // stripping server and api parts. But it can be unreliable
|
|
+ // if api part (_api/Web) is different for some server.
|
|
+ // On the other side, just querying empty path '' gives the root folder.
|
|
+ m_rootId = baseUrl + "/getFolderByServerRelativeUrl('')";
|
|
|
|
m_capabilities[ ACL ] = "discover";
|
|
m_capabilities[ AllVersionsSearchable ] = "true";
|