NET的JIRA活动时间线REST API
目录
介绍
背景
使用代码
介绍
本文介绍了如何使用带有.C#的REST API的活动时间线(ActivityTimeline)。
背景
活动时间线JIRA插件提供了资源计划仪表板,以安排JIRA任务,自定义事件和预订,并以有组织的方式可视化团队任务。为了使用API,必须设置以下内容。
- 具有管理权限的帐户。
- REST API必须启动。(控制台>配置>高级设置)
通过API可用的选项很少。
- 授权
- 登录[POST]——/rest/api/1/session
- 注销[DELETE]——/rest/api/1/session
- 团队
- 获取团队列表[GET]——/rest/api/1/team/list
- 通过ID [GET]获取团队——/rest /api/1/team/$teamId
- 时间表时间表
- 获取时间线[GET]——/rest/api/1/timeline
- 获取工作量[GET]——/rest/api/1/workload
- 自定义事件
- 创建事件[POST]——/rest/api /1/event
- 通过ID [DELETE]删除事件——DELETE/rest/api/1/event/$id
- 获取事件类型列表[GET]——/rest/api/1/eventType/list
在本文中,我们介绍了如何使用REST API登录并获取团队和时间线数据。
使用代码
为了使用API方法,首先是获取会话ID,
protected string GetActivityTimelineSessionID(){string uri = string.Empty;string cookie = string.Empty;String credentials = "{'username':'" + "Admin Username"+ "','password':'" + "Admin password" + "'}";HttpWebResponse response = ActivityTimelinePOST("https://xxx.activitytimeline.com/rest/api/1/session", credentials, null, null);if (response == null || ((int)response.StatusCode) != 200){return "";}WebHeaderCollection headers = response.Headers;if (headers["Set-Cookie"] != null){string cookies = headers["Set-Cookie"];String[] fields = Regex.Split(cookies, ";\\s*");cookie = fields[0];}return cookie;}
GetActivityTimelineSessionID方法用于获取会话ID。在这里,我们使用用户名和密码进行POST。然后,我们读取标题信息以获取ID。
private HttpWebResponse ActivityTimelinePOST(string url, string postData, string referer, string cookie)
{byte[] byteArray = Encoding.UTF8.GetBytes(postData);HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);request.Method = "POST";request.KeepAlive = true;request.AllowAutoRedirect = false;request.Accept = "*/*";request.ContentType = "application/json";if (!string.IsNullOrEmpty(cookie)){ request.Headers.Add(HttpRequestHeader.Cookie, cookie);}if (!string.IsNullOrEmpty(referer)){request.Referer = referer;}request.ContentLength = byteArray.Length;request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5";Stream dataStream = request.GetRequestStream();dataStream.Write(byteArray, 0, byteArray.Length);dataStream.Close();return (HttpWebResponse)request.GetResponse();
}
在ActivityTimelinePOST方法中,创建实际的Web请求。确保正确发送以上数据。
收到会话ID后,我们将其存储在变量中。
Get session ID
string jSessionID = GetActivityTimelineSessionID();
让我们看看如何从API查询团队列表。
Get team list
Newtonsoft.Json.Linq.JArray teamList = GetTeamList(jSessionID);protected virtual Newtonsoft.Json.Linq.JArray GetTeamList(string jSessionID)
{HttpWebResponse response = ActivityTimelineGET("https://xxx.activitytimeline.com/rest/api/1/team/list", null, jSessionID);StreamReader reader = new StreamReader(response.GetResponseStream());string jsonString = reader.ReadToEnd();var tr = Newtonsoft.Json.Linq.JArray.Parse(jsonString);return tr;
}
获得TeamID后,我们可以查询时间线数据,如下所示:
if (teamList.Count > 0)
{foreach (var team in teamList){var currentTeamid = team["id"];Newtonsoft.Json.Linq.JObject timeLineData = GetTimeLineData(jSessionID, currentTeamid.ToString());Get team member for a teamvar currentTeamMemberList = timeLineData["members"];foreach (var teamMember in currentTeamMemberList){Get issues for a membervar workLoadList = teamMember["workload"];if (workLoadList != null){try{if (teamMember["enabled"].ToString().ToLower() == "true"){foreach (var workload in workLoadList){ActivityTimelineRecord activityTimelineRecord = new ActivityTimelineRecord();activityTimelineRecord.MemberID = teamMember["id"].ToString();activityTimelineRecord.TeamID = currentTeamid.ToString();activityTimelineRecord.TeamName = team["name"].ToString();activityTimelineRecord.JiraUserName = teamMember["username"].ToString();activityTimelineRecord.Involvement = teamMember["involvement"].ToString();activityTimelineRecord.Day = workload["day"].ToString();activityTimelineRecord.DayOfWeek = workload["dayOfWeek"].ToString();activityTimelineRecord.Hours = workload["hours"].ToString();activityTimelineRecordList.Add(activityTimelineRecord);}}}catch (Exception ex){string errMessage = string.Format(" - {0} <br> - {1}", currentTeamid.ToString(), ex.Message);sbErrorLog.AppendLine(errMessage);Logger.LogError(errMessage, ex);continue;}}}}
}
GetTimeLineData方法获取时间线信息。在这里,我们获得30条信息。向前15天,向后15天。我们正在捕获期间内的TeamName,Username,Involvement,Day,DayofWeek和分配的小时数。
protected virtual Newtonsoft.Json.Linq.JObject GetTimeLineData(string jSessionID, string teamID)
{string futureDate = DateTime.Today.AddDays(15).ToString("yyyy-MM-dd");string pastDate = DateTime.Today.AddDays(-15).ToString("yyyy-MM-dd");HttpWebResponse response = ActivityTimelineGET("https://xxx.activitytimeline.com"+ string.Format("/rest/api/1/workload?start={0}&end={1}&teamId={2}&startOffset=0&maxUsers=50", pastDate, futureDate, teamID), null, jSessionID);StreamReader reader = new StreamReader(response.GetResponseStream());string jsonString = reader.ReadToEnd();var tr = Newtonsoft.Json.Linq.JObject.Parse(jsonString);return tr;
}
让我们创建一个类来存储结果。
public class ActivityTimelineRecord{public string TeamID { get; set; }public string TeamName { get; set; }public string MemberID { get; set; }public string JiraUserName { get; set; }public string Involvement { get; set; }public string Day { get; set; }public string DayOfWeek { get; set; }public string Hours { get; set; }}
有关更多信息,请在此处参考ActiviltyTimeline文档。
NET的JIRA活动时间线REST API相关推荐
- 腾讯微博API时间线相关接口返回的微博信息中head值使用问题
腾讯微博API时间线相关接口返回的微博信息中head值表示作者头像url,这个链接直接访问并不能使用,需要再附加一个参数指定图片的大小(100.50),比如:[head]/100.
- 腾讯微博android sdk,腾讯微博java(android)sdk时间线api详细介绍
本文主要介绍腾讯微博android sdk中时间线有关的20个接口,以及正常获取及翻页的使用的示例代码及部分特例 注意:以下所有的api示例代码都需要先新建QqTSdkService类对象qqTSdk ...
- Netflix媒体数据库:媒体时间线数据模型
如何设计高效的视频数据库,Netflix的NMDB给出了答案.本文是系列文章的第二篇,感谢Hulu的小伙伴们的技术审校. 文 / Subbu Venkatrav, Arsen Kostenko, Sh ...
- 介绍三种绘制时间线图的方法
作者 |周萝卜 来源 |萝卜大杂烩 今天我们再来分享几种不同的制作方法,大家可以自行比较下各种方法的优劣. Matplotlib 制作 Matplotlib 作为 Python 家族最为重要的可视化工 ...
- 046_Timeline时间线
1. Timeline时间线 1.1. Timeline时间线可视化地呈现时间流信息. 1.2. Timeline Attributes 参数 说明 类型 可选值 默认值 reverse 指定节点排序 ...
- [原创]使用 Google Chart 在线服务实现软件版本发布时间线图
引言 ExtAspNet 是一组基于 ExtJS 的专业 ASP.NET 2.0 控件库,从第一次发布至今已经有超过 3 年的时间,版本也大大小小发了 80 多个. 今天想弄一个查看发布周期总体趋势的 ...
- 应用时间线服务器启动报错_从服务器到无服务器的时间轴和教程
应用时间线服务器启动报错 Amazon Web Services is a behemoth powering companies from Fortune 500 corporations to h ...
- Timeline 时间线基础用法
1.html内容 Timeline 可拆分成多个按照时间戳排列的活动, 时间戳是其区分于其他控件的重要特征 <el-timeline style="flex: 1; overflow ...
- java实现抛物线轨迹计算_JavaFX中抛物线轨迹的时间线
小编典典 在a中KeyValue,第一个参数应为a WritableValue,例如circle.centerXProperty(),代表初始坐标,例如x.第二个参数应该是类型兼容的值,在这种情况下x ...
最新文章
- zabbix监控系统的安装与配置
- 当创建对象时......
- jmeter 线程组与参数_jmeter接口测试基础篇之初步认识及参数化请求
- c/c++的输入输出总结
- dede搜索php在哪,dede搜索页面怎么调用及相关搜索调用
- 总结4:input文本输入框自动提示
- JavaWeb 基于jsp+javabean+servlet+mongodb 增删改查
- JavaScript知识点查阅
- 2020年Java学习计划祝大家新年快乐
- Python_爬虫笔记_2018.3.19
- python 循环十次_python循环10次怎么写
- 【高并发】被无数程序员追捧的阿里双十一系统设计方案,脑子都是怎么转的啊?
- 小单刷题笔记之鲁卡斯队列(浮点数比较)
- 计算56除以四十可以用计算机,CPU如何来计算除法 一
- 74hc165C语言程序,74hc165级联用法(74hc165级联电路图及程序)
- RulersGuides.js – 网站中实现 Photoshop 标尺效果
- 【selenium 】chrome的浏览器,headless模式下不能下载文件
- 机器学习方法:回归(一):线性回归Linear regression
- 安居客无锡二手房数据获取
- 四、计算机网络之网络层
热门文章
- matlab控制算法C语言,PID算法Matlab仿真程序和C程序
- java二维数组省略_Java基础教程——二维数组
- linux怎么安装ros系统,ubuntu14.04安装ROS indigo的详细图解步骤
- javaweb系统oracle锁表,oracle、websphere下获取数据库连接时出现死锁
- python工厂模式 简书_[Python设计模式] 01 - 简单工厂模式
- php 取出多重数组中的一列_PHP提取多维数组指定一列的方法大全
- c#养老院老人信息管理系统源码 论文_[源码和文档分享]基于JSP和MYSQL实现的学生信息管理系统...
- python整数逆位运算_Python这些位运算的妙用,绝对让你大开眼界
- QTableWidget item设置不可以选中和编辑状态
- 《计算机网络》第三章:数据链路层(The Data Link Layer)