danger-jira_sync 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,130 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "securerandom"
4
+ require "jira-ruby"
5
+
6
+ module Danger
7
+ # Jira and GitHub should be friends, and Danger brings them closer together
8
+ # with jira_sync
9
+ #
10
+ # @example You must always configure jira_sync before it can access the Jira
11
+ # REST API
12
+ #
13
+ # jira_sync.configure(
14
+ # jira_url: "https://myjirainstance.atlassian.net",
15
+ # jira_username: "test@example.com",
16
+ # jira_api_token: "ABC123",
17
+ # )
18
+ #
19
+ # @example Automatically label Pull Requests with the associated Jira issue's
20
+ # component names and project key
21
+ #
22
+ # jira_sync.autolabel_pull_request(%w(DEV))
23
+ #
24
+ # @see roverdotcom/danger-jira_sync
25
+ # @tags jira, github, labels, autolabel, danger, plugin
26
+ #
27
+ class DangerJiraSync < Plugin
28
+ class NotConfiguredError < StandardError
29
+ def initialize(msg = "You must call jira_sync.configure before jira_sync can be used")
30
+ super
31
+ end
32
+ end
33
+
34
+ # Configures the Jira REST Client with your credentials
35
+ #
36
+ # @param jira_url [String] The full url to your Jira instance, e.g.,
37
+ # "https://myjirainstance.atlassian.net"
38
+ # @param jira_username [String] The username to use for accessing the Jira
39
+ # instance. Commonly, this is an email address.
40
+ # @param jira_api_token [String] The API key to use to access the Jira
41
+ # instance. Generate one here: https://id.atlassian.com/manage/api-tokens
42
+ #
43
+ # @return [JIRA::Client] The underlying jira-ruby JIRA::Client instance
44
+ #
45
+ def configure(jira_url:, jira_username:, jira_api_token:)
46
+ @jira_client = JIRA::Client.new(
47
+ site: jira_url,
48
+ username: jira_username,
49
+ password: jira_api_token,
50
+ context_path: "",
51
+ auth_type: :basic
52
+ )
53
+ end
54
+
55
+ # Labels the Pull Request with Jira Project Keys and Component Names
56
+ #
57
+ # @param issue_prefixes [Array<String>] An array of issue key prefixes;
58
+ # this is often the project key. These must be present in the title or
59
+ # body of the Pull Request
60
+ #
61
+ # @return [Array<String>, nil] The list of project & component labels
62
+ # that were applied or nil if no issue or labels were found
63
+ #
64
+ def autolabel_pull_request(issue_prefixes)
65
+ raise NotConfiguredError unless @jira_client
66
+ raise(ArgumentError, "issue_prefixes cannot be empty") if issue_prefixes.empty?
67
+
68
+ issue_keys = extract_issue_keys_from_pull_request(issue_prefixes)
69
+ return if issue_keys.empty?
70
+
71
+ labels = fetch_labels_from_issues(issue_keys)
72
+ return if labels.empty?
73
+
74
+ create_missing_github_labels(labels)
75
+ github.api.add_labels_to_an_issue(repo, issue_number, labels)
76
+
77
+ labels
78
+ end
79
+
80
+ private
81
+
82
+ def repo
83
+ @repo ||= github.pr_json[:base][:repo][:full_name]
84
+ end
85
+
86
+ def issue_number
87
+ @issue_number ||= github.pr_json["number"]
88
+ end
89
+
90
+ def github_labels
91
+ @github_labels ||= github.api.labels(repo)
92
+ end
93
+
94
+ def extract_issue_keys_from_pull_request(key_prefixes)
95
+ # Match all key_prefixes followed by a dash then numbers, e.g. "DEV-12345"
96
+ re = Regexp.new(/((#{key_prefixes.join("|")})-\d+)/)
97
+
98
+ # Extract keys from the PR title and fallback to the body if none are found
99
+ keys = []
100
+ github.pr_title.gsub(re) { |match| keys << match }
101
+ github.pr_body.gsub(re) { |match| keys << match } if keys.empty?
102
+ keys.compact.uniq
103
+ end
104
+
105
+ def fetch_labels_from_issues(issue_keys)
106
+ labels = []
107
+ issue_keys.each do |key|
108
+ begin
109
+ issue = @jira_client.Issue.find(key)
110
+ labels << issue.project.key
111
+ labels += issue.components.map(&:name)
112
+ rescue JIRA::HTTPError => e
113
+ warn "Error while retrieving JIRA issue \"#{key}\": #{e.message}"
114
+ # No reason to continue if Unauthorized
115
+ break if e.code == 503
116
+ end
117
+ end
118
+ labels.compact.uniq
119
+ end
120
+
121
+ def create_missing_github_labels(labels)
122
+ missing_labels = labels - github_labels
123
+ missing_labels.each do |label|
124
+ color = "##{SecureRandom.hex(3)}"
125
+ github.api.add_label(repo, label, color)
126
+ end
127
+ missing_labels
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,177 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://rover-dev-benm.atlassian.net/rest/api/2/issue/DEV-1
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ User-Agent:
15
+ - Ruby
16
+ Authorization:
17
+ - Basic ABC123
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - Atlassian Proxy/0.1.256
25
+ Vary:
26
+ - Accept-Encoding
27
+ Cache-Control:
28
+ - no-cache, no-store, no-transform
29
+ Content-Type:
30
+ - application/json;charset=UTF-8
31
+ Strict-Transport-Security:
32
+ - max-age=315360000; includeSubDomains; preload
33
+ Date:
34
+ - Mon, 11 Jun 2018 01:16:38 GMT
35
+ X-Arequestid:
36
+ - c7f68a80-33de-464f-82d4-a8a7af8545bb
37
+ X-Xss-Protection:
38
+ - 1; mode=block
39
+ Transfer-Encoding:
40
+ - chunked
41
+ X-Ausername:
42
+ - admin
43
+ X-Content-Type-Options:
44
+ - nosniff
45
+ Connection:
46
+ - keep-alive
47
+ Set-Cookie:
48
+ - atlassian.xsrf.token=8ca80240-a572-45b1-9934-46d77b094faf_e477032a1af0e7473ae4bce55db23d17a39afee0_lin;
49
+ Path=/; Secure
50
+ body:
51
+ encoding: ASCII-8BIT
52
+ string: '{"expand":"renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations","id":"10001","self":"https://rover-dev-benm.atlassian.net/rest/api/2/issue/10001","key":"DEV-1","fields":{"issuetype":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories
53
+ track functionality or features expressed as user goals.","iconUrl":"https://rover-dev-benm.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"project":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/project/10001","id":"10001","key":"DEV","name":"DEV","projectTypeKey":"software","avatarUrls":{"48x48":"https://rover-dev-benm.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://rover-dev-benm.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://rover-dev-benm.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://rover-dev-benm.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"resolutiondate":null,"workratio":-1,"lastViewed":null,"watches":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/issue/DEV-1/watchers","watchCount":1,"isWatching":true},"created":"2018-06-10T15:49:35.621-0700","customfield_10020":null,"priority":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/priority/3","iconUrl":"https://rover-dev-benm.atlassian.net/images/icons/priorities/medium.svg","name":"Medium","id":"3"},"labels":[],"customfield_10016":null,"customfield_10019":null,"timeestimate":null,"aggregatetimeoriginalestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2018-06-10T16:35:54.417-0700","status":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/status/10003","description":"","iconUrl":"https://rover-dev-benm.atlassian.net/","name":"To
54
+ Do","id":"10003","statusCategory":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"To
55
+ Do"}},"components":[{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/component/10003","id":"10003","name":"ComponentA"},{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/component/10005","id":"10005","name":"ComponentC"}],"timeoriginalestimate":null,"description":null,"customfield_10010":null,"customfield_10011":null,"customfield_10012":null,"customfield_10013":null,"customfield_10014":[],"customfield_10015":null,"timetracking":{},"customfield_10006":null,"customfield_10007":null,"security":null,"customfield_10008":[],"customfield_10009":"0|i00007:","aggregatetimeestimate":null,"attachment":[],"summary":"do
56
+ the thing ","creator":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/user?username=admin","name":"admin","key":"admin","accountId":"5ac51680c5459746a4cf0e94","emailAddress":"ben.menesini@rover.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Ben
57
+ Menesini","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/user?username=admin","name":"admin","key":"admin","accountId":"5ac51680c5459746a4cf0e94","emailAddress":"ben.menesini@rover.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Ben
58
+ Menesini","active":true,"timeZone":"America/Los_Angeles"},"customfield_10000":"{}","aggregateprogress":{"progress":0,"total":0},"customfield_10001":null,"customfield_10002":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/issue/DEV-1/votes","votes":0,"hasVoted":false},"comment":{"comments":[],"maxResults":0,"total":0,"startAt":0},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]}}}'
59
+ http_version:
60
+ recorded_at: Mon, 11 Jun 2018 01:16:38 GMT
61
+ - request:
62
+ method: get
63
+ uri: https://rover-dev-benm.atlassian.net/rest/api/2/issue/ABC-1
64
+ body:
65
+ encoding: US-ASCII
66
+ string: ''
67
+ headers:
68
+ Accept:
69
+ - application/json
70
+ Accept-Encoding:
71
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
72
+ User-Agent:
73
+ - Ruby
74
+ Authorization:
75
+ - Basic ABC123
76
+ response:
77
+ status:
78
+ code: 200
79
+ message: OK
80
+ headers:
81
+ Server:
82
+ - Atlassian Proxy/0.1.256
83
+ Vary:
84
+ - Accept-Encoding
85
+ Cache-Control:
86
+ - no-cache, no-store, no-transform
87
+ Content-Type:
88
+ - application/json;charset=UTF-8
89
+ Strict-Transport-Security:
90
+ - max-age=315360000; includeSubDomains; preload
91
+ Date:
92
+ - Mon, 11 Jun 2018 01:16:39 GMT
93
+ X-Arequestid:
94
+ - 11c9033b-40a6-4819-9bbd-7ccbb6de3b3c
95
+ X-Xss-Protection:
96
+ - 1; mode=block
97
+ Transfer-Encoding:
98
+ - chunked
99
+ X-Ausername:
100
+ - admin
101
+ X-Content-Type-Options:
102
+ - nosniff
103
+ Connection:
104
+ - keep-alive
105
+ Set-Cookie:
106
+ - atlassian.xsrf.token=8ca80240-a572-45b1-9934-46d77b094faf_4f9e28512c190569c7a68075cb9c74ae492a78d1_lin;
107
+ Path=/; Secure
108
+ body:
109
+ encoding: ASCII-8BIT
110
+ string: '{"expand":"renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations","id":"10002","self":"https://rover-dev-benm.atlassian.net/rest/api/2/issue/10002","key":"ABC-1","fields":{"issuetype":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories
111
+ track functionality or features expressed as user goals.","iconUrl":"https://rover-dev-benm.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"project":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/project/10002","id":"10002","key":"ABC","name":"ABC","projectTypeKey":"software","avatarUrls":{"48x48":"https://rover-dev-benm.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://rover-dev-benm.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://rover-dev-benm.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://rover-dev-benm.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"resolutiondate":null,"workratio":-1,"watches":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/issue/ABC-1/watchers","watchCount":1,"isWatching":true},"lastViewed":null,"created":"2018-06-10T16:06:17.205-0700","customfield_10020":null,"priority":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/priority/3","iconUrl":"https://rover-dev-benm.atlassian.net/images/icons/priorities/medium.svg","name":"Medium","id":"3"},"labels":[],"customfield_10016":null,"customfield_10019":null,"timeestimate":null,"aggregatetimeoriginalestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2018-06-10T16:35:27.802-0700","status":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/status/10003","description":"","iconUrl":"https://rover-dev-benm.atlassian.net/","name":"To
112
+ Do","id":"10003","statusCategory":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"To
113
+ Do"}},"components":[{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/component/10007","id":"10007","name":"ComponentB"}],"timeoriginalestimate":null,"description":null,"customfield_10010":null,"customfield_10011":null,"customfield_10012":null,"customfield_10013":null,"customfield_10014":[],"customfield_10015":null,"timetracking":{},"customfield_10006":null,"customfield_10007":null,"security":null,"customfield_10008":[],"customfield_10009":"0|i0000f:","attachment":[],"aggregatetimeestimate":null,"summary":"do
114
+ abc thing","creator":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/user?username=admin","name":"admin","key":"admin","accountId":"5ac51680c5459746a4cf0e94","emailAddress":"ben.menesini@rover.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Ben
115
+ Menesini","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/user?username=admin","name":"admin","key":"admin","accountId":"5ac51680c5459746a4cf0e94","emailAddress":"ben.menesini@rover.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Ben
116
+ Menesini","active":true,"timeZone":"America/Los_Angeles"},"customfield_10000":"{}","aggregateprogress":{"progress":0,"total":0},"customfield_10001":null,"customfield_10002":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"votes":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/issue/ABC-1/votes","votes":0,"hasVoted":false},"comment":{"comments":[],"maxResults":0,"total":0,"startAt":0},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]}}}'
117
+ http_version:
118
+ recorded_at: Mon, 11 Jun 2018 01:16:39 GMT
119
+ - request:
120
+ method: get
121
+ uri: https://rover-dev-benm.atlassian.net/rest/api/2/issue/XYZ-1
122
+ body:
123
+ encoding: US-ASCII
124
+ string: ''
125
+ headers:
126
+ Accept:
127
+ - application/json
128
+ Accept-Encoding:
129
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
130
+ User-Agent:
131
+ - Ruby
132
+ Authorization:
133
+ - Basic ABC123
134
+ response:
135
+ status:
136
+ code: 200
137
+ message: OK
138
+ headers:
139
+ Server:
140
+ - Atlassian Proxy/0.1.256
141
+ Vary:
142
+ - Accept-Encoding
143
+ Cache-Control:
144
+ - no-cache, no-store, no-transform
145
+ Content-Type:
146
+ - application/json;charset=UTF-8
147
+ Strict-Transport-Security:
148
+ - max-age=315360000; includeSubDomains; preload
149
+ Date:
150
+ - Mon, 11 Jun 2018 01:16:40 GMT
151
+ X-Arequestid:
152
+ - 8d7224dc-55be-4bdf-af42-fbbe11137425
153
+ X-Xss-Protection:
154
+ - 1; mode=block
155
+ Transfer-Encoding:
156
+ - chunked
157
+ X-Ausername:
158
+ - admin
159
+ X-Content-Type-Options:
160
+ - nosniff
161
+ Connection:
162
+ - keep-alive
163
+ Set-Cookie:
164
+ - atlassian.xsrf.token=8ca80240-a572-45b1-9934-46d77b094faf_40066027e206dfd93b6c75de972c61e3b372d47b_lin;
165
+ Path=/; Secure
166
+ body:
167
+ encoding: ASCII-8BIT
168
+ string: '{"expand":"renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations","id":"10003","self":"https://rover-dev-benm.atlassian.net/rest/api/2/issue/10003","key":"XYZ-1","fields":{"issuetype":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/issuetype/10001","id":"10001","description":"Stories
169
+ track functionality or features expressed as user goals.","iconUrl":"https://rover-dev-benm.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10315&avatarType=issuetype","name":"Story","subtask":false,"avatarId":10315},"timespent":null,"project":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/project/10003","id":"10003","key":"XYZ","name":"XYZ","projectTypeKey":"software","avatarUrls":{"48x48":"https://rover-dev-benm.atlassian.net/secure/projectavatar?avatarId=10324","24x24":"https://rover-dev-benm.atlassian.net/secure/projectavatar?size=small&avatarId=10324","16x16":"https://rover-dev-benm.atlassian.net/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"https://rover-dev-benm.atlassian.net/secure/projectavatar?size=medium&avatarId=10324"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"resolutiondate":null,"workratio":-1,"lastViewed":null,"watches":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/issue/XYZ-1/watchers","watchCount":1,"isWatching":true},"created":"2018-06-10T16:06:37.918-0700","customfield_10020":null,"priority":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/priority/3","iconUrl":"https://rover-dev-benm.atlassian.net/images/icons/priorities/medium.svg","name":"Medium","id":"3"},"labels":[],"customfield_10016":null,"customfield_10019":null,"timeestimate":null,"aggregatetimeoriginalestimate":null,"versions":[],"issuelinks":[],"assignee":null,"updated":"2018-06-10T16:36:58.216-0700","status":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/status/10003","description":"","iconUrl":"https://rover-dev-benm.atlassian.net/","name":"To
170
+ Do","id":"10003","statusCategory":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"To
171
+ Do"}},"components":[{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/component/10011","id":"10011","name":"ComponentC"}],"timeoriginalestimate":null,"description":null,"customfield_10010":null,"customfield_10011":null,"customfield_10012":null,"customfield_10013":null,"customfield_10014":[],"customfield_10015":null,"timetracking":{},"customfield_10006":null,"security":null,"customfield_10007":null,"customfield_10008":[],"aggregatetimeestimate":null,"attachment":[],"customfield_10009":"0|i0000n:","summary":"do
172
+ xyz thing","creator":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/user?username=admin","name":"admin","key":"admin","accountId":"5ac51680c5459746a4cf0e94","emailAddress":"ben.menesini@rover.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Ben
173
+ Menesini","active":true,"timeZone":"America/Los_Angeles"},"subtasks":[],"reporter":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/user?username=admin","name":"admin","key":"admin","accountId":"5ac51680c5459746a4cf0e94","emailAddress":"ben.menesini@rover.com","avatarUrls":{"48x48":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue","24x24":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=24&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D24%26noRedirect%3Dtrue","16x16":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=16&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D16%26noRedirect%3Dtrue","32x32":"https://avatar-cdn.atlassian.com/ced2c1a305df6b35cd77e99ec6cfe02a?s=32&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fced2c1a305df6b35cd77e99ec6cfe02a%3Fd%3Dmm%26s%3D32%26noRedirect%3Dtrue"},"displayName":"Ben
174
+ Menesini","active":true,"timeZone":"America/Los_Angeles"},"aggregateprogress":{"progress":0,"total":0},"customfield_10000":"{}","customfield_10001":null,"customfield_10002":null,"environment":null,"duedate":null,"progress":{"progress":0,"total":0},"comment":{"comments":[],"maxResults":0,"total":0,"startAt":0},"votes":{"self":"https://rover-dev-benm.atlassian.net/rest/api/2/issue/XYZ-1/votes","votes":0,"hasVoted":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]}}}'
175
+ http_version:
176
+ recorded_at: Mon, 11 Jun 2018 01:16:40 GMT
177
+ recorded_with: VCR 4.0.0
@@ -0,0 +1,167 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.github.com/repos/artsy/eigen/pulls/800
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/vnd.github.v3+json
12
+ User-Agent:
13
+ - Octokit Ruby Gem 4.9.0
14
+ Content-Type:
15
+ - application/json
16
+ Authorization:
17
+ - token ABC123
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Date:
26
+ - Sun, 10 Jun 2018 08:32:45 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Server:
32
+ - GitHub.com
33
+ Status:
34
+ - 200 OK
35
+ X-Ratelimit-Limit:
36
+ - '5000'
37
+ X-Ratelimit-Remaining:
38
+ - '4999'
39
+ X-Ratelimit-Reset:
40
+ - '1528623165'
41
+ Cache-Control:
42
+ - private, max-age=60, s-maxage=60
43
+ Vary:
44
+ - Accept, Authorization, Cookie, X-GitHub-OTP
45
+ - Accept-Encoding
46
+ Etag:
47
+ - W/"6fe4d4cf4d2f7bdc1f7f6e2db5f70685"
48
+ Last-Modified:
49
+ - Fri, 18 May 2018 16:19:54 GMT
50
+ X-Oauth-Scopes:
51
+ - public_repo
52
+ X-Accepted-Oauth-Scopes:
53
+ - ''
54
+ X-Github-Media-Type:
55
+ - github.v3; format=json
56
+ Access-Control-Expose-Headers:
57
+ - ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining,
58
+ X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
59
+ Access-Control-Allow-Origin:
60
+ - "*"
61
+ Strict-Transport-Security:
62
+ - max-age=31536000; includeSubdomains; preload
63
+ X-Frame-Options:
64
+ - deny
65
+ X-Content-Type-Options:
66
+ - nosniff
67
+ X-Xss-Protection:
68
+ - 1; mode=block
69
+ Referrer-Policy:
70
+ - origin-when-cross-origin, strict-origin-when-cross-origin
71
+ Content-Security-Policy:
72
+ - default-src 'none'
73
+ X-Runtime-Rack:
74
+ - '0.099317'
75
+ X-Github-Request-Id:
76
+ - F7AE:7BFC:E6FCA1:1223735:5B1CE22D
77
+ body:
78
+ encoding: ASCII-8BIT
79
+ string: '{"url":"https://api.github.com/repos/artsy/eigen/pulls/800","id":44984379,"node_id":"MDExOlB1bGxSZXF1ZXN0NDQ5ODQzNzk=","html_url":"https://github.com/artsy/eigen/pull/800","diff_url":"https://github.com/artsy/eigen/pull/800.diff","patch_url":"https://github.com/artsy/eigen/pull/800.patch","issue_url":"https://api.github.com/repos/artsy/eigen/issues/800","number":800,"state":"closed","locked":false,"title":"[DEV-1] some title with issue keys in it ABC-1","user":{"login":"orta","id":49038,"node_id":"MDQ6VXNlcjQ5MDM4","avatar_url":"https://avatars2.githubusercontent.com/u/49038?v=4","gravatar_id":"","url":"https://api.github.com/users/orta","html_url":"https://github.com/orta","followers_url":"https://api.github.com/users/orta/followers","following_url":"https://api.github.com/users/orta/following{/other_user}","gists_url":"https://api.github.com/users/orta/gists{/gist_id}","starred_url":"https://api.github.com/users/orta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/orta/subscriptions","organizations_url":"https://api.github.com/users/orta/orgs","repos_url":"https://api.github.com/users/orta/repos","events_url":"https://api.github.com/users/orta/events{/privacy}","received_events_url":"https://api.github.com/users/orta/received_events","type":"User","site_admin":false},"body":"this is a body with a key in it XYZ-1","created_at":"2015-09-14T21:38:28Z","updated_at":"2015-12-14T22:37:26Z","closed_at":"2015-09-17T18:52:12Z","merged_at":null,"merge_commit_sha":"38a1e19cbf41b06cac224e36e962f42f09994a83","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/artsy/eigen/pulls/800/commits","review_comments_url":"https://api.github.com/repos/artsy/eigen/pulls/800/comments","review_comment_url":"https://api.github.com/repos/artsy/eigen/pulls/comments{/number}","comments_url":"https://api.github.com/repos/artsy/eigen/issues/800/comments","statuses_url":"https://api.github.com/repos/artsy/eigen/statuses/561827e46167077b5e53515b4b7349b8ae04610b","head":{"label":"artsy:orta-circle_ci2","ref":"orta-circle_ci2","sha":"561827e46167077b5e53515b4b7349b8ae04610b","user":{"login":"artsy","id":546231,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0NjIzMQ==","avatar_url":"https://avatars3.githubusercontent.com/u/546231?v=4","gravatar_id":"","url":"https://api.github.com/users/artsy","html_url":"https://github.com/artsy","followers_url":"https://api.github.com/users/artsy/followers","following_url":"https://api.github.com/users/artsy/following{/other_user}","gists_url":"https://api.github.com/users/artsy/gists{/gist_id}","starred_url":"https://api.github.com/users/artsy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/artsy/subscriptions","organizations_url":"https://api.github.com/users/artsy/orgs","repos_url":"https://api.github.com/users/artsy/repos","events_url":"https://api.github.com/users/artsy/events{/privacy}","received_events_url":"https://api.github.com/users/artsy/received_events","type":"Organization","site_admin":false},"repo":{"id":29702213,"node_id":"MDEwOlJlcG9zaXRvcnkyOTcwMjIxMw==","name":"eigen","full_name":"artsy/eigen","owner":{"login":"artsy","id":546231,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0NjIzMQ==","avatar_url":"https://avatars3.githubusercontent.com/u/546231?v=4","gravatar_id":"","url":"https://api.github.com/users/artsy","html_url":"https://github.com/artsy","followers_url":"https://api.github.com/users/artsy/followers","following_url":"https://api.github.com/users/artsy/following{/other_user}","gists_url":"https://api.github.com/users/artsy/gists{/gist_id}","starred_url":"https://api.github.com/users/artsy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/artsy/subscriptions","organizations_url":"https://api.github.com/users/artsy/orgs","repos_url":"https://api.github.com/users/artsy/repos","events_url":"https://api.github.com/users/artsy/events{/privacy}","received_events_url":"https://api.github.com/users/artsy/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/artsy/eigen","description":"The
80
+ Art World in Your Pocket or Your Trendy Tech Company''s Tote, Artsy''s iOS
81
+ app.","fork":false,"url":"https://api.github.com/repos/artsy/eigen","forks_url":"https://api.github.com/repos/artsy/eigen/forks","keys_url":"https://api.github.com/repos/artsy/eigen/keys{/key_id}","collaborators_url":"https://api.github.com/repos/artsy/eigen/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/artsy/eigen/teams","hooks_url":"https://api.github.com/repos/artsy/eigen/hooks","issue_events_url":"https://api.github.com/repos/artsy/eigen/issues/events{/number}","events_url":"https://api.github.com/repos/artsy/eigen/events","assignees_url":"https://api.github.com/repos/artsy/eigen/assignees{/user}","branches_url":"https://api.github.com/repos/artsy/eigen/branches{/branch}","tags_url":"https://api.github.com/repos/artsy/eigen/tags","blobs_url":"https://api.github.com/repos/artsy/eigen/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/artsy/eigen/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/artsy/eigen/git/refs{/sha}","trees_url":"https://api.github.com/repos/artsy/eigen/git/trees{/sha}","statuses_url":"https://api.github.com/repos/artsy/eigen/statuses/{sha}","languages_url":"https://api.github.com/repos/artsy/eigen/languages","stargazers_url":"https://api.github.com/repos/artsy/eigen/stargazers","contributors_url":"https://api.github.com/repos/artsy/eigen/contributors","subscribers_url":"https://api.github.com/repos/artsy/eigen/subscribers","subscription_url":"https://api.github.com/repos/artsy/eigen/subscription","commits_url":"https://api.github.com/repos/artsy/eigen/commits{/sha}","git_commits_url":"https://api.github.com/repos/artsy/eigen/git/commits{/sha}","comments_url":"https://api.github.com/repos/artsy/eigen/comments{/number}","issue_comment_url":"https://api.github.com/repos/artsy/eigen/issues/comments{/number}","contents_url":"https://api.github.com/repos/artsy/eigen/contents/{+path}","compare_url":"https://api.github.com/repos/artsy/eigen/compare/{base}...{head}","merges_url":"https://api.github.com/repos/artsy/eigen/merges","archive_url":"https://api.github.com/repos/artsy/eigen/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/artsy/eigen/downloads","issues_url":"https://api.github.com/repos/artsy/eigen/issues{/number}","pulls_url":"https://api.github.com/repos/artsy/eigen/pulls{/number}","milestones_url":"https://api.github.com/repos/artsy/eigen/milestones{/number}","notifications_url":"https://api.github.com/repos/artsy/eigen/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/artsy/eigen/labels{/name}","releases_url":"https://api.github.com/repos/artsy/eigen/releases{/id}","deployments_url":"https://api.github.com/repos/artsy/eigen/deployments","created_at":"2015-01-22T21:52:39Z","updated_at":"2018-06-08T09:35:58Z","pushed_at":"2018-06-07T09:42:39Z","git_url":"git://github.com/artsy/eigen.git","ssh_url":"git@github.com:artsy/eigen.git","clone_url":"https://github.com/artsy/eigen.git","svn_url":"https://github.com/artsy/eigen","homepage":"http://iphone.artsy.net","size":201857,"stargazers_count":2331,"watchers_count":2331,"language":"Objective-C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":357,"mirror_url":null,"archived":false,"open_issues_count":35,"license":{"key":"mit","name":"MIT
82
+ License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":357,"open_issues":35,"watchers":2331,"default_branch":"master"}},"base":{"label":"artsy:master","ref":"master","sha":"704dc55988c6996f69b6873c2424be7d1de67bbe","user":{"login":"artsy","id":546231,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0NjIzMQ==","avatar_url":"https://avatars3.githubusercontent.com/u/546231?v=4","gravatar_id":"","url":"https://api.github.com/users/artsy","html_url":"https://github.com/artsy","followers_url":"https://api.github.com/users/artsy/followers","following_url":"https://api.github.com/users/artsy/following{/other_user}","gists_url":"https://api.github.com/users/artsy/gists{/gist_id}","starred_url":"https://api.github.com/users/artsy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/artsy/subscriptions","organizations_url":"https://api.github.com/users/artsy/orgs","repos_url":"https://api.github.com/users/artsy/repos","events_url":"https://api.github.com/users/artsy/events{/privacy}","received_events_url":"https://api.github.com/users/artsy/received_events","type":"Organization","site_admin":false},"repo":{"id":29702213,"node_id":"MDEwOlJlcG9zaXRvcnkyOTcwMjIxMw==","name":"eigen","full_name":"artsy/eigen","owner":{"login":"artsy","id":546231,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0NjIzMQ==","avatar_url":"https://avatars3.githubusercontent.com/u/546231?v=4","gravatar_id":"","url":"https://api.github.com/users/artsy","html_url":"https://github.com/artsy","followers_url":"https://api.github.com/users/artsy/followers","following_url":"https://api.github.com/users/artsy/following{/other_user}","gists_url":"https://api.github.com/users/artsy/gists{/gist_id}","starred_url":"https://api.github.com/users/artsy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/artsy/subscriptions","organizations_url":"https://api.github.com/users/artsy/orgs","repos_url":"https://api.github.com/users/artsy/repos","events_url":"https://api.github.com/users/artsy/events{/privacy}","received_events_url":"https://api.github.com/users/artsy/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/artsy/eigen","description":"The
83
+ Art World in Your Pocket or Your Trendy Tech Company''s Tote, Artsy''s iOS
84
+ app.","fork":false,"url":"https://api.github.com/repos/artsy/eigen","forks_url":"https://api.github.com/repos/artsy/eigen/forks","keys_url":"https://api.github.com/repos/artsy/eigen/keys{/key_id}","collaborators_url":"https://api.github.com/repos/artsy/eigen/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/artsy/eigen/teams","hooks_url":"https://api.github.com/repos/artsy/eigen/hooks","issue_events_url":"https://api.github.com/repos/artsy/eigen/issues/events{/number}","events_url":"https://api.github.com/repos/artsy/eigen/events","assignees_url":"https://api.github.com/repos/artsy/eigen/assignees{/user}","branches_url":"https://api.github.com/repos/artsy/eigen/branches{/branch}","tags_url":"https://api.github.com/repos/artsy/eigen/tags","blobs_url":"https://api.github.com/repos/artsy/eigen/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/artsy/eigen/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/artsy/eigen/git/refs{/sha}","trees_url":"https://api.github.com/repos/artsy/eigen/git/trees{/sha}","statuses_url":"https://api.github.com/repos/artsy/eigen/statuses/{sha}","languages_url":"https://api.github.com/repos/artsy/eigen/languages","stargazers_url":"https://api.github.com/repos/artsy/eigen/stargazers","contributors_url":"https://api.github.com/repos/artsy/eigen/contributors","subscribers_url":"https://api.github.com/repos/artsy/eigen/subscribers","subscription_url":"https://api.github.com/repos/artsy/eigen/subscription","commits_url":"https://api.github.com/repos/artsy/eigen/commits{/sha}","git_commits_url":"https://api.github.com/repos/artsy/eigen/git/commits{/sha}","comments_url":"https://api.github.com/repos/artsy/eigen/comments{/number}","issue_comment_url":"https://api.github.com/repos/artsy/eigen/issues/comments{/number}","contents_url":"https://api.github.com/repos/artsy/eigen/contents/{+path}","compare_url":"https://api.github.com/repos/artsy/eigen/compare/{base}...{head}","merges_url":"https://api.github.com/repos/artsy/eigen/merges","archive_url":"https://api.github.com/repos/artsy/eigen/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/artsy/eigen/downloads","issues_url":"https://api.github.com/repos/artsy/eigen/issues{/number}","pulls_url":"https://api.github.com/repos/artsy/eigen/pulls{/number}","milestones_url":"https://api.github.com/repos/artsy/eigen/milestones{/number}","notifications_url":"https://api.github.com/repos/artsy/eigen/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/artsy/eigen/labels{/name}","releases_url":"https://api.github.com/repos/artsy/eigen/releases{/id}","deployments_url":"https://api.github.com/repos/artsy/eigen/deployments","created_at":"2015-01-22T21:52:39Z","updated_at":"2018-06-08T09:35:58Z","pushed_at":"2018-06-07T09:42:39Z","git_url":"git://github.com/artsy/eigen.git","ssh_url":"git@github.com:artsy/eigen.git","clone_url":"https://github.com/artsy/eigen.git","svn_url":"https://github.com/artsy/eigen","homepage":"http://iphone.artsy.net","size":201857,"stargazers_count":2331,"watchers_count":2331,"language":"Objective-C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":357,"mirror_url":null,"archived":false,"open_issues_count":35,"license":{"key":"mit","name":"MIT
85
+ License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":357,"open_issues":35,"watchers":2331,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/artsy/eigen/pulls/800"},"html":{"href":"https://github.com/artsy/eigen/pull/800"},"issue":{"href":"https://api.github.com/repos/artsy/eigen/issues/800"},"comments":{"href":"https://api.github.com/repos/artsy/eigen/issues/800/comments"},"review_comments":{"href":"https://api.github.com/repos/artsy/eigen/pulls/800/comments"},"review_comment":{"href":"https://api.github.com/repos/artsy/eigen/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/artsy/eigen/pulls/800/commits"},"statuses":{"href":"https://api.github.com/repos/artsy/eigen/statuses/561827e46167077b5e53515b4b7349b8ae04610b"}},"author_association":"MEMBER","merged":false,"mergeable":false,"rebaseable":false,"mergeable_state":"dirty","merged_by":null,"comments":8,"review_comments":0,"maintainer_can_modify":false,"commits":3,"additions":60,"deletions":77,"changed_files":10}'
86
+ http_version:
87
+ recorded_at: Sun, 10 Jun 2018 08:32:45 GMT
88
+ - request:
89
+ method: get
90
+ uri: https://api.github.com/repos/artsy/eigen/issues/800
91
+ body:
92
+ encoding: US-ASCII
93
+ string: ''
94
+ headers:
95
+ Accept:
96
+ - application/vnd.github.v3+json
97
+ User-Agent:
98
+ - Octokit Ruby Gem 4.9.0
99
+ Content-Type:
100
+ - application/json
101
+ Authorization:
102
+ - token ABC123
103
+ Accept-Encoding:
104
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
105
+ response:
106
+ status:
107
+ code: 200
108
+ message: OK
109
+ headers:
110
+ Date:
111
+ - Sun, 10 Jun 2018 08:32:45 GMT
112
+ Content-Type:
113
+ - application/json; charset=utf-8
114
+ Transfer-Encoding:
115
+ - chunked
116
+ Server:
117
+ - GitHub.com
118
+ Status:
119
+ - 200 OK
120
+ X-Ratelimit-Limit:
121
+ - '5000'
122
+ X-Ratelimit-Remaining:
123
+ - '4998'
124
+ X-Ratelimit-Reset:
125
+ - '1528623165'
126
+ Cache-Control:
127
+ - private, max-age=60, s-maxage=60
128
+ Vary:
129
+ - Accept, Authorization, Cookie, X-GitHub-OTP
130
+ - Accept-Encoding
131
+ Etag:
132
+ - W/"1f3136ab9bc2d15839bfa57a1fa2d687"
133
+ Last-Modified:
134
+ - Fri, 18 May 2018 16:19:54 GMT
135
+ X-Oauth-Scopes:
136
+ - public_repo
137
+ X-Accepted-Oauth-Scopes:
138
+ - repo
139
+ X-Github-Media-Type:
140
+ - github.v3; format=json
141
+ Access-Control-Expose-Headers:
142
+ - ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining,
143
+ X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
144
+ Access-Control-Allow-Origin:
145
+ - "*"
146
+ Strict-Transport-Security:
147
+ - max-age=31536000; includeSubdomains; preload
148
+ X-Frame-Options:
149
+ - deny
150
+ X-Content-Type-Options:
151
+ - nosniff
152
+ X-Xss-Protection:
153
+ - 1; mode=block
154
+ Referrer-Policy:
155
+ - origin-when-cross-origin, strict-origin-when-cross-origin
156
+ Content-Security-Policy:
157
+ - default-src 'none'
158
+ X-Runtime-Rack:
159
+ - '0.062097'
160
+ X-Github-Request-Id:
161
+ - F7AF:7BFC:E6FCA7:1223747:5B1CE22D
162
+ body:
163
+ encoding: ASCII-8BIT
164
+ string: '{"url":"https://api.github.com/repos/artsy/eigen/issues/800","repository_url":"https://api.github.com/repos/artsy/eigen","labels_url":"https://api.github.com/repos/artsy/eigen/issues/800/labels{/name}","comments_url":"https://api.github.com/repos/artsy/eigen/issues/800/comments","events_url":"https://api.github.com/repos/artsy/eigen/issues/800/events","html_url":"https://github.com/artsy/eigen/pull/800","id":106433441,"node_id":"MDExOlB1bGxSZXF1ZXN0NDQ5ODQzNzk=","number":800,"title":"[DEV-1] some title with issue keys in it ABC-1","user":{"login":"orta","id":49038,"node_id":"MDQ6VXNlcjQ5MDM4","avatar_url":"https://avatars2.githubusercontent.com/u/49038?v=4","gravatar_id":"","url":"https://api.github.com/users/orta","html_url":"https://github.com/orta","followers_url":"https://api.github.com/users/orta/followers","following_url":"https://api.github.com/users/orta/following{/other_user}","gists_url":"https://api.github.com/users/orta/gists{/gist_id}","starred_url":"https://api.github.com/users/orta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/orta/subscriptions","organizations_url":"https://api.github.com/users/orta/orgs","repos_url":"https://api.github.com/users/orta/repos","events_url":"https://api.github.com/users/orta/events{/privacy}","received_events_url":"https://api.github.com/users/orta/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2015-09-14T21:38:28Z","updated_at":"2015-12-14T22:37:26Z","closed_at":"2015-09-17T18:52:12Z","author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/artsy/eigen/pulls/800","html_url":"https://github.com/artsy/eigen/pull/800","diff_url":"https://github.com/artsy/eigen/pull/800.diff","patch_url":"https://github.com/artsy/eigen/pull/800.patch"},"body":"this is a body with a key in it XYZ-1","closed_by":{"login":"orta","id":49038,"node_id":"MDQ6VXNlcjQ5MDM4","avatar_url":"https://avatars2.githubusercontent.com/u/49038?v=4","gravatar_id":"","url":"https://api.github.com/users/orta","html_url":"https://github.com/orta","followers_url":"https://api.github.com/users/orta/followers","following_url":"https://api.github.com/users/orta/following{/other_user}","gists_url":"https://api.github.com/users/orta/gists{/gist_id}","starred_url":"https://api.github.com/users/orta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/orta/subscriptions","organizations_url":"https://api.github.com/users/orta/orgs","repos_url":"https://api.github.com/users/orta/repos","events_url":"https://api.github.com/users/orta/events{/privacy}","received_events_url":"https://api.github.com/users/orta/received_events","type":"User","site_admin":false}}'
165
+ http_version:
166
+ recorded_at: Sun, 10 Jun 2018 08:32:45 GMT
167
+ recorded_with: VCR 4.0.0