/// <summary> /// Carga las categorías de un proyecto /// </summary> private CategoryModelCollection LoadCategories(Project objTfsProject) { CategoryModelCollection objColCategories = new CategoryModelCollection(); // Carga las categorías if (objTfsProject != null) { // Asigna las categorías for (int intIndex = 0; intIndex < objTfsProject.Categories.Count; intIndex++) { CategoryModel objCategory = new CategoryModel(); // Asigna los datos de la categoría objCategory.ID = intIndex; objCategory.Name = objTfsProject.Categories[intIndex].Name; objCategory.Description = objTfsProject.Categories[intIndex].ReferenceName; // Añade la categoría a la colección objColCategories.Add(objCategory); // Añade los tipos de categorías foreach (WorkItemType objItemType in objTfsProject.Categories[intIndex].WorkItemTypes) { objCategory.TaskTypes.Add(new CategoryModel { Name = objItemType.Name, Description = objItemType.Description }); } } } // Devuelve la colección de categorías return(objColCategories); }
/// <summary> /// Descarga las entradas de un canal /// </summary> internal async Task <CategoryModelCollection> DownloadChannelAsync(TrackModel track) { CategoryModelCollection categories = new CategoryModelCollection(); string content = await DownloadAsync(track.Url); // Interpreta la cadena descargada if (!string.IsNullOrWhiteSpace(content)) { // Interpreta las categorías categories = new CategoriesRepository().LoadCategories(track, content); // Modifica las direcciones de imagen y los vídeos UpdateUrls(categories); } // Devuelve la colección de entradas return(categories); }
/// <summary> /// Obtiene los nodos de las categorías /// </summary> private MLNodesCollection GetCategoriesNodes(CategoryModelCollection categories) { MLNodesCollection nodesML = new MLNodesCollection(); // Crea los nodos foreach (CategoryModel category in categories) { MLNode nodeML = nodesML.Add(TagCategory); // Asigna las propiedades nodeML.Attributes.Add(TagId, category.Id); nodeML.Nodes.Add(TagName, category.Title); // Añade las entradas nodeML.Nodes.AddRange(GetEntriesNodes(category.Entries)); } // Devuelve la colección return(nodesML); }
/// <summary> /// Modifica las Urls de vídeo e imagen de las categorías /// </summary> private void UpdateUrls(CategoryModelCollection categories) { FeedsManager manager = new FeedsManager(); // Modifica las Url de las entradas de las categorías foreach (CategoryModel category in categories) { foreach (EntryModel entry in category.Entries) { string videoCode = entry.GetUrlVideoCode(); if (!string.IsNullOrWhiteSpace(videoCode)) { // Modifica la Url de la imagen if (string.IsNullOrWhiteSpace(entry.UrlImage)) { entry.UrlImage = manager.GetUriThumbnailYouTube(videoCode)?.ToString(); } } } } }
/// <summary> /// Carga las categorías de un canal /// </summary> internal CategoryModelCollection LoadCategories(TrackModel track, string xml) { CategoryModelCollection categories = new CategoryModelCollection(); MLFile fileML = new LibMarkupLanguage.Services.XML.XMLParser().ParseText(xml); // Carga el archivo if (fileML != null) { foreach (MLNode rootML in fileML.Nodes) { if (rootML.Name == TagRoot) { foreach (MLNode categoryML in rootML.Nodes) { if (categoryML.Name == TagCategory) { CategoryModel category = new CategoryModel(track); // Asigna las propiedades category.Id = categoryML.Attributes[TagId].Value; category.Title = categoryML.Nodes[TagName].Value; // Carga las entradas foreach (MLNode nodeML in categoryML.Nodes) { if (nodeML.Name == EntriesRepository.TagConference) { category.Entries.Add(new EntriesRepository().LoadEntry(nodeML)); } } // Añade la categoría a la colección categories.Add(category); } } } } } // Devuelve la colección de categorías return(categories); }
/// <summary> /// Carga las categorías de un nodo /// </summary> private CategoryModelCollection LoadCategories(TrackModel track, MLNode rootML) { CategoryModelCollection categories = new CategoryModelCollection(); // Carga las categorías foreach (MLNode nodeML in rootML.Nodes) { if (nodeML.Name == TagCategory) { CategoryModel category = new CategoryModel(track); // Carga las propiedades category.Id = nodeML.Attributes[TagId].Value; category.Title = nodeML.Nodes[TagName].Value; // Carga las entradas category.Entries.AddRange(LoadEntries(nodeML)); // Añade la categoría categories.Add(category); } } // Devuelve la colección return(categories); }