public async Task <object> Get(RegisterFile request) { var log = LogManager.GetLogger(typeof(RegisterFileService)); log.Debug("GET start"); RegisterFileResponse response = new RegisterFileResponse(); log.Debug("getToken"); string token = await getToken(); log.Debug("gotToken"); string driveId = null; if (!request.IsEmail) { driveId = getDriveIdFromTrim(request); } log.Debug("got Drive ID"); OneDriveItem fileResult = null; long[] recordUris = new long[] { }; RegisterdFileResponse registeredFile = new RegisterdFileResponse(); try { if (request.IsEmail && string.IsNullOrWhiteSpace(request.AttachmentName)) { recordUris = await getEmailLinkUri(request.WebUrl, token); } if (request.IsEmail && (recordUris.Length == 0 || request.GetFile == true)) { var emailUrl = GraphApiHelper.GetEMLUrl(request.WebUrl); string userFolder = Path.Combine("ForUser", this.Database.CurrentUser.Uri.ToString()); string fullUserFolder = Path.Combine(this.ServiceDefaults.UploadBasePath, userFolder); Directory.CreateDirectory(fullUserFolder); string fileName = Path.ChangeExtension(request.WebUrl, "eml"); if (!string.IsNullOrWhiteSpace(request.AttachmentName)) { fileName = request.AttachmentName; } string filePath = Path.Combine(fullUserFolder, fileName); await ODataHelper.GetItem <string>(emailUrl, token, filePath); registeredFile.EmailPath = Path.Combine(userFolder, fileName);; } else if (!string.IsNullOrWhiteSpace(request.WebUrl) && new string[] { "https://", "http://" } .Any(s => request.WebUrl.StartsWith(s, StringComparison.InvariantCultureIgnoreCase))) { if (request.WebUrl.StartsWith("http", StringComparison.InvariantCultureIgnoreCase)) { log.Debug("GetItem"); var fullOneDriveItemsUrl = GraphApiHelper.GetOneDriveShareUrl(request.WebUrl); log.Debug("Got URL"); fileResult = await ODataHelper.GetItem <OneDriveItem>(fullOneDriveItemsUrl, token, null); log.Debug("GotItem"); } } else if (!string.IsNullOrWhiteSpace(driveId) && !request.IsEmail) { fileResult = await ODataHelper.GetItem <OneDriveItem>(GraphApiHelper.GetOneDriveItemIdUrl(driveId), token, null); } } catch { throw; } //DroppedFilesUserOptions fileOptions = new DroppedFilesUserOptions(this.Database); //var options = new TrimOptions(); //if (fileOptions.UseDefaultRecordTypeInOffice == true) //{ // options.DefaultDocumentRecordType = fileOptions.RecordType.Uri; //} //registeredFile.Options = options; var enumItems = new List <MyEnumItem>(); HP.HPTRIM.SDK.Enum relationshipEnum = new HP.HPTRIM.SDK.Enum(AllEnumerations.RecordRelationshipType, this.Database); foreach (var relEnum in relationshipEnum.GetItemArray(new int[] { (int)RecordRelationshipType.InSharepointSite, (int)RecordRelationshipType.IsInSeries, (int)RecordRelationshipType.IsRootPart, (int)RecordRelationshipType.IsTempCopy, (int)RecordRelationshipType.IsVersion, (int)RecordRelationshipType.RedactionOf }, true).OrderBy(ei => ei.Caption)) { enumItems.Add(new MyEnumItem() { Name = relEnum.Name, Caption = relEnum.Caption }); } Dictionary <string, IList <MyEnumItem> > enumDetails = new Dictionary <string, IList <MyEnumItem> >(); enumDetails.Add("RecordRelationshipType", enumItems); registeredFile.Enums = enumDetails; if (fileResult != null) { registeredFile.Id = fileResult?.getDriveAndId(); registeredFile.DriveItem = fileResult; TrimMainObjectSearch search = new TrimMainObjectSearch(this.Database, BaseObjectTypes.Record); search.AddSearchClause(fileResult.getDriveAndId().GetDriveIdSearchClause(this.Database)); var uris = search.GetResultAsUriArray(2); if (uris.Count == 1) { registeredFile.Uri = uris; } } else if (request.IsEmail && recordUris.Length > 0) { registeredFile.Uri = recordUris; } else if (!string.IsNullOrWhiteSpace(request.WebUrl) && !request.WebUrl.StartsWith("http", StringComparison.InvariantCultureIgnoreCase)) { TrimMainObjectSearch search = new TrimMainObjectSearch(this.Database, BaseObjectTypes.Record); search.AddSearchClause(request.WebUrl.GetDriveIdSearchClause(this.Database)); TrimSearchClause checkedInByClause = new TrimSearchClause(this.Database, BaseObjectTypes.Record, SearchClauseIds.RecordCheckedInBy); checkedInByClause.SetCriteriaFromObject(this.Database.CurrentUser); search.AddSearchClause(checkedInByClause); search.And(); var uris = search.GetResultAsUriArray(2); if (uris.Count == 1) { registeredFile.Uri = uris; } } response.Results = new List <RegisterdFileResponse>() { registeredFile }; log.Debug("Finished"); return(response); }