blob: f89b134cc7a4d5d4574d0d0a04f4f2400f1e8bb2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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";
|