public ActionResult GetFolderChildren([FromHeader] string xAuthToken, string customerId, string libraryName, string folderId) { var requestData = new GetFolderChildrenRequestData() { CustomerId = customerId, LibraryName = libraryName, FolderId = folderId }; try { var result = _foldersService.GetFolderChildren(xAuthToken, requestData); if (result == null) { return(NoContent()); } return(Ok(result)); } catch (Exception exc) { return(StatusCode(StatusCodes.Status500InternalServerError)); } }
public GetFolderChildrenResponseData GetFolderChildren(string xAuthToken, GetFolderChildrenRequestData requestData) { _httpHelper.AddHeader("X-Auth-Token", xAuthToken); var returnData = _httpHelper.Get <GetFolderChildrenResponseData>( $"api/v2/customers/{requestData.CustomerId}/libraries/{requestData.LibraryName}/folders/{requestData.FolderId}/children"); //file site returns documents and folders in same container.... must separate out returnData.Documents ??= new List <Document>(); returnData.Folders = new List <Folder>(); var deleteTheseIndeces = new List <int>(); for (int i = 0; i < returnData.Documents.Count; i++) { if (returnData.Documents[i].Wstype == "folder") { deleteTheseIndeces.Add(i); var folder = _mapper.Map <Document, Folder>(returnData.Documents[i]); returnData.Folders.Add(folder); } } deleteTheseIndeces.Reverse(); foreach (int i in deleteTheseIndeces) { returnData.Documents.RemoveAt(i); } returnData.Documents.ForEach(doc => doc.ParentId = requestData.FolderId); returnData.Folders.ForEach(fol => fol.ParentId = requestData.FolderId); return(returnData); }