summaryrefslogtreecommitdiff
path: root/external/libcmis/libcmis-sharepoint-repository-root.patch
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";