/// <summary> /// Serves Atom a feed. /// </summary> /// <returns></returns> public ActionResult Atom() { List <Media> mediae = _mediaRepository.Retrieve25RecentPhotosByUserId(Owner.Id); AtomService service = new AtomService(); string url = GetUrl(); string fullPath = string.Format("http://{0}/", url); string feed = service.Render(mediae, Owner, fullPath); return(Content(feed, "text/xml")); }
/// <summary> /// 处理来自Mediator的请求 /// </summary> private void HandleRequest() { Tools.ParseRequestStr(RequestStr, ref requestCode, ref requestData); AtomService.ReturnFromServiceSignal.AddListener(HandleResponse); if (requestCode == AtomEvent.GetAllAtoms) { AtomService.GetAllAtoms(); } else if (requestCode == AtomEvent.GetAtom) { string atomName = requestData; AtomService.GetAtomByAtomName(atomName); } }
/// <summary> /// Gets the AtomPub Service Document that contains the set of repositories that are available. Can be filtered to return only informations for one repository. See http://docs.oasis-open.org/cmis/CMIS/v1.1/os/CMIS-v1.1-os.html#x1-4280007 /// </summary> /// <returns>The Atom service document.</returns> /// <param name="repositoryId">Repository identifier. When not set, informations about all repositories are returned. Defaults to null.</param> public async Task <IAtomService> GetServiceDocument(string repositoryId = null) { var repositories = new List <string>(); if (string.IsNullOrWhiteSpace(repositoryId)) { repositories.Add("FI"); repositories.Add("MM"); } else { // check parameter if (repositoryId != "FI" && repositoryId != "MM") { throw new CmisObjectNotFoundException("Repository not found"); } repositories.Add(repositoryId); } // create service IAtomService result = new AtomService { Workspaces = new List <IAtomWorkspace>() }; foreach (var repository in repositories) { var repositoryInfo = await GetRepositoryInfoAsync(repository); result.Workspaces.Add(new AtomWorkspace { Title = repositoryInfo.RepositoryId, Collections = new List <IAtomCollection> { new AtomCollection { Uri = $"{ServiceRoot}/api/{repositoryInfo.RepositoryId}/cmis/{Constants.CmisVersion}/atom/children?id=root", CollectionType = CmisCollectionType.Root, Title = "Root Collection", Accept = new List <CmisMediaType> { CmisMediaType.Entry, CmisMediaType.CmisAtom } }, new AtomCollection { Uri = $"{ServiceRoot}/api/{repositoryInfo.RepositoryId}/cmis/{Constants.CmisVersion}/atom/types", CollectionType = CmisCollectionType.Types, Title = "Types Collection", Accept = new List <CmisMediaType> { } }, new AtomCollection { Uri = $"{ServiceRoot}/api/{repositoryInfo.RepositoryId}/cmis/{Constants.CmisVersion}/atom/query", CollectionType = CmisCollectionType.Query, Title = "Query Collection", Accept = new List <CmisMediaType> { CmisMediaType.Query } }, new AtomCollection { Uri = $"{ServiceRoot}/api/{repositoryInfo.RepositoryId}/cmis/{Constants.CmisVersion}/atom/checkedout", CollectionType = CmisCollectionType.CheckedOut, Title = "Checked Out Collection", Accept = new List <CmisMediaType> { CmisMediaType.CmisAtom } }, new AtomCollection { Uri = $"{ServiceRoot}/api/{repositoryInfo.RepositoryId}/cmis/{Constants.CmisVersion}/atom/unfiled", CollectionType = CmisCollectionType.Unfiled, Title = "Unfiled Collection", Accept = new List <CmisMediaType> { CmisMediaType.CmisAtom } }, new AtomCollection { Uri = $"{ServiceRoot}/api/{repositoryInfo.RepositoryId}/cmis/{Constants.CmisVersion}/atom/update", CollectionType = CmisCollectionType.Update, Title = "Bulk Update Collection", Accept = new List <CmisMediaType> { CmisMediaType.CmisAtom } } }, RepositoryInfo = repositoryInfo, Links = new List <IAtomLink> { new AtomLink { Relation = "http://docs.oasis-open.org/ns/cmis/link/200908/typedescendants", Reference = $"{ServiceRoot}/api/{repositoryInfo.RepositoryId}/cmis/{Constants.CmisVersion}/atom/typedesc", MediaType = CmisMediaType.Feed }, new AtomLink { Relation = "http://docs.oasis-open.org/ns/cmis/link/200908/foldertree", Reference = $"{ServiceRoot}/api/{repositoryInfo.RepositoryId}/cmis/{Constants.CmisVersion}/atom/foldertree?id=root", MediaType = CmisMediaType.Descendants }, new AtomLink { Relation = "http://docs.oasis-open.org/ns/cmis/link/200908/rootdescendants", Reference = $"{ServiceRoot}/api/{repositoryInfo.RepositoryId}/cmis/{Constants.CmisVersion}/atom/descendants?id=root", MediaType = CmisMediaType.Descendants, Id = "root" } }, UriTemplates = new List <IAtomUriTemplate> { new AtomUriTemplate { Template = ServiceRoot + "/api/" + repositoryInfo.RepositoryId + "/cmis/" + Constants.CmisVersion + "/atom/id?id={id}&filter={filter}&includeAllowableActions={includeAllowableActions}&includeACL={includeACL}&includePolicyIds={includePolicyIds}&includeRelationships={includeRelationships}&renditionFilter={renditionFilter}", MediaType = CmisMediaType.Entry, UriTemplateType = CmisUriTemplateType.ObjectById }, new AtomUriTemplate { Template = ServiceRoot + "/api/" + repositoryInfo.RepositoryId + "/cmis/" + Constants.CmisVersion + "/atom/path?path={path}&filter={filter}&includeAllowableActions={includeAllowableActions}&includeACL={includeACL}&includePolicyIds={includePolicyIds}&includeRelationships={includeRelationships}&renditionFilter={renditionFilter}", MediaType = CmisMediaType.Entry, UriTemplateType = CmisUriTemplateType.ObjectByPath }, new AtomUriTemplate { Template = ServiceRoot + "/api/" + repositoryInfo.RepositoryId + "/cmis/" + Constants.CmisVersion + "/atom/type?id={id}", MediaType = CmisMediaType.Entry, UriTemplateType = CmisUriTemplateType.TypeById }, new AtomUriTemplate { Template = ServiceRoot + "/api/" + repositoryInfo.RepositoryId + "/cmis/" + Constants.CmisVersion + "/atom/query?q={q}&searchAllVersions={searchAllVersions}&includeAllowableActions={includeAllowableActions}&includeRelationships={includeRelationships}&maxItems={maxItems}&skipCount={skipCount}", MediaType = CmisMediaType.Feed, UriTemplateType = CmisUriTemplateType.Query } } }); } return(result); }