目录

介绍

背景

使用代码


介绍

本文介绍了如何使用带有.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}&amp;end={1}&amp;teamId={2}&amp;startOffset=0&amp;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相关推荐

  1. 腾讯微博API时间线相关接口返回的微博信息中head值使用问题

    腾讯微博API时间线相关接口返回的微博信息中head值表示作者头像url,这个链接直接访问并不能使用,需要再附加一个参数指定图片的大小(100.50),比如:[head]/100.

  2. 腾讯微博android sdk,腾讯微博java(android)sdk时间线api详细介绍

    本文主要介绍腾讯微博android sdk中时间线有关的20个接口,以及正常获取及翻页的使用的示例代码及部分特例 注意:以下所有的api示例代码都需要先新建QqTSdkService类对象qqTSdk ...

  3. Netflix媒体数据库:媒体时间线数据模型

    如何设计高效的视频数据库,Netflix的NMDB给出了答案.本文是系列文章的第二篇,感谢Hulu的小伙伴们的技术审校. 文 / Subbu Venkatrav, Arsen Kostenko, Sh ...

  4. 介绍三种绘制时间线图的方法

    作者 |周萝卜 来源 |萝卜大杂烩 今天我们再来分享几种不同的制作方法,大家可以自行比较下各种方法的优劣. Matplotlib 制作 Matplotlib 作为 Python 家族最为重要的可视化工 ...

  5. 046_Timeline时间线

    1. Timeline时间线 1.1. Timeline时间线可视化地呈现时间流信息. 1.2. Timeline Attributes 参数 说明 类型 可选值 默认值 reverse 指定节点排序 ...

  6. [原创]使用 Google Chart 在线服务实现软件版本发布时间线图

    引言 ExtAspNet 是一组基于 ExtJS 的专业 ASP.NET 2.0 控件库,从第一次发布至今已经有超过 3 年的时间,版本也大大小小发了 80 多个. 今天想弄一个查看发布周期总体趋势的 ...

  7. 应用时间线服务器启动报错_从服务器到无服务器的时间轴和教程

    应用时间线服务器启动报错 Amazon Web Services is a behemoth powering companies from Fortune 500 corporations to h ...

  8. Timeline 时间线基础用法

    1.html内容  Timeline 可拆分成多个按照时间戳排列的活动, 时间戳是其区分于其他控件的重要特征 <el-timeline style="flex: 1; overflow ...

  9. java实现抛物线轨迹计算_JavaFX中抛物线轨迹的时间线

    小编典典 在a中KeyValue,第一个参数应为a WritableValue,例如circle.centerXProperty(),代表初始坐标,例如x.第二个参数应该是类型兼容的值,在这种情况下x ...

最新文章

  1. zabbix监控系统的安装与配置
  2. 当创建对象时......
  3. jmeter 线程组与参数_jmeter接口测试基础篇之初步认识及参数化请求
  4. c/c++的输入输出总结
  5. dede搜索php在哪,dede搜索页面怎么调用及相关搜索调用
  6. 总结4:input文本输入框自动提示
  7. JavaWeb 基于jsp+javabean+servlet+mongodb 增删改查
  8. JavaScript知识点查阅
  9. 2020年Java学习计划祝大家新年快乐
  10. Python_爬虫笔记_2018.3.19
  11. python 循环十次_python循环10次怎么写
  12. 【高并发】被无数程序员追捧的阿里双十一系统设计方案,脑子都是怎么转的啊?
  13. 小单刷题笔记之鲁卡斯队列(浮点数比较)
  14. 计算56除以四十可以用计算机,CPU如何来计算除法 一
  15. 74hc165C语言程序,74hc165级联用法(74hc165级联电路图及程序)
  16. RulersGuides.js – 网站中实现 Photoshop 标尺效果
  17. 【selenium 】chrome的浏览器,headless模式下不能下载文件
  18. 机器学习方法:回归(一):线性回归Linear regression
  19. 安居客无锡二手房数据获取
  20. 四、计算机网络之网络层

热门文章

  1. matlab控制算法C语言,PID算法Matlab仿真程序和C程序
  2. java二维数组省略_Java基础教程——二维数组
  3. linux怎么安装ros系统,ubuntu14.04安装ROS indigo的详细图解步骤
  4. javaweb系统oracle锁表,oracle、websphere下获取数据库连接时出现死锁
  5. python工厂模式 简书_[Python设计模式] 01 - 简单工厂模式
  6. php 取出多重数组中的一列_PHP提取多维数组指定一列的方法大全
  7. c#养老院老人信息管理系统源码 论文_[源码和文档分享]基于JSP和MYSQL实现的学生信息管理系统...
  8. python整数逆位运算_Python这些位运算的妙用,绝对让你大开眼界
  9. QTableWidget item设置不可以选中和编辑状态
  10. 《计算机网络》第三章:数据链路层(The Data Link Layer)