예제 #1
0
        private static async Task <HttpResponseMessage> GetRequestResponseAsync(String requestUrl, BuildMonitorSettings settings)
        {
            var credentials = settings.GetValueStrict <ICredentials>(ProjectCredentialsSettingKey);
            var accessToken = settings.GetDefaultValueIfNotExists <String>(PersonalAccessTokenSettingsKey);

            if (!String.IsNullOrWhiteSpace(accessToken))
            {
                return(await HttpRequestHelper.GetRequestResponseAsync(requestUrl, accessToken).ConfigureAwait(false));
            }

            return(await HttpRequestHelper.GetRequestResponseAsync(requestUrl, credentials).ConfigureAwait(false));
        }
예제 #2
0
        private async Task <DataResponse <IEnumerable <TBuild> > > GetBuildsOfPullRequestAsync(IPullRequest pullRequest, BuildMonitorSettings settings)
        {
            var projectUrl = settings.GetValueStrict <String>(ProjectUrlSettingKey).TrimEnd('/');
            var maxBuilds  = settings.GetDefaultValueIfNotExists <Int32?>(MaxBuildsPerDefinitionSettingsKey) ?? 5;

            // use fallback value when no value was defined via settings

            var requestUrl      = $"{projectUrl}/_apis/build/builds?api-version={ApiVersion}&branchName=refs%2Fpull%2F{pullRequest.Id}%2Fmerge&$top={maxBuilds}";
            var requestResponse = await GetRequestResponseAsync(requestUrl, settings).ConfigureAwait(false);

            requestResponse.ThrowIfUnsuccessful();

            var result = await requestResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

            var data = JsonConvert.DeserializeObject <List <TBuild> >(JObject.Parse(result)["value"].ToString());

            await ResolveAdditionalBuildDataAsync(settings, data, projectUrl).ConfigureAwait(false);

            return(new DataResponse <IEnumerable <TBuild> > {
                Data = data, StatusCode = requestResponse.StatusCode
            });
        }
예제 #3
0
        public virtual async Task <DataResponse <IEnumerable <IBuild> > > GetBuildsAsync(IEnumerable <IBuildDefinition> buildDefinitions, BuildMonitorSettings settings)
        {
            var buildDefinitionsList = buildDefinitions.ToList();

            if (!buildDefinitionsList.Any())
            {
                return(new DataResponse <IEnumerable <IBuild> > {
                    Data = Enumerable.Empty <TBuild>(), StatusCode = HttpStatusCode.NoContent
                });
            }

            var projectUrl = settings.GetValueStrict <String>(ProjectUrlSettingKey).TrimEnd('/');
            var maxBuilds  = settings.GetDefaultValueIfNotExists <Int32?>(MaxBuildsPerDefinitionSettingsKey) ?? 5;

            // use fallback value when no value was defined via settings

            if (!String.IsNullOrWhiteSpace(projectUrl))
            {
                var buildDefinitionsCommaList = String.Join(",", buildDefinitionsList.Select(a => a.Id));
                var requestUrl      = $"{projectUrl}/_apis/build/builds?api-version={ApiVersion}&definitions={buildDefinitionsCommaList}&maxBuildsPerDefinition={maxBuilds}";
                var requestResponse = await GetRequestResponseAsync(requestUrl, settings).ConfigureAwait(false);

                requestResponse.ThrowIfUnsuccessful();

                var result = await requestResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

                var data = JsonConvert.DeserializeObject <List <TBuild> >(JObject.Parse(result)["value"].ToString());
                await ResolveAdditionalBuildDataAsync(settings, data, projectUrl).ConfigureAwait(false);

                return(new DataResponse <IEnumerable <IBuild> > {
                    Data = data, StatusCode = requestResponse.StatusCode
                });
            }

            throw new Exception("Error while processing method!");
        }