Connecting to a CMIS AtomPub endpoint
Connecting to the first repository
Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters[SessionParameter.BindingType] = BindingType.AtomPub; parameters[SessionParameter.AtomPubUrl] = "http://<host>/<serviceDocumentPath>"; parameters[SessionParameter.User] = "<username>"; parameters[SessionParameter.Password] = "<password>"; SessionFactory factory = SessionFactory.NewInstance(); ISession session = factory.GetRepositories(parameters)[0].CreateSession();
Connecting to a specific repository
Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters[SessionParameter.BindingType] = BindingType.AtomPub; parameters[SessionParameter.AtomPubUrl] = "http://<host>/<serviceDocumentPath>"; parameters[SessionParameter.User] = "<username>"; parameters[SessionParameter.Password] = "<password>"; parameters[SessionParameter.RepositoryId] = "<repositoryId>"; SessionFactory factory = SessionFactory.NewInstance(); ISession session = factory.CreateSession(parameters);
Connecting to a CMIS Web Services endpoint
Connecting to the first repository
Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters[SessionParameter.BindingType] = BindingType.WebServices; parameters[SessionParameter.WebServicesRepositoryService] = "http://<host>/<RepositoryServiceWSDL>"; parameters[SessionParameter.WebServicesAclService] = "http://<host>/<AclServiceWSDL>"; parameters[SessionParameter.WebServicesDiscoveryService] = "http://<host>/<DiscoveryServiceWSDL>"; parameters[SessionParameter.WebServicesMultifilingService] = "http://<host>/<MultifilingServiceWSDL>"; parameters[SessionParameter.WebServicesNavigationService] = "http://<host>/<NavigationServiceWSDL>"; parameters[SessionParameter.WebServicesObjectService] = "http://<host>/<ObjectServiceWSDL>"; parameters[SessionParameter.WebServicesPolicyService] = "http://<host>/<PolicyServiceWSDL>"; parameters[SessionParameter.WebServicesRelationshipService] = "http://<host>/<RelationshipServiceWSDL>"; parameters[SessionParameter.WebServicesVersioningService] = "http://<host>/<VersioningServiceWSDL>"; parameters[SessionParameter.User] = "<username>"; parameters[SessionParameter.Password] = "<password>"; SessionFactory factory = SessionFactory.NewInstance(); ISession session = factory.GetRepositories(parameters)[0].CreateSession();
Connecting to a specific repository
Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters[SessionParameter.BindingType] = BindingType.WebServices; parameters[SessionParameter.WebServicesRepositoryService] = "http://<host>/<RepositoryServiceWSDL>"; parameters[SessionParameter.WebServicesAclService] = "http://<host>/<AclServiceWSDL>"; parameters[SessionParameter.WebServicesDiscoveryService] = "http://<host>/<DiscoveryServiceWSDL>"; parameters[SessionParameter.WebServicesMultifilingService] = "http://<host>/<MultifilingServiceWSDL>"; parameters[SessionParameter.WebServicesNavigationService] = "http://<host>/<NavigationServiceWSDL>"; parameters[SessionParameter.WebServicesObjectService] = "http://<host>/<ObjectServiceWSDL>"; parameters[SessionParameter.WebServicesPolicyService] = "http://<host>/<PolicyServiceWSDL>"; parameters[SessionParameter.WebServicesRelationshipService] = "http://<host>/<RelationshipServiceWSDL>"; parameters[SessionParameter.WebServicesVersioningService] = "http://<host>/<VersioningServiceWSDL>"; parameters[SessionParameter.User] = "<username>"; parameters[SessionParameter.Password] = "<password>"; parameters[SessionParameter.RepositoryId] = "<repositoryId>"; SessionFactory factory = SessionFactory.NewInstance(); ISession session = factory.CreateSession(parameters);
Listing folder children
/// get the root folder IFolder rootFolder = session.GetRootFolder(); // list all children foreach (ICmisObject cmisObject in rootFolder.GetChildren()) { Console.WriteLine(cmisObject.Name); } // get a page IItemEnumerable<ICmisObject> children = rootFolder.GetChildren(); IItemEnumerable<ICmisObject> page = children.SkipTo(20).GetPage(10); // children 20 to 30 foreach (ICmisObject cmisObject in page) { Console.WriteLine(cmisObject.Name); }
Fetching a document
IObjectId id = session.CreateObjectId("12345678"); IDocument doc = session.GetObject(id) as IDocument; // properties Console.WriteLine(doc.Name); Console.WriteLine(doc.GetPropertyValue("my:property")); IProperty myProperty = doc["my:property"]; Console.WriteLine("Id: " + myProperty.Id); Console.WriteLine("Value: " + myProperty.Value); Console.WriteLine("Type: " + myProperty.PropertyType); // content IContentStream contentStream = doc.GetContentStream(); Console.WriteLine("Filename: " + contentStream.FileName); Console.WriteLine("MIME type: " + contentStream.MimeType); Console.WriteLine("Has stream: " + (contentStream.Stream != null));
Creating a document
IFolder folder = ... IDictionary<string, object> properties = new Dictionary<string, object>(); properties[PropertyIds.Name] = "Hello World Document"; properties[PropertyIds.ObjectTypeId] = "cmis:document"; byte[] content = UTF8Encoding.UTF8.GetBytes("Hello World!"); ContentStream contentStream = new ContentStream(); contentStream.FileName = "hello-world.txt"; contentStream.MimeType = "text/plain"; contentStream.Length = content.Length; contentStream.Stream = new MemoryStream(content); IDocument doc = folder.CreateDocument(properties, contentStream, null);
Updating properties
ICmisObject cmisObject = ... IDictionary<string, object> properties = new Dictionary<string, object>(); properties["my:string"] = "a string"; properties["my:int"] = 42; properties["my:date"] = DateTime.Now; IObjectId newId = cmisObject.UpdateProperties(properties); if (newId.Id == cmisObject.Id) { // the repository updated this object - refresh the object cmisObject.Refresh(); } else { // the repository created a new version - fetch the new version cmisObject = session.GetObject(newId); }
Deleting an object
IObjectId newId = session.CreateObjectId("12345678"): ICmisObject cmisObject = session.GetObject(newId); cmisObject.Delete(true);
Performing a query
IItemEnumerable<IQueryResult> qr = session.Query("SELECT * FROM cmis:document", false); foreach (IQueryResult hit in qr) { Console.WriteLine(hit["cmis:name"].FirstValue + " (" + hit["cmis:objectId"].FirstValue + ")"); }