예제 #1
0
        private dynamic GetWorklogsForIssue(string issueKey, long startAt)
        {
            RestRequest restRequest = CreateRequest("issue/" + issueKey + "/worklog", Method.GET);

            restRequest.AddQueryParameter("startAt", startAt.ToString());

            IRestResponse <dynamic> restResponse = _restClient.Execute <dynamic>(restRequest);

            restResponse.EnsureSuccessStatusCode();

            return(restResponse.Data);
        }
예제 #2
0
        protected override List <PublicHoliday> CalculateReportData()
        {
            Logger.Info("Getting public holidays");

            string publicHolidayType        = "National holiday";
            List <PublicHoliday> result     = new List <PublicHoliday>();
            RestClient           restClient = new RestClient(new Uri("https://calendarific.com/api/v2/"));

            restClient.AddHandler("application/json", () => new DynamicJsonDeserializer());
            foreach (var year in _yearsToReport)
            {
                //?api_key={apiKey}&country=SK&year={year}

                var request = new RestRequest("holidays", Method.GET)
                {
                    JsonSerializer = new NewtonsoftJsonSerializer()
                };

                request.AddQueryParameter("api_key", _apiKey);
                request.AddQueryParameter("country", "SK");
                request.AddQueryParameter("year", year.ToString());

                IRestResponse <dynamic> restResponse = restClient.Execute <dynamic>(request);
                restResponse.EnsureSuccessStatusCode();

                var holidaysResponseData = restResponse.Data;

                foreach (var holiday in holidaysResponseData.response.holidays)
                {
                    var datetime = holiday.date.datetime;

                    string[] types = holiday.type.ToObject <string[]>();

                    if (types.Contains(publicHolidayType))
                    {
                        result.Add(new PublicHoliday
                        {
                            Date = new DateTime((int)datetime.year, (int)datetime.month, (int)datetime.day),
                            Name = holiday.name
                        });
                    }
                }

                //API limitation
                Thread.Sleep(TimeSpan.FromSeconds(1));
            }

            return(result);;
        }
예제 #3
0
        public static void CheckResponseAndThrowIfNeeded(this IRestResponse response)
        {
            response.EnsureSuccessStatusCode();
            if (response.ErrorException != null)
            {
                throw response.ErrorException;
            }

            var msg = response.GetH3NonWarnings();

            if (msg?.StartsWith("Error:") == true)
            {
                msg = msg.Substring(6).Trim();
                throw new MailmanException(msg);
            }
        }
예제 #4
0
        public async Task LogWork(Worklog worklog)
        {
            if (worklog.IsAtLeast(TimeSpan.FromMinutes(1)))
            {
                RestRequest restRequest = CreateRequest("issue/" + worklog.Issue.Key + "/worklog", Method.POST);
                var         worklogJson = new
                {
                    started          = worklog.Start,
                    timeSpentSeconds = worklog.DurationInSeconds
                };
                restRequest.AddJsonBody(worklogJson);

                IRestResponse response = await _restClient.ExecuteTaskAsync(restRequest);

                response.EnsureSuccessStatusCode();
            }
        }
예제 #5
0
        public IEnumerable <JiraProject> GetJiraProjects()
        {
            RestRequest restRequest = CreateRequest("project", Method.GET);

            IRestResponse <dynamic> restResponse = _restClient.Execute <dynamic>(restRequest);

            restResponse.EnsureSuccessStatusCode();

            var enumerable = restResponse.Data as IEnumerable <dynamic>;

            return(enumerable.Select(x => new JiraProject
            {
                Id = x.id,
                Key = x.key,
                Name = x.name,
                Category = x.projectCategory?.name
            }));
        }
예제 #6
0
        public async Task <IEnumerable <Issue> > GetIssuesAsync()
        {
            RestRequest restRequest = CreateRequest("search", Method.GET);

            restRequest.AddQueryParameter("jql", "assignee = currentUser() AND status = Open");

            IRestResponse <dynamic> restResponse = await _restClient.ExecuteTaskAsync <dynamic>(restRequest);

            restResponse.EnsureSuccessStatusCode();

            List <Issue> issues = new List <Issue>();

            foreach (dynamic issueJson in restResponse.Data.issues)
            {
                issues.Add(new Issue(issueJson.key.Value, issueJson.fields.issuetype.name.Value, issueJson.fields.summary.Value));
            }

            return(issues);
        }
예제 #7
0
        private dynamic GetAbsencePage(long startAt)
        {
            RestRequest restRequest = CreateRequest("search", Method.GET);

            restRequest.AddQueryParameter("jql", "project = ABS");
            restRequest.AddQueryParameter("fields", $"creator,created,summary,status," +
                                          $"{CustomFieldsConverter.CustomFields[CustomFieldsConverter.CustomFieldsEnum.AbsEndDate]}," +
                                          $"{CustomFieldsConverter.CustomFields[CustomFieldsConverter.CustomFieldsEnum.AbsStartDate]}," +
                                          $"{CustomFieldsConverter.CustomFields[CustomFieldsConverter.CustomFieldsEnum.AbsActualNumberOfDaysHours]}," +
                                          $"{CustomFieldsConverter.CustomFields[CustomFieldsConverter.CustomFieldsEnum.AbsDaysHours]}," +
                                          $"{CustomFieldsConverter.CustomFields[CustomFieldsConverter.CustomFieldsEnum.AbsAbsenceCategory]}");

            restRequest.AddQueryParameter("startAt", startAt.ToString());

            IRestResponse <dynamic> restResponse = _restClient.Execute <dynamic>(restRequest);

            restResponse.EnsureSuccessStatusCode();

            return(restResponse.Data);
        }
예제 #8
0
        private dynamic GetIssuesPage(string jql, long startAt, string fields, string expand)
        {
            RestRequest restRequest = CreateRequest("search", Method.GET);

            restRequest.AddQueryParameter("jql", jql);
            restRequest.AddQueryParameter("startAt", startAt.ToString());
            if (!String.IsNullOrEmpty(fields))
            {
                restRequest.AddQueryParameter("fields", fields);
            }
            if (!String.IsNullOrEmpty(expand))
            {
                restRequest.AddQueryParameter("expand", expand);
            }

            IRestResponse <dynamic> restResponse = _restClient.Execute <dynamic>(restRequest);

            restResponse.EnsureSuccessStatusCode();

            return(restResponse.Data);
        }