private List <AHAItem> InvokeSearch(SearchStreamOptionsRecord options, PaginationRecord pg) { try { log.Debug("Search options: " + options.ToJson()); log.Debug("Search page: " + pg.ToJson()); this.options = options; ObjectApi objectApi = new ObjectApi(session.GetApiClient()); log.Debug("Calling SearchObjects API"); SearchObjectsResult result = objectApi.SearchObjects(options.ToJson(), pg.ToJson()); if (result.Hdr.Rc == 0) { pager = result.Pager; List <AHAItem> items = new List <AHAItem>(); List <Record> records = result.Records; log.Debug(records.Count + " records returned"); foreach (var record in records) { String jsonString = record.Json; log.Debug("Record: " + jsonString); log.Debug("Creating AHA item"); AHAItem item = itemFromJson(jsonString); log.Debug("AHAItem: " + JsonConvert.SerializeObject(item)); if (item.Type.Equals(FILE_TYPE)) { log.Debug("Getting additional info for file"); FileApi fileApi = new FileApi(session.GetApiClient()); ViewFileResult viewFileResult = fileApi.ViewFile(item.Key); if (viewFileResult.Hdr.Rc == 0) { FileRecord fileRecord = viewFileResult.File; item.LastUpdater = fileRecord.LastUpdater.DisplayName; item.Version = fileRecord.UiVersion; log.Debug("Last updater: " + item.LastUpdater); log.Debug("Version: " + item.Version); } else { log.Error("Vmoso error getting additional info for file. Rc=" + viewFileResult.Hdr.Rc); } } items.Add(item); } return(items); } else { throw new Exception("Vmoso error searching objects. Rc=" + result.Hdr.Rc); } } catch (Exception ex) { throw new Exception("Error searching objects from Vmoso", ex); } }
static public Model.FileRecord uploadNewVersion(VmosoSession session, String fileKey, String filePath) { try { FileApi fileApi = new FileApi(session.GetApiClient()); ViewFileResult viewFileResult = fileApi.ViewFile(fileKey); if (viewFileResult.Hdr.Rc == 0) { FileRecord fileRecord = viewFileResult.File; String url = session.Host + "/up/file"; String userAgent = session.GetApiClient().Configuration.UserAgent; WebClient client = new WebClient(); client.Headers.Add("X-CV-Authorization", session.GetAuthorizationHeader()); client.Headers.Add("User-Agent", userAgent); byte[] response = client.UploadFile(url, filePath); var jsonString = System.Text.Encoding.Default.GetString(response); dynamic dynObj = JsonConvert.DeserializeObject(jsonString); var file = dynObj[0]; String fileName = file.name; String fileDownloadId = file.fileDownloadId; String mimeType = file.mimeType; int fileSize = file.filesize; fileRecord.FilestoreFilestore = fileDownloadId; fileRecord.Filesize = fileSize; UpdateFileInput updateFileInput = new UpdateFileInput(fileRecord, null); UpdateFileResult updateFileResult = fileApi.UpdateFile(fileKey, updateFileInput); if (updateFileResult.Hdr.Rc == 0) { return(updateFileResult.Updated); } else { throw new Exception("Error updating file. Rc=" + viewFileResult.Hdr.Rc); } } else { throw new Exception("Error getting file. Rc=" + viewFileResult.Hdr.Rc); } } catch (Exception ex) { throw new Exception("Error uploading new version", ex); } }
public ShareFileItem createFile(FileInfo fileInfo, String title, String description, List <String> spaceKeys, Bitmap icon) { try { FileRecord fileRecord = VmosoFileUtils.uploadFile(session, fileInfo.FullName, title, description, true); if (spaceKeys != null) { SpaceApi spaceApi = new SpaceApi(session.GetApiClient()); ShareObjectInput shareInput = new ShareObjectInput(null, spaceKeys, null); ShareObjectResult shareResult = spaceApi.ShareObject(fileRecord.Key, shareInput); if (shareResult.Hdr.Rc == 0) { FileApi fileApi = new FileApi(session.GetApiClient()); ViewFileResult viewFileResult = fileApi.ViewFile(fileRecord.Key); if (viewFileResult.Hdr.Rc == 0) { fileRecord = viewFileResult.File; } else { throw new Exception("Vmoso error getting created link. Rc=" + viewFileResult.Hdr.Rc); } } else { throw new Exception("Vmoso error sharing link. Rc=" + shareResult.Hdr.Rc); } } ShareFileItem item = new ShareFileItem(fileRecord.Name, fileRecord.Description); item.Key = fileRecord.Key; item.FileInfo = fileInfo; item.SetIcon(icon); item.Record = fileRecord; List <ShareSpace> itemSpaces = new List <ShareSpace>(); foreach (DisplayRecord spaceDisplayRecord in fileRecord.Destinations) { ShareSpace space = new ShareSpace(spaceDisplayRecord.Key, spaceDisplayRecord.DisplayName, null); itemSpaces.Add(space); } item.Spaces = itemSpaces; return(item); } catch (Exception ex) { throw new Exception("Error creating file", ex); } }
public ShareFileItem updateFile(String key, FileInfo fileInfo, String title, String description, List <String> spaceKeys, Bitmap icon) { try { FileApi fileApi = new FileApi(session.GetApiClient()); ViewFileResult viewFileResult = fileApi.ViewFile(key); if (viewFileResult.Hdr.Rc == 0) { FileRecord existingFile = viewFileResult.File; existingFile.Name = title; existingFile.Description = description; UpdateFileInput updateFileInput = new UpdateFileInput(existingFile, null); UpdateFileResult updateFileResult = fileApi.UpdateFile(key, updateFileInput); if (updateFileResult.Hdr.Rc == 0) { FileRecord updatedFile = updateFileResult.Updated; SpaceApi spaceApi = new SpaceApi(session.GetApiClient()); // Remove spaces foreach (DisplayRecord destination in updatedFile.Destinations) { if (!spaceKeys.Contains(destination.Key)) { List <String> itemKeysToRemove = new List <String>() { updatedFile.Key }; RemoveObjectsInput removeObjectsInput = new RemoveObjectsInput(destination.Key, itemKeysToRemove); RemoveObjectsResult removeObjectsResult = spaceApi.RemoveObjects(destination.Key, removeObjectsInput); if (removeObjectsResult.Hdr.Rc != 0) { throw new Exception("Vmoso error removing file from space. Rc=" + removeObjectsResult.Hdr.Rc); } } else { spaceKeys.Remove(destination.Key); } } if (spaceKeys.Count > 0) { ShareObjectInput shareInput = new ShareObjectInput(null, spaceKeys, null); ShareObjectResult shareResult = spaceApi.ShareObject(updatedFile.Key, shareInput); if (shareResult.Hdr.Rc != 0) { throw new Exception("Vmoso error sharing file. Rc=" + shareResult.Hdr.Rc); } } viewFileResult = fileApi.ViewFile(updatedFile.Key); if (viewFileResult.Hdr.Rc == 0) { updatedFile = viewFileResult.File; ShareFileItem item = new ShareFileItem(updatedFile.Name, updatedFile.Description); item.Key = updatedFile.Key; item.FileInfo = fileInfo; item.Record = updatedFile; item.SetIcon(icon); List <ShareSpace> itemSpaces = new List <ShareSpace>(); foreach (DisplayRecord spaceDisplayRecord in updatedFile.Destinations) { ShareSpace space = new ShareSpace(spaceDisplayRecord.Key, spaceDisplayRecord.DisplayName, null); itemSpaces.Add(space); } item.Spaces = itemSpaces; return(item); } else { throw new Exception("Vmoso error getting updated file. Rc=" + viewFileResult.Hdr.Rc); } } else { throw new Exception("Vmoso error updating file. Rc=" + updateFileResult.Hdr.Rc); } } else { throw new Exception("Vmoso error getting file to update. Rc=" + viewFileResult.Hdr.Rc); } } catch (Exception ex) { throw new Exception("Vmoso updating file", ex); } }
public ShareFileItem findFile(ShareFileItem shareFileItem) { try { AHAItem foundItem = null; AHAClient ahaClient = new AHAClient(session); if (shareFileItem.FileInfo != null) { List <AHAItem> items = ahaClient.Search("&" + shareFileItem.FileInfo.Name); if (items.Count == 1) { foundItem = items[0]; } } if (foundItem == null) { if (shareFileItem.FileInfo != null) { if (!shareFileItem.FileInfo.Name.Equals(shareFileItem.Title)) { List <AHAItem> items = ahaClient.Search("&" + shareFileItem.Title); if (items.Count == 1) { foundItem = items[0]; } } } else { List <AHAItem> items = ahaClient.Search("&" + shareFileItem.Title); if (items.Count == 1) { foundItem = items[0]; } } } if (foundItem != null) { FileApi fileApi = new FileApi(session.GetApiClient()); ViewFileResult viewFileResult = fileApi.ViewFile(foundItem.Key); if (viewFileResult.Hdr.Rc == 0) { FileRecord fileRecord = viewFileResult.File; ShareFileItem newShareFileItem = new ShareFileItem(fileRecord.Name, fileRecord.Description); newShareFileItem.Key = fileRecord.Key; newShareFileItem.FileInfo = shareFileItem.FileInfo; newShareFileItem.SetIcon(shareFileItem.GetIcon()); newShareFileItem.Record = fileRecord; List <ShareSpace> itemSpaces = new List <ShareSpace>(); foreach (DisplayRecord spaceDisplayRecord in fileRecord.Destinations) { ShareSpace space = new ShareSpace(spaceDisplayRecord.Key, spaceDisplayRecord.DisplayName, null); itemSpaces.Add(space); } newShareFileItem.Spaces = itemSpaces; return(newShareFileItem); } else { return(null); } } else { return(null); } } catch (Exception ex) { throw new Exception("Error creating file", ex); } }