danger-jira_sync 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.env.sample +4 -0
- data/.gitignore +6 -0
- data/.rubocop.yml +152 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +12 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +177 -0
- data/Guardfile +21 -0
- data/LICENSE.txt +22 -0
- data/README.md +67 -0
- data/Rakefile +25 -0
- data/danger-jira_sync.gemspec +58 -0
- data/lib/danger_jira_sync.rb +3 -0
- data/lib/danger_plugin.rb +3 -0
- data/lib/jira_sync/gem_version.rb +5 -0
- data/lib/jira_sync/plugin.rb +130 -0
- data/spec/fixtures/vcr_cassettes/default_success.yml +177 -0
- data/spec/fixtures/vcr_cassettes/pull_request.yml +167 -0
- data/spec/jira_sync_spec.rb +299 -0
- data/spec/spec_helper.rb +87 -0
- metadata +293 -0
@@ -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
|