コード例 #1
0
        /// <summary>
        /// Rebuilds the TFS known elements asynchronous.
        /// </summary>
        /// <param name="baseUrl">The base URL.</param>
        /// <returns></returns>
        protected async Task <bool> RebuildTfsKnownElementsAsync(string baseUrl)
        {
            if (TfsKnownElements == null)
            {
                TfsKnownElements = new TfsKnownElements(baseUrl);
            }

            TfsKnownElements.ClearKnownProperties();

            var projectCollections = await GetTeamProjectCollectionsAsync();

            foreach (var projectCollectionReference in projectCollections)
            {
                var projectCollection = await GetTeamProjectCollectionAsync(projectCollectionReference.Id.ToString());

                TfsKnownElements.KnownProjectCollectionReferences.Add(projectCollectionReference.Name, projectCollectionReference);
                TfsKnownElements.KnownProjectCollections.Add(projectCollection.Name, projectCollection);

                foreach (var projectReference in await GetTeamProjectsAsync(projectCollectionReference.Name))
                {
                    TfsKnownElements.KnownProjectReferences.Add(projectReference.Name, projectReference);
                    TfsKnownElements.KnownProjectToCollectionMap.Add(projectReference.Name, projectCollectionReference.Name);
                }
            }

            return(true);
        }
コード例 #2
0
        /// <summary>
        /// Gets the single workitem detail by identifier asynchronous.
        /// </summary>
        /// <param name="workItemId">The work item identifier.</param>
        /// <param name="projectHint">The project hint.</param>
        /// <returns></returns>
        public async Task <WorkItem> GetSingleWorkitemDetailByIdAsync(int workItemId, string projectHint)
        {
            //assumes workitem id follows the workitem token.

            var mostLikelyTeamProject = TfsKnownElements.GetMostLikelyProject(projectHint);
            var witClient             = GetWorkItemTrackingHttpClient(mostLikelyTeamProject);
            var workitem = await witClient.GetWorkItemAsync(workItemId);

            return(workitem);
        }
コード例 #3
0
        public async Task <List <WorkItemField> > GetFieldsAsync()
        {
            var knownProjectRefs = TfsKnownElements.KnownProjectReferences;

            if (knownProjectRefs == null)
            {
                throw new ArgumentException($"{nameof(knownProjectRefs)} returned a null result");
            }
            var firstKnownProjectRef = knownProjectRefs.FirstOrDefault();

            if (firstKnownProjectRef.Value == null)
            {
                throw new ArgumentException($"{nameof(firstKnownProjectRef)} returned no items");
            }
            var mostLikelyProject = TfsKnownElements.GetMostLikelyProject(firstKnownProjectRef.Value.Name);
            var witClient         = GetWorkItemTrackingHttpClient(mostLikelyProject);

            return(await witClient.GetFieldsAsync());
        }
コード例 #4
0
        /// <summary>
        /// Gets the workitem details by wiql query asynchronous.
        /// </summary>
        /// <param name="wiql">The wiql.</param>
        /// <param name="projectHint">The project hint.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentException">Learn to query, scrub!</exception>
        public async Task <List <WorkItem> > GetWorkitemDetailsByWiqlQueryAsync(string wiql, string projectHint)
        {
            if (string.IsNullOrWhiteSpace(wiql))
            {
                throw new ArgumentException("Learn to query, scrub!");
            }

            var mostLikelyTeamProject = TfsKnownElements.GetMostLikelyProject(projectHint);
            var witClient             = GetWorkItemTrackingHttpClient(mostLikelyTeamProject);

            var resultOfOnlyIdValues = await witClient.QueryByWiqlAsync(new Wiql { Query = wiql }, mostLikelyTeamProject.TeamProjectRef.Name);

            if (resultOfOnlyIdValues.WorkItems.Any() == false)
            {
                return(new List <WorkItem>());
            }

            var workitems = await witClient.GetWorkItemsAsync(resultOfOnlyIdValues.WorkItems.Select(w => w.Id));

            return(workitems);
        }
コード例 #5
0
        protected void LoadTfsConfiguration(SystemInstances tfsConfig)
        {
            if (tfsConfig.IsValid == false)
            {
                throw new ArgumentException($"Tfs configuration is not valid: {tfsConfig.Instances?.Count} instances");
            }

            var onlySupportsOneTfsInstance = tfsConfig.Instances.First();
            var baseUrl = onlySupportsOneTfsInstance.InstanceUrl;

            if (onlySupportsOneTfsInstance.AutoLoadInstanceMetaData)
            {
                LogInfo("Auto loading Tfs instance metadata...");
                RebuildTfsKnownElementsAsync(baseUrl).GetAwaiter().GetResult();
                LogInfo("Auto load of Tfs instance metadata complete");
            }
            else
            {
                LogInfo("Auto load of Tfs instance metadata was skipped");
                TfsKnownElements = new TfsKnownElements(baseUrl);
            }
        }