public static SharepointObject Read(SharepointSession session, ObjectId id) { if (session == null) { throw new ArgumentNullException("session"); } if (id == null) { throw new ArgumentNullException("id"); } SharepointSiteId sharepointSiteId = id as SharepointSiteId; if (sharepointSiteId == null) { throw new ArgumentException("id"); } if (sharepointSiteId is SharepointDocumentLibraryItemId) { return(SharepointDocumentLibraryItem.Read(session, sharepointSiteId)); } if (sharepointSiteId is SharepointListId) { return(SharepointList.Read(session, sharepointSiteId)); } throw new ObjectNotFoundException(sharepointSiteId, Strings.ExObjectNotFound(sharepointSiteId.ToString())); }
public new static SharepointDocumentLibraryItem Read(SharepointSession session, ObjectId objectId) { if (session == null) { throw new ArgumentNullException("session"); } if (objectId == null) { throw new ArgumentNullException("objectId"); } SharepointDocumentLibraryItemId itemId = objectId as SharepointDocumentLibraryItemId; if (itemId == null) { throw new ArgumentException("objectId"); } if (itemId.UriFlags != UriFlags.SharepointDocument && itemId.UriFlags != UriFlags.SharepointFolder) { throw new ArgumentException("objectId"); } if (session.Uri != itemId.SiteUri) { throw new ObjectNotFoundException(itemId, Strings.ExObjectMovedOrDeleted(itemId.ToString())); } if (itemId.Cache != null && itemId.Cache.Value.Key == session.Identity.Name) { if (itemId.UriFlags == UriFlags.SharepointFolder) { return(new SharepointDocumentLibraryFolder(itemId, session, itemId.Cache.Value.Value)); } if (itemId.UriFlags == UriFlags.SharepointDocument) { return(new SharepointDocument(itemId, session, itemId.Cache.Value.Value)); } } return(Utils.DoSharepointTask <SharepointDocumentLibraryItem>(session.Identity, itemId, itemId, false, Utils.MethodType.Read, delegate { XmlNode nodeForItem = SharepointDocumentLibraryItem.GetNodeForItem(session, itemId); if (nodeForItem != null) { SharepointList sharepointList = SharepointList.Read(session, new SharepointListId(itemId.ListName, itemId.SiteUri, null, UriFlags.SharepointDocumentLibrary)); itemId.Cache = new KeyValuePair <string, XmlNode>?(new KeyValuePair <string, XmlNode>(session.Identity.Name, nodeForItem)); itemId.CultureInfo = sharepointList.GetRegionalSettings(); if (itemId.UriFlags == UriFlags.SharepointFolder) { return new SharepointDocumentLibraryFolder(itemId, session, itemId.Cache.Value.Value); } if (itemId.UriFlags == UriFlags.SharepointDocument) { return new SharepointDocument(itemId, session, itemId.Cache.Value.Value); } } throw new ObjectNotFoundException(itemId, Strings.ExObjectNotFound(itemId.ToString())); })); }
public new static SharepointDocumentLibrary Read(SharepointSession session, ObjectId listId) { if (listId == null) { throw new ArgumentNullException("listId"); } SharepointListId sharepointListId = listId as SharepointListId; if (sharepointListId == null) { throw new ArgumentException("listId"); } if (sharepointListId.UriFlags != UriFlags.SharepointDocumentLibrary) { throw new ArgumentNullException("listId"); } return((SharepointDocumentLibrary)SharepointList.Read(session, sharepointListId)); }
internal CultureInfo GetRegionalSettings() { if (this.HasRegionalSettings) { return(this.CultureInfo); } SharepointListId sharepointListId = (SharepointListId)base.Id; SharepointListId listId = new SharepointListId(sharepointListId.ListName, sharepointListId.SiteUri, null, sharepointListId.UriFlags); SharepointList sharepointList = SharepointList.Read(this.Session, listId); if (!sharepointList.HasRegionalSettings) { throw new CorruptDataException(this, Strings.ExCorruptRegionalSetting); } this.CultureInfo = sharepointList.GetRegionalSettings(); sharepointListId.CultureInfo = this.CultureInfo; return(this.CultureInfo); }
private static IList <string> GetItemHierarchy(Uri uri, SharepointList sharepointList) { List <string> list = null; if (uri.Query.Contains("?RootFolder=") || uri.Query.Contains("&RootFolder=")) { foreach (string text in uri.Query.Split(new char[] { '?', '&' }, StringSplitOptions.RemoveEmptyEntries)) { if (text.StartsWith("RootFolder=")) { string text2 = Uri.UnescapeDataString(text.Substring("RootFolder=".Length)); string text3 = text2.ToLower(); Uri uri2; if (text3.StartsWith("http:") || text3.StartsWith("https:")) { uri2 = new Uri(text2); } else { uri2 = new Uri(new Uri(sharepointList.Session.Uri.GetLeftPart(UriPartial.Authority)), text2); } list = new List <string>(); for (int j = sharepointList.Session.Uri.Segments.Length; j < uri2.Segments.Length; j++) { list.Add(Uri.UnescapeDataString(uri2.Segments[j])); } break; } } } else { list = new List <string>(); for (int k = sharepointList.Session.Uri.Segments.Length; k < uri.Segments.Length; k++) { list.Add(Uri.UnescapeDataString(uri.Segments[k])); } } return(list); }
public new static SharepointList Read(SharepointSession session, ObjectId listId) { if (session == null) { throw new ArgumentNullException("session"); } if (listId == null) { throw new ArgumentNullException("listId"); } SharepointListId spListId = listId as SharepointListId; if (spListId == null) { throw new ArgumentException("listId"); } if (spListId.SiteUri != session.Uri) { throw new ObjectNotFoundException(listId, Strings.ExObjectNotFound(listId.ToString())); } if ((spListId.UriFlags & UriFlags.SharepointList) != UriFlags.SharepointList && (spListId.UriFlags & UriFlags.SharepointDocumentLibrary) != UriFlags.SharepointDocumentLibrary) { throw new ArgumentException("listId"); } if (spListId.Cache != null && spListId.Cache.Value.Key == session.Identity.Name) { return(SharepointList.ReadHelper(spListId.Cache.Value.Value, session, spListId)); } return(Utils.DoSharepointTask <SharepointList>(session.Identity, spListId, spListId, false, Utils.MethodType.Read, delegate { using (Lists lists = new Lists(session.Uri.ToString())) { new List <Result <SharepointList> >(); XmlNode xmlNode = lists.GetListAndView(spListId.ListName, null).SelectSingleNode("/sp:List", SharepointHelpers.SharepointNamespaceManager); if (xmlNode != null) { return SharepointList.ReadHelper(xmlNode, session, spListId); } } throw new ObjectNotFoundException(spListId, Strings.ExObjectNotFound(spListId.ToString())); })); }
internal static ITableView InternalGetView(QueryFilter query, SortBy[] sortBy, DocumentLibraryQueryOptions queryOptions, PropertyDefinition[] propsToReturn, SharepointSession session, SharepointListId listId) { EnumValidator.ThrowIfInvalid <DocumentLibraryQueryOptions>(queryOptions, "queryOptions"); if (propsToReturn == null) { throw new ArgumentNullException("propsToReturn"); } if (propsToReturn.Length == 0) { throw new ArgumentException("propsToReturn"); } return(Utils.DoSharepointTask <ArrayTableView>(session.Identity, new SharepointListId(listId.ListName, listId.SiteUri, listId.CultureInfo, UriFlags.SharepointList), listId, true, Utils.MethodType.GetView, delegate { XmlNode xmlNode = null; using (Lists lists = new Lists(listId.SiteUri.ToString())) { lists.Credentials = CredentialCache.DefaultCredentials; XmlNode query2 = null; QueryFilter queryFilter = null; if (queryOptions == DocumentLibraryQueryOptions.Files) { queryFilter = new ComparisonFilter(ComparisonOperator.Equal, SharepointDocumentLibraryItemSchema.FileSystemObjectType, 0); } else if (queryOptions == DocumentLibraryQueryOptions.Folders) { queryFilter = new ComparisonFilter(ComparisonOperator.Equal, SharepointDocumentLibraryItemSchema.FileSystemObjectType, 1); } if (query != null && queryFilter != null) { query = new AndFilter(new QueryFilter[] { queryFilter, query }); } else if (queryFilter != null) { query = queryFilter; } if (query != null) { query2 = SharepointHelpers.GenerateQueryCAML(query); } XmlNode viewFields = SharepointHelpers.GenerateViewFieldCAML(SharepointDocumentSchema.Instance, SharepointDocumentSchema.Instance.AllProperties.Keys); if (listId.CultureInfo == null) { SharepointList sharepointList = SharepointList.Read(session, listId); listId.CultureInfo = sharepointList.GetRegionalSettings(); } SharepointDocumentLibraryItemId sharepointDocumentLibraryItemId = listId as SharepointDocumentLibraryItemId; XmlNode queryOptions2; if (sharepointDocumentLibraryItemId != null) { queryOptions2 = SharepointHelpers.GenerateQueryOptionsXml(sharepointDocumentLibraryItemId.ItemHierarchy); } else { queryOptions2 = SharepointHelpers.GenerateQueryOptionsXml(null); } xmlNode = lists.GetListItems(listId.ListName, null, query2, viewFields, Utils.GetViewMaxRows.ToString(), queryOptions2); } List <object[]> list = new List <object[]>(); foreach (object obj in xmlNode.SelectNodes("/rs:data/z:row", SharepointHelpers.SharepointNamespaceManager)) { XmlNode xmlNode2 = (XmlNode)obj; object[] valuesFromCAMLView = SharepointHelpers.GetValuesFromCAMLView(SharepointDocumentSchema.Instance, xmlNode2, listId.CultureInfo, new PropertyDefinition[] { SharepointDocumentLibraryItemSchema.FileSystemObjectType, SharepointDocumentLibraryItemSchema.ID, SharepointDocumentLibraryItemSchema.EncodedAbsoluteUri }); int num = 0; int num2 = num + 1; int num3 = num2 + 1; bool flag = valuesFromCAMLView[num] is bool && (bool)valuesFromCAMLView[num]; UriFlags uriFlags = flag ? UriFlags.SharepointFolder : UriFlags.SharepointDocument; Uri uri = (Uri)valuesFromCAMLView[num3]; List <string> list2 = new List <string>(); for (int i = listId.SiteUri.Segments.Length; i < uri.Segments.Length; i++) { list2.Add(Uri.UnescapeDataString(uri.Segments[i])); } SharepointDocumentLibraryItemId sharepointDocumentLibraryItemId2 = new SharepointDocumentLibraryItemId((string)valuesFromCAMLView[num2], listId.ListName, listId.SiteUri, listId.CultureInfo, uriFlags, list2); sharepointDocumentLibraryItemId2.Cache = new KeyValuePair <string, XmlNode>?(new KeyValuePair <string, XmlNode>(session.Identity.Name, xmlNode2)); object[] valuesFromCAMLView2 = SharepointHelpers.GetValuesFromCAMLView(SharepointDocumentSchema.Instance, xmlNode2, listId.CultureInfo, propsToReturn); object obj2 = null; for (int j = 0; j < propsToReturn.Length; j++) { if (((DocumentLibraryPropertyDefinition)propsToReturn[j]).PropertyId == DocumentLibraryPropertyId.Id) { valuesFromCAMLView2[j] = sharepointDocumentLibraryItemId2; } else if (propsToReturn[j] == SharepointDocumentSchema.VersionControl) { if (obj2 == null) { string text = SharepointHelpers.GetValuesFromCAMLView(SharepointDocumentSchema.Instance, xmlNode2, listId.CultureInfo, new PropertyDefinition[] { SharepointDocumentSchema.CheckedOutUserId })[0] as string; object obj3 = SharepointHelpers.GetValuesFromCAMLView(SharepointDocumentSchema.Instance, xmlNode2, listId.CultureInfo, new PropertyDefinition[] { SharepointDocumentSchema.VersionId })[0]; if (obj3 is int && !flag) { obj2 = new VersionControl(!string.IsNullOrEmpty(text), text, (int)obj3); } else { obj2 = new PropertyError(propsToReturn[j], PropertyErrorCode.NotFound); } } valuesFromCAMLView2[j] = obj2; } } list.Add(valuesFromCAMLView2); } return new ArrayTableView(null, sortBy, propsToReturn, list); })); }
private static ClassifyResult ClassifySharepointLink(Uri uri, WindowsIdentity authenticatedUser) { WindowsImpersonationContext windowsImpersonationContext = null; ClassifyResult classifyResult = null; ClassifyResult result; try { windowsImpersonationContext = Utils.ImpersonateUser(authenticatedUser); Uri siteAddress = LinkClassifier.GetSiteAddress(uri, out classifyResult); if (classifyResult != null) { result = classifyResult; } else { SharepointSession session = SharepointSession.Open(new SharepointSiteId(siteAddress, UriFlags.Sharepoint), new WindowsPrincipal(authenticatedUser)); SharepointList listSpecifics = LinkClassifier.GetListSpecifics(uri, session, out classifyResult); if (classifyResult != null) { result = classifyResult; } else { IList <string> itemHierarchy = LinkClassifier.GetItemHierarchy(uri, listSpecifics); if (itemHierarchy.Count < 2) { Uri uri2 = listSpecifics.Uri; bool flag = false; if (itemHierarchy.Count == 0 || string.Compare(itemHierarchy[0].TrimEnd(new char[] { '/', '\\' }), Uri.UnescapeDataString(uri2.Segments[siteAddress.Segments.Length].TrimEnd(new char[] { '/', '\\' })), StringComparison.OrdinalIgnoreCase) != 0) { flag = true; } if (!flag) { result = new ClassifyResult(listSpecifics.Id, uri, UriFlags.SharepointDocumentLibrary); } else { result = new ClassifyResult(uri, ClassificationError.ObjectNotFound); } } else { string propertyValue = itemHierarchy[itemHierarchy.Count - 1]; itemHierarchy.RemoveAt(itemHierarchy.Count - 1); SharepointListId sharepointListId = (SharepointListId)listSpecifics.Id; SharepointDocumentLibraryItemId listId = new SharepointDocumentLibraryItemId("-1", sharepointListId.ListName, sharepointListId.SiteUri, listSpecifics.GetRegionalSettings(), UriFlags.SharepointFolder, itemHierarchy); ComparisonFilter query = new ComparisonFilter(ComparisonOperator.Equal, SharepointDocumentLibraryItemSchema.Name, propertyValue); PropertyDefinition[] propsToReturn = new PropertyDefinition[] { SharepointDocumentLibraryItemSchema.ID, SharepointDocumentLibraryItemSchema.FileSystemObjectType }; object[][] rows = SharepointDocumentLibraryFolder.InternalGetView(query, null, DocumentLibraryQueryOptions.FoldersAndFiles, propsToReturn, session, listId).GetRows(2); if (rows.Length == 1) { result = new ClassifyResult((DocumentLibraryObjectId)rows[0][0], uri, ((DocumentLibraryObjectId)rows[0][0]).UriFlags); } else { result = new ClassifyResult(uri, ClassificationError.ObjectNotFound); } } } } } catch (SoapException) { result = new ClassifyResult(uri, ClassificationError.ConnectionFailed); } catch (ObjectNotFoundException) { result = new ClassifyResult(uri, ClassificationError.ObjectNotFound); } catch (AccessDeniedException) { result = new ClassifyResult(uri, ClassificationError.AccessDenied); } catch (WebException ex) { result = LinkClassifier.GetClassificationResultFromWebException(uri, ex); } catch { Utils.UndoContext(ref windowsImpersonationContext); throw; } finally { Utils.UndoContext(ref windowsImpersonationContext); } return(result); }
private static SharepointList GetListSpecifics(Uri uri, SharepointSession session, out ClassifyResult result) { SharepointList sharepointList = null; int num = 0; result = null; foreach (object[] array in session.GetView(ListBaseType.Any, new PropertyDefinition[] { DocumentLibrarySchema.Id }).GetRows(int.MaxValue)) { SharepointList sharepointList2 = SharepointList.Read(session, (ObjectId)array[0]); Uri uri2 = sharepointList2.Uri; int num2 = 0; int num3 = session.Uri.Segments.Length; while (num3 < uri2.Segments.Length && num3 < uri.Segments.Length && string.Compare(uri.Segments[num3].TrimEnd(new char[] { '/', '\\' }), uri2.Segments[num3].TrimEnd(new char[] { '/', '\\' }), StringComparison.CurrentCultureIgnoreCase) == 0) { num3++; num2++; } if (num2 > num) { sharepointList = sharepointList2; num = num2; } else if (num2 == num) { sharepointList = null; } } if (sharepointList == null) { result = new ClassifyResult(uri, ClassificationError.ObjectNotFound); } else if (sharepointList.ItemType == SharepointItemType.List) { result = new ClassifyResult(sharepointList.Id, uri, UriFlags.SharepointList); } else if (!uri.Query.Contains("&RootFolder=") && !uri.Query.Contains("?RootFolder=")) { Uri uri3 = sharepointList.Uri; if (string.Compare(uri.AbsolutePath, uri3.AbsolutePath, StringComparison.OrdinalIgnoreCase) == 0) { result = new ClassifyResult(sharepointList.Id, uri, UriFlags.SharepointDocumentLibrary); } else if (uri.Segments.Length == uri3.Segments.Length) { for (int j = 0; j < uri.Segments.Length - 1; j++) { if (string.Compare(uri3.Segments[j], uri.Segments[j], StringComparison.OrdinalIgnoreCase) != 0) { return(sharepointList); } } if (LinkClassifier.CheckIfLinkExists(uri, null)) { result = new ClassifyResult(sharepointList.Id, uri, UriFlags.SharepointDocumentLibrary); } else { result = new ClassifyResult(uri, ClassificationError.ObjectNotFound); } } } return(sharepointList); }