chore: Add more Git unit tests (#375)
parent
621ad6ba71
commit
d11aeaf26b
|
|
@ -117,7 +117,7 @@ public class GithubApiClient {
|
||||||
String id, String username, String repoName, String authenticationToken)
|
String id, String username, String repoName, String authenticationToken)
|
||||||
throws ScmItemNotFoundException, ScmCommunicationException, ScmBadRequestException {
|
throws ScmItemNotFoundException, ScmCommunicationException, ScmBadRequestException {
|
||||||
final URI uri =
|
final URI uri =
|
||||||
apiServerUrl.resolve(String.format("./repos/%1s/%2s/pulls/%3s", username, repoName, id));
|
apiServerUrl.resolve(String.format("./repos/%s/%s/pulls/%s", username, repoName, id));
|
||||||
HttpRequest request = buildGithubApiRequest(uri, authenticationToken);
|
HttpRequest request = buildGithubApiRequest(uri, authenticationToken);
|
||||||
LOG.trace("executeRequest={}", request);
|
LOG.trace("executeRequest={}", request);
|
||||||
return executeRequest(
|
return executeRequest(
|
||||||
|
|
|
||||||
|
|
@ -17,16 +17,25 @@ import static com.github.tomakehurst.wiremock.client.WireMock.get;
|
||||||
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
|
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
|
||||||
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
|
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
|
||||||
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
|
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
|
||||||
|
import static java.net.HttpURLConnection.HTTP_BAD_GATEWAY;
|
||||||
|
import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
|
||||||
|
import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
|
||||||
|
import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
|
||||||
import static org.testng.Assert.assertEquals;
|
import static org.testng.Assert.assertEquals;
|
||||||
import static org.testng.Assert.assertEqualsNoOrder;
|
import static org.testng.Assert.assertEqualsNoOrder;
|
||||||
import static org.testng.Assert.assertFalse;
|
import static org.testng.Assert.assertFalse;
|
||||||
import static org.testng.Assert.assertNotNull;
|
import static org.testng.Assert.assertNotNull;
|
||||||
|
import static org.testng.Assert.assertNull;
|
||||||
import static org.testng.Assert.assertTrue;
|
import static org.testng.Assert.assertTrue;
|
||||||
|
|
||||||
import com.github.tomakehurst.wiremock.WireMockServer;
|
import com.github.tomakehurst.wiremock.WireMockServer;
|
||||||
import com.github.tomakehurst.wiremock.client.WireMock;
|
import com.github.tomakehurst.wiremock.client.WireMock;
|
||||||
import com.github.tomakehurst.wiremock.common.Slf4jNotifier;
|
import com.github.tomakehurst.wiremock.common.Slf4jNotifier;
|
||||||
import com.google.common.net.HttpHeaders;
|
import com.google.common.net.HttpHeaders;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import org.eclipse.che.api.factory.server.scm.exception.ScmBadRequestException;
|
||||||
|
import org.eclipse.che.api.factory.server.scm.exception.ScmCommunicationException;
|
||||||
|
import org.eclipse.che.api.factory.server.scm.exception.ScmItemNotFoundException;
|
||||||
import org.mockito.testng.MockitoTestNGListener;
|
import org.mockito.testng.MockitoTestNGListener;
|
||||||
import org.testng.annotations.AfterMethod;
|
import org.testng.annotations.AfterMethod;
|
||||||
import org.testng.annotations.BeforeMethod;
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
|
@ -55,6 +64,44 @@ public class GithubApiClientTest {
|
||||||
wireMockServer.stop();
|
wireMockServer.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldUseDefaultApiUrl() throws Exception {
|
||||||
|
// given
|
||||||
|
client = new GithubApiClient("https://github.com");
|
||||||
|
Field serverUrl = client.getClass().getDeclaredField("apiServerUrl");
|
||||||
|
serverUrl.setAccessible(true);
|
||||||
|
// then
|
||||||
|
assertEquals(serverUrl.get(client).toString(), "https://api.github.com/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldUseDefaultApiUrlWithNull() throws Exception {
|
||||||
|
// given
|
||||||
|
client = new GithubApiClient(null);
|
||||||
|
Field serverUrl = client.getClass().getDeclaredField("apiServerUrl");
|
||||||
|
serverUrl.setAccessible(true);
|
||||||
|
// then
|
||||||
|
assertEquals(serverUrl.get(client).toString(), "https://api.github.com/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldUseDefaultApiUrlWithEmpty() throws Exception {
|
||||||
|
// given
|
||||||
|
client = new GithubApiClient("");
|
||||||
|
Field serverUrl = client.getClass().getDeclaredField("apiServerUrl");
|
||||||
|
serverUrl.setAccessible(true);
|
||||||
|
// then
|
||||||
|
assertEquals(serverUrl.get(client).toString(), "https://api.github.com/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = ScmCommunicationException.class)
|
||||||
|
public void shouldThrowExceptionOnUserParseError() throws Exception {
|
||||||
|
// given
|
||||||
|
stubFor(get(urlEqualTo("/api/v3/user")).willReturn(aResponse().withBody("invalid value")));
|
||||||
|
// when
|
||||||
|
client.getUser("token");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetUser() throws Exception {
|
public void testGetUser() throws Exception {
|
||||||
stubFor(
|
stubFor(
|
||||||
|
|
@ -78,6 +125,35 @@ public class GithubApiClientTest {
|
||||||
user.getName(), "Github User", "GitHub user name was not parsed properly by client");
|
user.getName(), "Github User", "GitHub user name was not parsed properly by client");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetPullRequest() throws Exception {
|
||||||
|
// given
|
||||||
|
stubFor(
|
||||||
|
get(urlEqualTo("/api/v3/repos/user/repo/pulls/id"))
|
||||||
|
.withHeader(HttpHeaders.AUTHORIZATION, equalTo("token token1"))
|
||||||
|
.willReturn(
|
||||||
|
aResponse()
|
||||||
|
.withHeader("Content-Type", "application/json; charset=utf-8")
|
||||||
|
.withBodyFile("github/rest/pullRequest/response.json")));
|
||||||
|
|
||||||
|
// when
|
||||||
|
GithubPullRequest pullRequest = client.getPullRequest("id", "user", "repo", "token1");
|
||||||
|
// then
|
||||||
|
assertNotNull(pullRequest);
|
||||||
|
assertNotNull(pullRequest.getHead());
|
||||||
|
assertEquals(pullRequest.getState(), "open");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = ScmCommunicationException.class)
|
||||||
|
public void shouldThrowExceptionOnPullRequestParseError() throws Exception {
|
||||||
|
// given
|
||||||
|
stubFor(
|
||||||
|
get(urlEqualTo("/api/v3/repos/user/repo/pulls/id"))
|
||||||
|
.willReturn(aResponse().withBody("invalid value")));
|
||||||
|
// when
|
||||||
|
client.getPullRequest("id", "user", "repo", "token1");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetTokenScopes() throws Exception {
|
public void testGetTokenScopes() throws Exception {
|
||||||
stubFor(
|
stubFor(
|
||||||
|
|
@ -146,4 +222,51 @@ public class GithubApiClientTest {
|
||||||
public void shouldReturnTrueWhenConnectedToGithub() {
|
public void shouldReturnTrueWhenConnectedToGithub() {
|
||||||
assertTrue(client.isConnected(wireMockServer.url("/")));
|
assertTrue(client.isConnected(wireMockServer.url("/")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test()
|
||||||
|
public void shouldReturnNull() throws Exception {
|
||||||
|
// given
|
||||||
|
stubFor(get(urlEqualTo("/api/v3/user")).willReturn(aResponse().withStatus(HTTP_NO_CONTENT)));
|
||||||
|
// when
|
||||||
|
GithubUser user = client.getUser("token");
|
||||||
|
// then
|
||||||
|
assertNull(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(
|
||||||
|
expectedExceptions = ScmBadRequestException.class,
|
||||||
|
expectedExceptionsMessageRegExp = "bad request")
|
||||||
|
public void shouldThrowExceptionOnBadRequestError() throws Exception {
|
||||||
|
// given
|
||||||
|
stubFor(
|
||||||
|
get(urlEqualTo("/api/v3/user"))
|
||||||
|
.willReturn(aResponse().withStatus(HTTP_BAD_REQUEST).withBody("bad request")));
|
||||||
|
// when
|
||||||
|
client.getUser("token");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(
|
||||||
|
expectedExceptions = ScmItemNotFoundException.class,
|
||||||
|
expectedExceptionsMessageRegExp = "item not found")
|
||||||
|
public void shouldThrowExceptionOnNotFoundError() throws Exception {
|
||||||
|
// given
|
||||||
|
stubFor(
|
||||||
|
get(urlEqualTo("/api/v3/user"))
|
||||||
|
.willReturn(aResponse().withStatus(HTTP_NOT_FOUND).withBody("item not found")));
|
||||||
|
// when
|
||||||
|
client.getUser("token");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(
|
||||||
|
expectedExceptions = ScmCommunicationException.class,
|
||||||
|
expectedExceptionsMessageRegExp =
|
||||||
|
"Unexpected status code 502 \\(GET http://localhost:\\d*/api/v3/user\\) 502")
|
||||||
|
public void shouldThrowExceptionOnOtherError() throws Exception {
|
||||||
|
// given
|
||||||
|
stubFor(
|
||||||
|
get(urlEqualTo("/api/v3/user"))
|
||||||
|
.willReturn(aResponse().withStatus(HTTP_BAD_GATEWAY).withBody("item not found")));
|
||||||
|
// when
|
||||||
|
client.getUser("token");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,14 +16,16 @@ import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
import org.eclipse.che.api.factory.server.scm.PersonalAccessToken;
|
import org.eclipse.che.api.factory.server.scm.PersonalAccessToken;
|
||||||
import org.eclipse.che.api.factory.server.scm.PersonalAccessTokenManager;
|
import org.eclipse.che.api.factory.server.scm.PersonalAccessTokenManager;
|
||||||
import org.eclipse.che.api.factory.server.scm.exception.UnknownScmProviderException;
|
import org.eclipse.che.api.factory.server.scm.exception.UnknownScmProviderException;
|
||||||
import org.eclipse.che.api.workspace.server.devfile.FileContentProvider;
|
import org.eclipse.che.api.workspace.server.devfile.FileContentProvider;
|
||||||
import org.eclipse.che.api.workspace.server.devfile.URLFetcher;
|
import org.eclipse.che.api.workspace.server.devfile.URLFetcher;
|
||||||
|
import org.eclipse.che.api.workspace.server.devfile.exception.DevfileException;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.Mockito;
|
|
||||||
import org.mockito.testng.MockitoTestNGListener;
|
import org.mockito.testng.MockitoTestNGListener;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
import org.testng.annotations.Listeners;
|
import org.testng.annotations.Listeners;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
|
@ -31,13 +33,20 @@ import org.testng.annotations.Test;
|
||||||
public class GithubAuthorizingFileContentProviderTest {
|
public class GithubAuthorizingFileContentProviderTest {
|
||||||
|
|
||||||
@Mock private PersonalAccessTokenManager personalAccessTokenManager;
|
@Mock private PersonalAccessTokenManager personalAccessTokenManager;
|
||||||
|
@Mock private URLFetcher urlFetcher;
|
||||||
|
private static final String URL = "https://raw.githubusercontent.com/foo/bar/devfile.yaml";
|
||||||
|
GithubUrl githubUrl;
|
||||||
|
FileContentProvider fileContentProvider;
|
||||||
|
|
||||||
|
@BeforeMethod
|
||||||
|
public void setup() {
|
||||||
|
githubUrl = new GithubUrl().withUsername("eclipse").withRepository("che");
|
||||||
|
fileContentProvider =
|
||||||
|
new GithubAuthorizingFileContentProvider(githubUrl, urlFetcher, personalAccessTokenManager);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldExpandRelativePaths() throws Exception {
|
public void shouldExpandRelativePaths() throws Exception {
|
||||||
URLFetcher urlFetcher = Mockito.mock(URLFetcher.class);
|
|
||||||
GithubUrl githubUrl = new GithubUrl().withUsername("eclipse").withRepository("che");
|
|
||||||
FileContentProvider fileContentProvider =
|
|
||||||
new GithubAuthorizingFileContentProvider(githubUrl, urlFetcher, personalAccessTokenManager);
|
|
||||||
var personalAccessToken = new PersonalAccessToken("foo", "che", "my-token");
|
var personalAccessToken = new PersonalAccessToken("foo", "che", "my-token");
|
||||||
when(personalAccessTokenManager.getAndStore(anyString())).thenReturn(personalAccessToken);
|
when(personalAccessTokenManager.getAndStore(anyString())).thenReturn(personalAccessToken);
|
||||||
fileContentProvider.fetchContent("devfile.yaml");
|
fileContentProvider.fetchContent("devfile.yaml");
|
||||||
|
|
@ -49,10 +58,6 @@ public class GithubAuthorizingFileContentProviderTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldPreserveAbsolutePaths() throws Exception {
|
public void shouldPreserveAbsolutePaths() throws Exception {
|
||||||
URLFetcher urlFetcher = Mockito.mock(URLFetcher.class);
|
|
||||||
GithubUrl githubUrl = new GithubUrl().withUsername("eclipse").withRepository("che");
|
|
||||||
FileContentProvider fileContentProvider =
|
|
||||||
new GithubAuthorizingFileContentProvider(githubUrl, urlFetcher, personalAccessTokenManager);
|
|
||||||
String url = "https://raw.githubusercontent.com/foo/bar/devfile.yaml";
|
String url = "https://raw.githubusercontent.com/foo/bar/devfile.yaml";
|
||||||
var personalAccessToken = new PersonalAccessToken(url, "che", "my-token");
|
var personalAccessToken = new PersonalAccessToken(url, "che", "my-token");
|
||||||
when(personalAccessTokenManager.getAndStore(anyString())).thenReturn(personalAccessToken);
|
when(personalAccessTokenManager.getAndStore(anyString())).thenReturn(personalAccessToken);
|
||||||
|
|
@ -62,15 +67,21 @@ public class GithubAuthorizingFileContentProviderTest {
|
||||||
|
|
||||||
@Test(expectedExceptions = FileNotFoundException.class)
|
@Test(expectedExceptions = FileNotFoundException.class)
|
||||||
public void shouldThrowNotFoundForPublicRepos() throws Exception {
|
public void shouldThrowNotFoundForPublicRepos() throws Exception {
|
||||||
URLFetcher urlFetcher = Mockito.mock(URLFetcher.class);
|
|
||||||
String url = "https://raw.githubusercontent.com/foo/bar/devfile.yaml";
|
|
||||||
when(personalAccessTokenManager.getAndStore(anyString()))
|
when(personalAccessTokenManager.getAndStore(anyString()))
|
||||||
.thenThrow(UnknownScmProviderException.class);
|
.thenThrow(UnknownScmProviderException.class);
|
||||||
when(urlFetcher.fetch(eq(url))).thenThrow(FileNotFoundException.class);
|
when(urlFetcher.fetch(eq(URL))).thenThrow(FileNotFoundException.class);
|
||||||
when(urlFetcher.fetch(eq("https://github.com/eclipse/che"))).thenReturn("OK");
|
when(urlFetcher.fetch(eq("https://github.com/eclipse/che"))).thenReturn("OK");
|
||||||
GithubUrl githubUrl = new GithubUrl().withUsername("eclipse").withRepository("che");
|
fileContentProvider.fetchContent(URL);
|
||||||
FileContentProvider fileContentProvider =
|
}
|
||||||
new GithubAuthorizingFileContentProvider(githubUrl, urlFetcher, personalAccessTokenManager);
|
|
||||||
fileContentProvider.fetchContent(url);
|
@Test(expectedExceptions = DevfileException.class)
|
||||||
|
public void shouldThrowDevfileException() throws Exception {
|
||||||
|
// given
|
||||||
|
when(personalAccessTokenManager.getAndStore(anyString()))
|
||||||
|
.thenThrow(UnknownScmProviderException.class);
|
||||||
|
when(urlFetcher.fetch(eq(URL))).thenThrow(FileNotFoundException.class);
|
||||||
|
when(urlFetcher.fetch(eq("https://github.com/eclipse/che"))).thenThrow(IOException.class);
|
||||||
|
// when
|
||||||
|
fileContentProvider.fetchContent(URL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,533 @@
|
||||||
|
{
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDExOlB1bGxSZXF1ZXN0MQ==",
|
||||||
|
"html_url": "https://github.com/octocat/Hello-World/pull/1347",
|
||||||
|
"diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff",
|
||||||
|
"patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch",
|
||||||
|
"issue_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347",
|
||||||
|
"commits_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits",
|
||||||
|
"review_comments_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments",
|
||||||
|
"review_comment_url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}",
|
||||||
|
"comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments",
|
||||||
|
"statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e",
|
||||||
|
"number": 1347,
|
||||||
|
"state": "open",
|
||||||
|
"locked": true,
|
||||||
|
"title": "Amazing new feature",
|
||||||
|
"user": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VXNlcjE=",
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"body": "Please pull these awesome changes in!",
|
||||||
|
"labels": [
|
||||||
|
{
|
||||||
|
"id": 208045946,
|
||||||
|
"node_id": "MDU6TGFiZWwyMDgwNDU5NDY=",
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World/labels/bug",
|
||||||
|
"name": "bug",
|
||||||
|
"description": "Something isn't working",
|
||||||
|
"color": "f29513",
|
||||||
|
"default": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"milestone": {
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World/milestones/1",
|
||||||
|
"html_url": "https://github.com/octocat/Hello-World/milestones/v1.0",
|
||||||
|
"labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels",
|
||||||
|
"id": 1002604,
|
||||||
|
"node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==",
|
||||||
|
"number": 1,
|
||||||
|
"state": "open",
|
||||||
|
"title": "v1.0",
|
||||||
|
"description": "Tracking milestone for version 1.0",
|
||||||
|
"creator": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VXNlcjE=",
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"open_issues": 4,
|
||||||
|
"closed_issues": 8,
|
||||||
|
"created_at": "2011-04-10T20:09:31Z",
|
||||||
|
"updated_at": "2014-03-03T18:58:10Z",
|
||||||
|
"closed_at": "2013-02-12T13:22:01Z",
|
||||||
|
"due_on": "2012-10-09T23:39:01Z"
|
||||||
|
},
|
||||||
|
"active_lock_reason": "too heated",
|
||||||
|
"created_at": "2011-01-26T19:01:12Z",
|
||||||
|
"updated_at": "2011-01-26T19:01:12Z",
|
||||||
|
"closed_at": "2011-01-26T19:01:12Z",
|
||||||
|
"merged_at": "2011-01-26T19:01:12Z",
|
||||||
|
"merge_commit_sha": "e5bd3914e2e596debea16f433f57875b5b90bcd6",
|
||||||
|
"assignee": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VXNlcjE=",
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"assignees": [
|
||||||
|
{
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VXNlcjE=",
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "hubot",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VXNlcjE=",
|
||||||
|
"avatar_url": "https://github.com/images/error/hubot_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/hubot",
|
||||||
|
"html_url": "https://github.com/hubot",
|
||||||
|
"followers_url": "https://api.github.com/users/hubot/followers",
|
||||||
|
"following_url": "https://api.github.com/users/hubot/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/hubot/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/hubot/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/hubot/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/hubot/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/hubot/repos",
|
||||||
|
"events_url": "https://api.github.com/users/hubot/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/hubot/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"requested_reviewers": [
|
||||||
|
{
|
||||||
|
"login": "other_user",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VXNlcjE=",
|
||||||
|
"avatar_url": "https://github.com/images/error/other_user_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/other_user",
|
||||||
|
"html_url": "https://github.com/other_user",
|
||||||
|
"followers_url": "https://api.github.com/users/other_user/followers",
|
||||||
|
"following_url": "https://api.github.com/users/other_user/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/other_user/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/other_user/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/other_user/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/other_user/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/other_user/repos",
|
||||||
|
"events_url": "https://api.github.com/users/other_user/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/other_user/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"requested_teams": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VGVhbTE=",
|
||||||
|
"url": "https://api.github.com/teams/1",
|
||||||
|
"html_url": "https://github.com/orgs/github/teams/justice-league",
|
||||||
|
"name": "Justice League",
|
||||||
|
"slug": "justice-league",
|
||||||
|
"description": "A great team.",
|
||||||
|
"privacy": "closed",
|
||||||
|
"permission": "admin",
|
||||||
|
"members_url": "https://api.github.com/teams/1/members{/member}",
|
||||||
|
"repositories_url": "https://api.github.com/teams/1/repos"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"head": {
|
||||||
|
"label": "octocat:new-topic",
|
||||||
|
"ref": "new-topic",
|
||||||
|
"sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e",
|
||||||
|
"user": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VXNlcjE=",
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"repo": {
|
||||||
|
"id": 1296269,
|
||||||
|
"node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5",
|
||||||
|
"name": "Hello-World",
|
||||||
|
"full_name": "octocat/Hello-World",
|
||||||
|
"owner": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VXNlcjE=",
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"private": false,
|
||||||
|
"html_url": "https://github.com/octocat/Hello-World",
|
||||||
|
"description": "This your first repo!",
|
||||||
|
"fork": false,
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World",
|
||||||
|
"archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}",
|
||||||
|
"assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}",
|
||||||
|
"blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}",
|
||||||
|
"branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}",
|
||||||
|
"collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}",
|
||||||
|
"comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}",
|
||||||
|
"commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}",
|
||||||
|
"compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}",
|
||||||
|
"contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}",
|
||||||
|
"contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors",
|
||||||
|
"deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments",
|
||||||
|
"downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads",
|
||||||
|
"events_url": "https://api.github.com/repos/octocat/Hello-World/events",
|
||||||
|
"forks_url": "https://api.github.com/repos/octocat/Hello-World/forks",
|
||||||
|
"git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}",
|
||||||
|
"git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}",
|
||||||
|
"git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}",
|
||||||
|
"git_url": "git:github.com/octocat/Hello-World.git",
|
||||||
|
"issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}",
|
||||||
|
"issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}",
|
||||||
|
"issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}",
|
||||||
|
"keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}",
|
||||||
|
"labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}",
|
||||||
|
"languages_url": "https://api.github.com/repos/octocat/Hello-World/languages",
|
||||||
|
"merges_url": "https://api.github.com/repos/octocat/Hello-World/merges",
|
||||||
|
"milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}",
|
||||||
|
"notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}",
|
||||||
|
"pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}",
|
||||||
|
"releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}",
|
||||||
|
"ssh_url": "git@github.com:octocat/Hello-World.git",
|
||||||
|
"stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers",
|
||||||
|
"statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}",
|
||||||
|
"subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers",
|
||||||
|
"subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription",
|
||||||
|
"tags_url": "https://api.github.com/repos/octocat/Hello-World/tags",
|
||||||
|
"teams_url": "https://api.github.com/repos/octocat/Hello-World/teams",
|
||||||
|
"trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}",
|
||||||
|
"clone_url": "https://github.com/octocat/Hello-World.git",
|
||||||
|
"mirror_url": "git:git.example.com/octocat/Hello-World",
|
||||||
|
"hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks",
|
||||||
|
"svn_url": "https://svn.github.com/octocat/Hello-World",
|
||||||
|
"homepage": "https://github.com",
|
||||||
|
"language": null,
|
||||||
|
"forks_count": 9,
|
||||||
|
"stargazers_count": 80,
|
||||||
|
"watchers_count": 80,
|
||||||
|
"size": 108,
|
||||||
|
"default_branch": "master",
|
||||||
|
"open_issues_count": 0,
|
||||||
|
"topics": [
|
||||||
|
"octocat",
|
||||||
|
"atom",
|
||||||
|
"electron",
|
||||||
|
"api"
|
||||||
|
],
|
||||||
|
"has_issues": true,
|
||||||
|
"has_projects": true,
|
||||||
|
"has_wiki": true,
|
||||||
|
"has_pages": false,
|
||||||
|
"has_downloads": true,
|
||||||
|
"archived": false,
|
||||||
|
"disabled": false,
|
||||||
|
"pushed_at": "2011-01-26T19:06:43Z",
|
||||||
|
"created_at": "2011-01-26T19:01:12Z",
|
||||||
|
"updated_at": "2011-01-26T19:14:43Z",
|
||||||
|
"permissions": {
|
||||||
|
"admin": false,
|
||||||
|
"push": false,
|
||||||
|
"pull": true
|
||||||
|
},
|
||||||
|
"allow_rebase_merge": true,
|
||||||
|
"temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O",
|
||||||
|
"allow_squash_merge": true,
|
||||||
|
"allow_merge_commit": true,
|
||||||
|
"allow_forking": true,
|
||||||
|
"forks": 123,
|
||||||
|
"open_issues": 123,
|
||||||
|
"license": {
|
||||||
|
"key": "mit",
|
||||||
|
"name": "MIT License",
|
||||||
|
"url": "https://api.github.com/licenses/mit",
|
||||||
|
"spdx_id": "MIT",
|
||||||
|
"node_id": "MDc6TGljZW5zZW1pdA=="
|
||||||
|
},
|
||||||
|
"watchers": 123
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": {
|
||||||
|
"label": "octocat:master",
|
||||||
|
"ref": "master",
|
||||||
|
"sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e",
|
||||||
|
"user": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VXNlcjE=",
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"repo": {
|
||||||
|
"id": 1296269,
|
||||||
|
"node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5",
|
||||||
|
"name": "Hello-World",
|
||||||
|
"full_name": "octocat/Hello-World",
|
||||||
|
"owner": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VXNlcjE=",
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"private": false,
|
||||||
|
"html_url": "https://github.com/octocat/Hello-World",
|
||||||
|
"description": "This your first repo!",
|
||||||
|
"fork": false,
|
||||||
|
"url": "https://api.github.com/repos/octocat/Hello-World",
|
||||||
|
"archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}",
|
||||||
|
"assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}",
|
||||||
|
"blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}",
|
||||||
|
"branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}",
|
||||||
|
"collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}",
|
||||||
|
"comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}",
|
||||||
|
"commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}",
|
||||||
|
"compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}",
|
||||||
|
"contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}",
|
||||||
|
"contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors",
|
||||||
|
"deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments",
|
||||||
|
"downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads",
|
||||||
|
"events_url": "https://api.github.com/repos/octocat/Hello-World/events",
|
||||||
|
"forks_url": "https://api.github.com/repos/octocat/Hello-World/forks",
|
||||||
|
"git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}",
|
||||||
|
"git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}",
|
||||||
|
"git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}",
|
||||||
|
"git_url": "git:github.com/octocat/Hello-World.git",
|
||||||
|
"issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}",
|
||||||
|
"issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}",
|
||||||
|
"issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}",
|
||||||
|
"keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}",
|
||||||
|
"labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}",
|
||||||
|
"languages_url": "https://api.github.com/repos/octocat/Hello-World/languages",
|
||||||
|
"merges_url": "https://api.github.com/repos/octocat/Hello-World/merges",
|
||||||
|
"milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}",
|
||||||
|
"notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}",
|
||||||
|
"pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}",
|
||||||
|
"releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}",
|
||||||
|
"ssh_url": "git@github.com:octocat/Hello-World.git",
|
||||||
|
"stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers",
|
||||||
|
"statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}",
|
||||||
|
"subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers",
|
||||||
|
"subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription",
|
||||||
|
"tags_url": "https://api.github.com/repos/octocat/Hello-World/tags",
|
||||||
|
"teams_url": "https://api.github.com/repos/octocat/Hello-World/teams",
|
||||||
|
"trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}",
|
||||||
|
"clone_url": "https://github.com/octocat/Hello-World.git",
|
||||||
|
"mirror_url": "git:git.example.com/octocat/Hello-World",
|
||||||
|
"hooks_url": "https://api.github.com/repos/octocat/Hello-World/hooks",
|
||||||
|
"svn_url": "https://svn.github.com/octocat/Hello-World",
|
||||||
|
"homepage": "https://github.com",
|
||||||
|
"language": null,
|
||||||
|
"forks_count": 9,
|
||||||
|
"stargazers_count": 80,
|
||||||
|
"watchers_count": 80,
|
||||||
|
"size": 108,
|
||||||
|
"default_branch": "master",
|
||||||
|
"open_issues_count": 0,
|
||||||
|
"topics": [
|
||||||
|
"octocat",
|
||||||
|
"atom",
|
||||||
|
"electron",
|
||||||
|
"api"
|
||||||
|
],
|
||||||
|
"has_issues": true,
|
||||||
|
"has_projects": true,
|
||||||
|
"has_wiki": true,
|
||||||
|
"has_pages": false,
|
||||||
|
"has_downloads": true,
|
||||||
|
"archived": false,
|
||||||
|
"disabled": false,
|
||||||
|
"pushed_at": "2011-01-26T19:06:43Z",
|
||||||
|
"created_at": "2011-01-26T19:01:12Z",
|
||||||
|
"updated_at": "2011-01-26T19:14:43Z",
|
||||||
|
"permissions": {
|
||||||
|
"admin": false,
|
||||||
|
"push": false,
|
||||||
|
"pull": true
|
||||||
|
},
|
||||||
|
"allow_rebase_merge": true,
|
||||||
|
"temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O",
|
||||||
|
"allow_squash_merge": true,
|
||||||
|
"allow_merge_commit": true,
|
||||||
|
"forks": 123,
|
||||||
|
"open_issues": 123,
|
||||||
|
"license": {
|
||||||
|
"key": "mit",
|
||||||
|
"name": "MIT License",
|
||||||
|
"url": "https://api.github.com/licenses/mit",
|
||||||
|
"spdx_id": "MIT",
|
||||||
|
"node_id": "MDc6TGljZW5zZW1pdA=="
|
||||||
|
},
|
||||||
|
"watchers": 123
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"_links": {
|
||||||
|
"self": {
|
||||||
|
"href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347"
|
||||||
|
},
|
||||||
|
"html": {
|
||||||
|
"href": "https://github.com/octocat/Hello-World/pull/1347"
|
||||||
|
},
|
||||||
|
"issue": {
|
||||||
|
"href": "https://api.github.com/repos/octocat/Hello-World/issues/1347"
|
||||||
|
},
|
||||||
|
"comments": {
|
||||||
|
"href": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments"
|
||||||
|
},
|
||||||
|
"review_comments": {
|
||||||
|
"href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments"
|
||||||
|
},
|
||||||
|
"review_comment": {
|
||||||
|
"href": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}"
|
||||||
|
},
|
||||||
|
"commits": {
|
||||||
|
"href": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits"
|
||||||
|
},
|
||||||
|
"statuses": {
|
||||||
|
"href": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"author_association": "OWNER",
|
||||||
|
"auto_merge": null,
|
||||||
|
"draft": false,
|
||||||
|
"merged": false,
|
||||||
|
"mergeable": true,
|
||||||
|
"rebaseable": true,
|
||||||
|
"mergeable_state": "clean",
|
||||||
|
"merged_by": {
|
||||||
|
"login": "octocat",
|
||||||
|
"id": 1,
|
||||||
|
"node_id": "MDQ6VXNlcjE=",
|
||||||
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/octocat",
|
||||||
|
"html_url": "https://github.com/octocat",
|
||||||
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||||
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||||
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"comments": 10,
|
||||||
|
"review_comments": 0,
|
||||||
|
"maintainer_can_modify": true,
|
||||||
|
"commits": 3,
|
||||||
|
"additions": 100,
|
||||||
|
"deletions": 3,
|
||||||
|
"changed_files": 5
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue