Compare commits

..

2580 Commits

Author SHA1 Message Date
Liam Newman
cb381dfa06 [maven-release-plugin] prepare release github-api-1.122 2021-01-14 20:13:57 -08:00
Liam Newman
80124e3b85 Merge pull request #1021 from bitwiseman/jwt-string
Allow JWT from string
2021-01-14 20:09:21 -08:00
Liam Newman
7aae27e36f Allow JWT from string 2021-01-14 14:25:51 -08:00
Liam Newman
b212956fbb [maven-release-plugin] prepare for next development iteration 2021-01-14 13:19:41 -08:00
Liam Newman
d033355e84 [maven-release-plugin] prepare release github-api-1.121 2021-01-14 13:19:31 -08:00
Liam Newman
59d7a117d0 [maven-release-plugin] prepare for next development iteration 2021-01-14 10:51:52 -08:00
Liam Newman
dfbb38c5f1 [maven-release-plugin] prepare release github-api-1.120 2021-01-14 10:51:41 -08:00
Liam Newman
3f9954144a Merge pull request #945 from MarcosCela/feat/credential-provider-refresh
Feat/credential provider refresh
2021-01-14 10:37:30 -08:00
Liam Newman
1b84efdbfa Add GitHub.DependentAuthorizationProvider
Rather than exposing an unsafe wrapper for GitHub instances, I added a base class
that can be extended by anyone wanting to implement an authorization provider
that needs a GitHub instance to generate it's authorization string.
2021-01-14 10:32:25 -08:00
Liam Newman
c33e78a7dc Create authorization package 2021-01-14 09:23:17 -08:00
Marcos.Cela
747c759bbb fix code violations again 2021-01-08 10:10:44 +01:00
Marcos.Cela
e0a709676e fix format violations 2021-01-08 09:56:05 +01:00
Marcos.Cela
a96275c286 tests for JWTTokenProvider, verifying the "Authentication" header
This test basically ensures that the requests made with a
JWTTokenProvider follow a valid Authentication pattern,
verifying that the header "conforms" to a valid JWT token
More information on JWT tokens can be found at:

- https://jwt.io/introduction/
2021-01-08 09:52:50 +01:00
Marcos.Cela
ca7c809feb remove unused field MINUTES_10 from JWTTokenProvider 2021-01-08 08:21:35 +01:00
Marcos Cela López
a8a0bcb7db Merge branch 'master' into feat/credential-provider-refresh 2021-01-07 12:03:27 +01:00
Marcos.Cela
0e2bf23830 add CODE_SCANNING_ALERT to GHEvent enum 2021-01-07 11:32:33 +01:00
Marcos.Cela
44a8b797fb fix: JWTTokenProvider has an incorrect value for the returned authorization header
more info:
https://docs.github.com/en/free-pro-team@latest/developers/apps/authenticating-with-github-apps#authenticating-as-a-github-app
2021-01-07 11:23:22 +01:00
Marcos.Cela
cdede298a9 rename OrgInstallationAuthorizationProvider to OrgAppInstallationAuthorizationProvider 2021-01-07 09:53:19 +01:00
Marcos.Cela
f6ac4d3559 rename: credential provider -> authorization provider
This includes renames in comments, related methods,
javadocs and fields/variables.
2021-01-07 09:46:30 +01:00
Liam Newman
7e1531dbca [maven-release-plugin] prepare for next development iteration 2021-01-05 17:27:23 -08:00
Liam Newman
9aeb422157 [maven-release-plugin] prepare release github-api-1.119 2021-01-05 17:27:08 -08:00
Liam Newman
fba0f8cf8e Merge pull request #1015 from seregamorph/feature/mock-previews
Fix mocking Previews
2021-01-05 17:23:55 -08:00
seregamorph
0f4a5227e1 internal package 2021-01-05 23:03:49 +03:00
seregamorph
d16a752b43 Fix mocking Previews 2021-01-05 18:50:24 +03:00
Liam Newman
4bec27fd49 [maven-release-plugin] prepare for next development iteration 2021-01-04 01:48:27 -08:00
Liam Newman
be3bd74bb7 [maven-release-plugin] prepare release github-api-1.118 2021-01-04 01:48:16 -08:00
Liam Newman
0b14cee817 Merge pull request #1011 from hub4j/dependabot/maven/org.kohsuke.stapler-stapler-1.262
Chore(deps-dev): Bump stapler from 1.260 to 1.262
2021-01-03 23:43:02 -08:00
dependabot[bot]
252ca04084 Chore(deps-dev): Bump stapler from 1.260 to 1.262
Bumps [stapler](https://github.com/stapler/stapler) from 1.260 to 1.262.
- [Release notes](https://github.com/stapler/stapler/releases)
- [Changelog](https://github.com/stapler/stapler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stapler/stapler/compare/stapler-parent-1.260...stapler-parent-1.262)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-01 02:00:35 +00:00
Liam Newman
6670446037 Reenable GitHubBuilder tests 2020-12-31 09:49:51 -08:00
Liam Newman
bd39b07bb5 Fix javadoc issues 2020-12-30 14:07:37 -08:00
Liam Newman
a9438b6121 Move tests to use JWTTokenProvider 2020-12-30 10:46:45 -08:00
Liam Newman
f546cf4521 Use only credential providers internally to track credentials
Removes extra fields from GitHubClient.
2020-12-30 09:52:30 -08:00
Liam Newman
43efa78750 Post-merge fixes 2020-12-29 09:29:30 -08:00
Liam Newman
9e3de43802 Merge remote-tracking branch 'upstream/master' into feat/credential-provider-refresh 2020-12-29 09:19:09 -08:00
Liam Newman
dc615e432e Merge pull request #985 from lower-case/bugfix-883
Fixes null commit date
2020-12-28 22:06:47 -08:00
Liam Newman
cf9caa6af5 Update test to check values 2020-12-28 22:00:44 -08:00
Liam Newman
15f748358d Merge remote-tracking branch 'upstream/master' into bugfix-883 2020-12-28 20:02:24 -08:00
Liam Newman
b30d648623 Merge pull request #939 from jgangemi/jae/bulk-update
- bulk update of repository options
2020-12-28 19:54:44 -08:00
Liam Newman
33d70560b8 Deprecate templateRepository() for isTemplate() 2020-12-28 18:44:30 -08:00
Liam Newman
865a49d2e8 Update GHRepository method to use Setter
It appears that the correct way to pass these booleans is as booleans not as strings.

Fixes #765
2020-12-28 18:07:32 -08:00
Liam Newman
4fca68c25c Add GHRepository.Setter 2020-12-28 17:03:36 -08:00
Liam Newman
f131a0c1c2 Formatting fixes 2020-12-28 16:26:23 -08:00
Liam Newman
cd4368fa79 Merge remote-tracking branch 'upstream/master' into jae/bulk-update 2020-12-28 16:25:31 -08:00
Liam Newman
4ec4b160b0 Update contributing.md for more clarity 2020-12-28 16:18:04 -08:00
Liam Newman
a585b4957f Merge pull request #1004 from bitwiseman/object-base
Make root field transient in all classes
2020-12-28 16:05:48 -08:00
Liam Newman
e6b02b3bed Merge branch 'master' into object-base 2020-12-28 15:48:41 -08:00
Liam Newman
1ef0ec0432 Update src/main/java/org/kohsuke/github/GitHub.java
Co-authored-by: Tim Jacomb <21194782+timja@users.noreply.github.com>
2020-12-28 15:47:28 -08:00
Liam Newman
2e87bd86a1 Merge pull request #1006 from hub4j/dependabot/maven/org.eclipse.jgit-org.eclipse.jgit-5.10.0.202012080955-r
Chore(deps-dev): Bump org.eclipse.jgit from 5.9.0.202009080501-r to 5.10.0.202012080955-r
2020-12-28 15:46:53 -08:00
Liam Newman
0228a0d023 Merge pull request #1010 from hub4j/dependabot/maven/org.slf4j-slf4j-simple-1.7.30
Chore(deps-dev): Bump slf4j-simple from 1.7.2 to 1.7.30
2020-12-28 15:46:33 -08:00
dependabot[bot]
6365f3749d Chore(deps-dev): Bump slf4j-simple from 1.7.2 to 1.7.30
Bumps [slf4j-simple](https://github.com/qos-ch/slf4j) from 1.7.2 to 1.7.30.
- [Release notes](https://github.com/qos-ch/slf4j/releases)
- [Commits](https://github.com/qos-ch/slf4j/compare/v_1.7.2...v_1.7.30)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-28 23:45:31 +00:00
dependabot[bot]
25c18130f9 Chore(deps-dev): Bump org.eclipse.jgit
Bumps org.eclipse.jgit from 5.9.0.202009080501-r to 5.10.0.202012080955-r.

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-28 23:45:30 +00:00
Liam Newman
436c19634d Merge pull request #1009 from hub4j/dependabot/maven/com.github.spotbugs-spotbugs-maven-plugin-4.1.4
Chore(deps): Bump spotbugs-maven-plugin from 4.0.4 to 4.1.4
2020-12-28 15:45:13 -08:00
Liam Newman
1a6facc685 Merge pull request #1008 from hub4j/dependabot/maven/com.tngtech.archunit-archunit-0.15.0
Chore(deps-dev): Bump archunit from 0.14.1 to 0.15.0
2020-12-28 15:44:45 -08:00
Liam Newman
bd0093c8ea Change reader and writer to no longer deprecated
While still no recommended, these methods are more recommended than
users creating their own.  These will continue to work even when
internals change, whereas user configured readers or writers may not.
2020-12-28 12:39:21 -08:00
Liam Newman
e150280010 Merge remote-tracking branch 'upstream/master' into object-base 2020-12-28 10:52:16 -08:00
dependabot[bot]
827fd5e472 Chore(deps): Bump spotbugs-maven-plugin from 4.0.4 to 4.1.4
Bumps [spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) from 4.0.4 to 4.1.4.
- [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases)
- [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-4.0.4...spotbugs-maven-plugin-4.1.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-28 18:51:35 +00:00
dependabot[bot]
f89fbc67b9 Chore(deps-dev): Bump archunit from 0.14.1 to 0.15.0
Bumps [archunit](https://github.com/TNG/ArchUnit) from 0.14.1 to 0.15.0.
- [Release notes](https://github.com/TNG/ArchUnit/releases)
- [Commits](https://github.com/TNG/ArchUnit/compare/v0.14.1...v0.15.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-28 18:51:35 +00:00
Liam Newman
c567a88892 Merge pull request #1005 from bitwiseman/task/spotless
Switch to using spotless plugin for formatting
2020-12-28 10:51:06 -08:00
Liam Newman
6a39d7fca5 Trim whitespace and end with newline 2020-12-23 17:13:27 -08:00
Liam Newman
a15e67f065 Switch formatting to spotless
This is change includes minimal changes required to make the switch
2020-12-23 17:13:27 -08:00
Liam Newman
7a1bce9578 Merge branch 'master' into object-base 2020-12-22 09:17:52 -08:00
Liam Newman
f2b4de7943 Merge branch 'master' into jae/bulk-update 2020-12-22 08:32:12 -08:00
Liam Newman
b3ff4ac6d9 Merge pull request #984 from gsmet/okhttp-close-responsebody
Close Okhttp ResponseBody instances when closing the InputStream
2020-12-21 10:20:50 -08:00
Liam Newman
1c56e7fab5 Add missing argument 2020-12-21 09:28:44 -08:00
Liam Newman
70ba4df385 Make root field transient in all classes 2020-12-18 14:58:12 -08:00
Liam Newman
8062c705e8 Merge branch 'master' into jae/bulk-update 2020-12-17 15:12:19 -08:00
Liam Newman
fafb23c1a6 Merge pull request #1002 from marcoferrer/add-sdk-beta-annotation
Implement BetaApi annotation for hub4j sdk
2020-12-17 12:57:01 -08:00
Marco Ferrer
4e7ac7030c Add beta api annotation to project 2020-12-16 16:39:48 -05:00
Liam Newman
4803daca5a Merge branch 'master' into okhttp-close-responsebody 2020-12-15 16:21:08 -08:00
Liam Newman
facfc61316 Merge branch 'master' into jae/bulk-update 2020-12-15 16:08:41 -08:00
Liam Newman
e3e495bfb1 Merge pull request #1001 from marcoferrer/preview-enum-and-cleanup
Implement static typing for previews and clean up usage declarations
2020-12-15 15:39:06 -08:00
Liam Newman
e007284d2f Merge branch 'master' into preview-enum-and-cleanup 2020-12-15 15:20:30 -08:00
Liam Newman
1da8416ebd Merge pull request #983 from marcoferrer/add-preview-arch-rules
Add arch test for preview API usage
2020-12-15 15:20:05 -08:00
Marco Ferrer
79b49a469c Clean up preview declarations 2020-12-15 14:39:00 -05:00
Marco Ferrer
5888efcaef Merge branch 'master' into add-preview-arch-rules 2020-12-15 12:41:51 -05:00
Marco Ferrer
459d1b4f56 update arch tests to add enum checks 2020-12-15 12:41:02 -05:00
Liam Newman
9151102bda Merge pull request #998 from bitwiseman/obsolete-okhttp
Deprecate OkHttp 2.x connector
2020-12-12 16:49:13 -08:00
Liam Newman
3819984add Merge pull request #999 from tginiotis-at-work/targeturl-for-status
"target_url" for the payload of the status event
2020-12-12 16:48:16 -08:00
Tadas Giniotis
3b58fbc186 test "target_url" 2020-12-12 23:53:40 +02:00
Tadas Giniotis
55e589b3d9 add the "target_url" field for "status" events 2020-12-12 23:46:03 +02:00
Liam Newman
e64d64d8d8 Deprecate OkHttp 2.x connector
OkHttp 2.x is unsupported.  OkHttpUrlFactory contains bugs and limiations which will not
be fixed and also cannot be mitigated by this library.  Users should move to OkHttp3.

Closes #997
2020-12-11 17:17:08 -08:00
Jae Gangemi
37c2d9135b - bulk update of repository options 2020-12-11 16:56:26 -07:00
Liam Newman
30c96221bd Make wiremock less noisy with slf4j simple logger during tests 2020-12-11 13:54:47 -08:00
Liam Newman
bf7305e3f8 Merge pull request #990 from hub4j/dependabot/maven/org.apache.maven.plugins-maven-project-info-reports-plugin-3.1.1
Chore(deps): Bump maven-project-info-reports-plugin from 3.1.0 to 3.1.1
2020-12-09 08:54:55 -08:00
Liam Newman
3b12a229c3 Merge branch 'master' into dependabot/maven/org.apache.maven.plugins-maven-project-info-reports-plugin-3.1.1 2020-12-04 14:41:12 -08:00
Liam Newman
5726ceb8dc Merge branch 'master' into okhttp-close-responsebody 2020-12-03 16:55:48 -08:00
Liam Newman
c06c06624d Merge pull request #981 from eSentire/AffiliationFilter
Add affiliation filter for collaborators
2020-12-03 16:54:02 -08:00
Rob Rodrigues
ad40d7071e Streamline per feedback 2020-12-02 11:41:13 -08:00
Rob Rodrigues
f55a39eb90 Merge branch 'master' into AffiliationFilter 2020-12-01 20:08:54 -08:00
Rob Rodrigues
c3869bee31 Reverted changes which added filter unnecessarily, cleanup, add test cache, enable test 2020-12-01 19:50:24 -08:00
dependabot[bot]
6eac15df0f Chore(deps): Bump maven-project-info-reports-plugin from 3.1.0 to 3.1.1
Bumps [maven-project-info-reports-plugin](https://github.com/apache/maven-project-info-reports-plugin) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/apache/maven-project-info-reports-plugin/releases)
- [Commits](https://github.com/apache/maven-project-info-reports-plugin/compare/maven-project-info-reports-plugin-3.1.0...maven-project-info-reports-plugin-3.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-01 18:21:10 +00:00
Liam Newman
6f5d3c32c3 Spotbugs 4.1.3 2020-12-01 10:07:46 -08:00
Liam Newman
68ef40e4d0 Merge branch 'master' into bugfix-883 2020-12-01 09:11:23 -08:00
Liam Newman
4046bc4f72 Merge pull request #991 from hub4j/dependabot/maven/org.mockito-mockito-core-3.6.28
Chore(deps-dev): Bump mockito-core from 3.6.0 to 3.6.28
2020-12-01 08:49:54 -08:00
dependabot[bot]
1b8d131915 Chore(deps-dev): Bump mockito-core from 3.6.0 to 3.6.28
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.6.0 to 3.6.28.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.6.0...v3.6.28)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-01 02:00:23 +00:00
Guillaume Smet
f5ad332d28 Properly close ResponseBody when closing the InputStream
ResponseBody objects from Okhttp needs to be closed and, right now, we
just close the InputStream which is not sufficient.

I noticed that because I saw some warnings about leaked ResponseBody
instances in my logs.
2020-11-29 21:56:11 +01:00
Lovekesh Garg
938603ff60 Fixes null commit date 2020-11-28 17:20:28 +05:30
Rob Rodrigues
17af78f2bb Merge branch 'master' into AffiliationFilter 2020-11-25 13:10:09 -08:00
Marco Ferrer
7588267743 Add arch test for preview API usage 2020-11-25 13:16:04 -05:00
Liam Newman
ed4f9c8176 Merge pull request #960 from marcoferrer/update-deployments-api
Implement deployment API support for ant-man and flash previews
2020-11-25 06:37:36 -08:00
Liam Newman
bbb46e88b0 Merge branch 'master' into update-deployments-api 2020-11-25 06:18:07 -08:00
Rob Rodrigues
3db7aac0d8 Merge branch 'master' into AffiliationFilter 2020-11-24 12:52:48 -08:00
Liam Newman
fdbbd2e563 [maven-release-plugin] prepare for next development iteration 2020-11-24 11:13:29 -08:00
Liam Newman
e92f1321d4 [maven-release-plugin] prepare release github-api-1.117 2020-11-24 11:13:17 -08:00
Marco Ferrer
da2aaff9e5 Merge branch 'master' into update-deployments-api 2020-11-24 11:37:36 -05:00
Liam Newman
208904b634 Merge pull request #980 from mrginglymus/check-patcher
Add ability to update a check run
2020-11-23 18:28:48 -08:00
Liam Newman
a433bcda2e Merge pull request #979 from seregamorph/feature/pull_request-edited
pull_request action "edited": changes
2020-11-23 18:26:08 -08:00
Marco Ferrer
4bba692170 Merge branch 'master' into update-deployments-api 2020-11-23 17:20:40 -05:00
Marco Ferrer
59b61cd8be add deprecated to logUrl field 2020-11-23 17:19:57 -05:00
Marco Ferrer
247b013e16 add deprecated annotations to preview usage 2020-11-23 15:51:57 -05:00
Bill Collins
77baafa643 Add method for updating check run by ID 2020-11-20 09:16:34 +00:00
Rob Rodrigues
3c56f1f076 Merge branch 'master' into AffiliationFilter 2020-11-19 15:57:36 -08:00
Bill Collins
224d8c7cb4 Add wiremocks for tests, move existing tests to test org 2020-11-19 15:05:25 +00:00
seregamorph
0feb520549 pull_request action "edited": changes - test 2020-11-19 13:50:33 +03:00
seregamorph
ca365b12f6 Merge remote-tracking branch 'origin/master' into feature/pull_request-edited 2020-11-19 13:44:56 +03:00
Bill Collins
bde6ad9a06 Add a test for check updates 2020-11-19 09:20:58 +00:00
Bill Collins
4953f4500d Create check run updater 2020-11-19 09:20:58 +00:00
Rob Rodrigues
7fee1fcc74 Add affiliation filter for collaborators 2020-11-18 17:58:51 -08:00
Liam Newman
4415ac8fd2 Update src/test/java/org/kohsuke/github/GHEventPayloadTest.java 2020-11-18 12:50:47 -08:00
Liam Newman
8c81e48a31 Update src/test/java/org/kohsuke/github/GHEventPayloadTest.java 2020-11-18 12:48:51 -08:00
Liam Newman
9ad0329c56 Apply suggestions from code review 2020-11-18 12:47:18 -08:00
Liam Newman
78f533bbfc Merge pull request #977 from skaldarnar/feat/528-ghrelease-assets
Include assets directly in GHRelease
2020-11-18 12:46:11 -08:00
Tobias Nett
79c7dd9ecf fix formatting 2020-11-18 21:31:42 +01:00
Tobias Nett
5d796d1f79 revert unwanted assertion change 2020-11-18 21:24:58 +01:00
Tobias Nett
68a82be6c4 rename 'getCachedAssets' to 'assets' (bare property name as getter)) 2020-11-18 19:28:27 +01:00
Tobias Nett
2676ef2b73 rename 'fetchAssets' to 'listAssets' and return PagedIterable 2020-11-18 19:27:31 +01:00
seregamorph
04b283c539 pull_request action "edited": changes 2020-11-18 20:41:58 +03:00
Tobias Nett
98b067937a Make changes backwards compatible
Add '@Deprecation' and '@Preview' annotations to make the changes
backwards compatible and prepare for a transition to the cached behavior
as default.
This explicitly leaves the variant for re-fetching assets under a
different name.
2020-11-17 17:16:44 +01:00
Liam Newman
8ababb60bf Merge pull request #976 from seregamorph/feature/base-event-payload
#947 base event payload
2020-11-16 17:29:38 -08:00
seregamorph
b51d655f77 #947 address review comments 2020-11-13 11:02:54 +03:00
seregamorph
74496d32da Merge remote-tracking branch 'origin/master' into feature/base-event-payload 2020-11-13 10:27:57 +03:00
Liam Newman
316e278be1 Merge pull request #952 from tginiotis-at-work/getRepositories
List repositories for a GHAppInstallation
2020-11-12 10:02:53 -08:00
Tobias Nett
d881bf6504 Bring back previous semantic of getAssets() as fetchAssets()
I don't know a better name for this, and I also don't know whether this
should be an option or not.
The life cycle tests use the feature that retrieving the assets from a
release actually does a roundtrip to Github and sends another request.
This indicates that re-purposing `getAssets()` to be the cached access
might cause problems on consumers that potentially rely on this
assumption, too.
2020-11-11 19:49:58 +01:00
Tobias Nett
c74fbbe1fd Include assets directly in GHRelease
Resolves #528

Instead of doing a separate request to fetch the assets associated with
a release this keeps a local list of the assets that are part of the
list releases endpoint.

See https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#list-releases
2020-11-11 19:16:34 +01:00
seregamorph
929d9fb7bd #947 base event payload 2020-11-09 22:48:04 +03:00
Tadas Giniotis
5d069d0531 add wiremock snapshots 2020-11-05 22:43:49 +02:00
Tadas Giniotis
dd9e6dc5d3 add tests 2020-11-05 22:39:43 +02:00
Tadas Giniotis
d22c77c41d method for listing repositories for a GHAppInstallation 2020-11-05 22:39:15 +02:00
Liam Newman
3a11b7ccbf Merge pull request #950 from tginiotis-at-work/listTeamMembers
List team members by role
2020-11-05 09:12:10 -08:00
Tadas Giniotis
9d161b28bb add wiremock snapshots 2020-11-04 15:38:00 +02:00
Tadas Giniotis
9b16a1caa0 add tests 2020-11-04 15:37:58 +02:00
Tadas Giniotis
9a918e3bac implement ability to list members on a team by role 2020-11-04 15:35:17 +02:00
Liam Newman
d4c5c6a1e0 Merge pull request #944 from seregamorph/feature/push-pulls-extensions
user, push, pull event extensions
2020-11-03 12:53:07 -08:00
Liam Newman
63fda3555c Merge pull request #953 from tginiotis-at-work/commentsOnCommit
Get comments on a specific commit
2020-11-03 12:33:00 -08:00
Liam Newman
6a2381c06b Merge pull request #951 from tginiotis-at-work/sign_commits
Allow adding signature to commits
2020-11-03 12:30:56 -08:00
Liam Newman
e9c0a16c26 Merge pull request #974 from hub4j/dependabot/maven/org.mockito-mockito-core-3.6.0
Chore(deps-dev): Bump mockito-core from 3.5.7 to 3.6.0
2020-11-03 08:43:55 -08:00
Liam Newman
2101a67ac1 Merge pull request #973 from hub4j/dependabot/maven/org.eclipse.jgit-org.eclipse.jgit-5.9.0.202009080501-r
Chore(deps-dev): Bump org.eclipse.jgit from 5.7.0.202003110725-r to 5.9.0.202009080501-r
2020-11-03 08:43:44 -08:00
dependabot[bot]
ddac568aaa Chore(deps-dev): Bump mockito-core from 3.5.7 to 3.6.0
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.5.7 to 3.6.0.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.5.7...v3.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-01 02:00:38 +00:00
dependabot[bot]
262ae9f635 Chore(deps-dev): Bump org.eclipse.jgit
Bumps org.eclipse.jgit from 5.7.0.202003110725-r to 5.9.0.202009080501-r.

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-01 02:00:23 +00:00
dependabot[bot]
381502fb80 Merge pull request #963 from hub4j/dependabot/maven/junit-junit-4.13.1 2020-10-22 21:27:26 +00:00
dependabot[bot]
92fb441eb2 Chore(deps-dev): Bump junit from 4.13 to 4.13.1
Bumps [junit](https://github.com/junit-team/junit4) from 4.13 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.13.1.md)
- [Commits](https://github.com/junit-team/junit4/compare/r4.13...r4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-22 21:21:02 +00:00
dependabot[bot]
29e08037a8 Merge pull request #956 from hub4j/dependabot/maven/com.github.tomakehurst-wiremock-jre8-standalone-2.27.2 2020-10-22 21:20:13 +00:00
dependabot[bot]
84cc6d9315 Chore(deps-dev): Bump wiremock-jre8-standalone from 2.27.1 to 2.27.2
Bumps [wiremock-jre8-standalone](https://github.com/tomakehurst/wiremock) from 2.27.1 to 2.27.2.
- [Release notes](https://github.com/tomakehurst/wiremock/releases)
- [Commits](https://github.com/tomakehurst/wiremock/compare/2.27.1...2.27.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-22 21:14:54 +00:00
dependabot[bot]
b8d5a1c732 Merge pull request #958 from hub4j/dependabot/maven/org.jacoco-jacoco-maven-plugin-0.8.6 2020-10-22 21:14:09 +00:00
dependabot[bot]
0197ab9661 Chore(deps): Bump jacoco-maven-plugin from 0.8.5 to 0.8.6
Bumps [jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.8.5 to 0.8.6.
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](https://github.com/jacoco/jacoco/compare/v0.8.5...v0.8.6)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-22 21:08:37 +00:00
Tim Jacomb
b7915e61a6 Merge pull request #965 from chids/fix-wiremock-status-test
GH docs have moved, adjust assertion accordingly.
2020-10-22 22:03:05 +01:00
Tim Jacomb
586db99450 Merge branch 'master' into fix-wiremock-status-test 2020-10-22 21:57:46 +01:00
Tim Jacomb
5377d0dd18 Merge pull request #964 from jglick/GHPullRequest.getLabels
GHPullRequest.getLabels should not go to the GHIssue API endpoint
2020-10-22 21:35:37 +01:00
Mårten Gustafson
c5d3a7d573 GH docs have moved, adjust assertion accordingly. 2020-10-20 18:41:17 +02:00
Jesse Glick
8267050f06 GHPullRequest.getLabels should not go to the GHIssue API endpoint 2020-10-15 13:25:20 -04:00
Marcos.Cela
610b02968e exlude org.kohsuke.github.extras.auth.* from code coverage
This is a package for examples/extra implementations
2020-10-05 13:57:52 +02:00
Marcos.Cela
a7112c42df linting: JWTTokenProvider.java 2020-10-05 13:48:37 +02:00
Marcos.Cela
8a474a3b00 add: example for Org Installation token on extras package 2020-10-05 13:39:30 +02:00
Marcos.Cela
59e18d155e add dependencies for jwt token generation
These dependencies are marked as "provided" because they are only
used in the extras package
2020-10-05 13:39:01 +02:00
Marco Ferrer
12ca5d8063 update deployment wiremocks 2020-10-02 17:40:47 -04:00
Marco Ferrer
c959e0a928 update accept header in wiremocks 2020-10-02 17:37:21 -04:00
Marco Ferrer
89a08b021d formatting 2020-10-02 17:14:28 -04:00
Marco Ferrer
04b553cdec update deployment status checks 2020-10-02 17:12:10 -04:00
Marco Ferrer
15e9ee30ee formatting 2020-10-02 16:52:23 -04:00
Marco Ferrer
a0d650a86c update deployment tests to read new fields 2020-10-02 16:47:01 -04:00
Marco Ferrer
1a6ad48e08 formatting 2020-10-02 16:35:46 -04:00
Marco Ferrer
7c82eeb018 Support deployment api previews ant-man and flash 2020-10-02 15:57:52 -04:00
Marco Ferrer
b188e74ee0 Add new const for flash preview 2020-10-02 14:16:50 -04:00
Tadas Giniotis
c21bd5765a add wiremock snapshots 2020-10-01 01:25:17 +03:00
Tadas Giniotis
b78c37a695 add tests 2020-10-01 01:23:34 +03:00
Tadas Giniotis
2f151d45c3 add wiremock snapshots 2020-10-01 01:00:20 +03:00
Tadas Giniotis
3ebe3afdbd add tests 2020-10-01 00:58:54 +03:00
Tadas Giniotis
f4845df6c0 implement ability to list comments of a specific commit 2020-10-01 00:58:42 +03:00
Tadas Giniotis
272b87f04d add ability to attach a signature when creating a commit 2020-09-30 23:21:05 +03:00
Marcos.Cela
ff790eeefb formatting of OrgInstallationCredentialProvider.java 2020-09-30 16:48:54 +02:00
Marcos.Cela
97e918da03 remove unused JWTTokenProvider (we are now using a github client) 2020-09-30 16:39:41 +02:00
Marcos.Cela
4f30998873 OrgInstallationCredentialProvider now receives a pre-configured client
This is required to pass integration tests. In terms of functionality,
the user should be able to provide a client with the given token provider.
It additionally increases control (e.g: usage of proxies)

Add tests
2020-09-29 16:13:23 +02:00
Marcos.Cela
a0fc478a28 remove final modifier from credentialProvider (required for tests) 2020-09-29 16:12:06 +02:00
Marcos.Cela
bb03fd1968 use Date#after instead of compareTo 2020-09-28 16:11:16 +02:00
Marcos.Cela
0c65f74662 formatting 2020-09-28 14:45:00 +02:00
Marcos.Cela
29ac2bd4f5 return a correctly formatted token 2020-09-28 14:24:01 +02:00
Marcos.Cela
0d8b4f32e8 document oauthAccessToken 2020-09-28 13:48:56 +02:00
Marcos.Cela
83db7f24eb document CredentialProvider @throws 2020-09-28 13:48:26 +02:00
Marcos.Cela
5f9976a193 formatting for OrgInstallationCredentialProvider 2020-09-28 13:37:59 +02:00
Marcos.Cela
9480ef485b withCredentialProvider is now public 2020-09-28 13:34:14 +02:00
Marcos.Cela
a9b7432584 formatting 2020-09-28 13:28:13 +02:00
Marcos.Cela
6d7081910f add OrgInstallationCredentialProvider and JWTTokenProvider
The JWTTokenProvider implementation is left to the end user,
otherwise we would need to include specific libraries, at least
as far as I am aware.
The OrgInstallationCredentialProvider will give a token,
refreshing when necessary and using the JWTTokenProvider
that the user needs to provide to request new tokens
2020-09-28 13:17:46 +02:00
Marcos.Cela
aa96089ab4 remove @see to external docs 2020-09-28 13:01:55 +02:00
Marcos.Cela
58ae681417 reduce visibilitof GitHubBuilder#withCredentialProvider 2020-09-28 12:59:21 +02:00
Marcos.Cela
c038e0af5e typo it'ts -> it's 2020-09-28 12:51:54 +02:00
Marcos.Cela
4f9976c0cb add GitHubBuilder#withCredentialProvider
With this we also need to check for exceptions when calling
"/user", because now we don't know what kind of credentials
are coming from the provider, and we could be requesting
a "/user" when the type of credentials is not supported
2020-09-28 12:40:44 +02:00
Marcos.Cela
e308e5ed57 use static utility methods instead of building logic in the constructor 2020-09-28 12:26:56 +02:00
Marcos.Cela
7b1b1ca994 ensure that isAnonymous() correctly handles IOException 2020-09-28 12:18:22 +02:00
Marcos.Cela
551be49a1a utility methods on ImmutableCredentialProvider
These methods let us build the most-used cases
for static credentials that will never change:
- JWT credentials
- Token-based credentials
- Basic Auth credentials
2020-09-28 10:43:43 +02:00
Marcos.Cela
a3888e6902 add CredentialProvider#ANONYMOUS class and field
This is basically an implementation of a CredentialProvider
that will always authenticate anonymously
2020-09-28 10:09:54 +02:00
Marcos Cela López
43bb6a0dd8 Merge branch 'master' into feat/credential-provider-refresh 2020-09-28 10:02:16 +02:00
seregamorph
6e3f754366 javadoc 2020-09-26 12:09:15 +03:00
seregamorph
6360112432 Merge remote-tracking branch 'origin/master' into feature/push-pulls-extensions 2020-09-26 12:04:55 +03:00
Liam Newman
f1ca0b5417 Merge pull request #946 from seregamorph/feature/pull-request-review-html-url
pullRequestReview.review.htmlUrl
2020-09-25 12:54:13 -07:00
seregamorph
0894c8007c pullRequestReview.review.htmlUrl 2020-09-25 13:24:35 +03:00
Marcos Cela López
05863acbcd Merge branch 'master' into feat/credential-provider-refresh 2020-09-25 12:05:31 +02:00
Marcos.Cela
0e4cd06137 GitHubClient uses CredentialProvider, instead of encodedAuthorization (string) 2020-09-25 12:02:14 +02:00
Marcos.Cela
85d2d974e7 add ImmutableCredentialProvider
This is basically a class that will hold an authorization
string, returning the same value all the time
2020-09-25 12:01:33 +02:00
Marcos.Cela
3f021f9552 lint CredentialProvider 2020-09-25 10:56:07 +02:00
seregamorph
0456f10709 address objections 2020-09-24 22:55:04 +03:00
seregamorph
b7d03f7463 user, push, pull event extensions 2020-09-24 22:41:56 +03:00
Liam Newman
07a392c2a7 Merge pull request #942 from seregamorph/feature/javadoc-references
Fix events javadoc references
2020-09-24 08:50:53 -07:00
seregamorph
5b69de770f Fix events javadoc references 2020-09-24 14:37:49 +03:00
Marcos.Cela
4688870984 add CredentialProvider interface 2020-09-24 09:01:52 +02:00
Liam Newman
bf67069768 Merge pull request #922 from tginiotis-at-work/commit_updates
methods for listing PRs where the commit is head & listing branches which contain the commit
2020-09-22 15:48:03 -07:00
Liam Newman
91764c1c74 Merge pull request #921 from tginiotis-at-work/pr_updates
update branch & change base on PRs
2020-09-22 15:46:06 -07:00
Tadas Giniotis
8b2a3e1221 add GHCommit tests 2020-09-03 23:17:39 +03:00
Tadas Giniotis
def2f0b37d methods for listing PRs where the commit is head & listing branches which contain the commit 2020-09-03 23:16:31 +03:00
Tadas Giniotis
5d7479a3dd add GHPullRequest tests 2020-09-03 22:13:28 +03:00
Tadas Giniotis
ceb2d35f9f update branch & change base on PRs 2020-09-03 22:10:33 +03:00
Liam Newman
fc38dba59a Update release drafter to $MAJOR.$MINOR
This project uses "x.y" for most releases.  At some point we might change this, but it is convenient for now.
2020-08-27 09:32:19 -07:00
Liam Newman
75b383d398 Update release-drafter.yml 2020-08-27 09:16:33 -07:00
Liam Newman
ee2d9491fb Update CHANGELOG.md 2020-08-27 09:13:03 -07:00
Liam Newman
bf86a7c75a Update dependabot.yml 2020-08-27 09:09:22 -07:00
Liam Newman
70f6d129e2 Merge pull request #936 from hub4j/dependabot/maven/org.mockito-mockito-core-3.5.7
Chore(deps-dev): Bump mockito-core from 3.5.2 to 3.5.7
2020-08-27 09:06:55 -07:00
dependabot[bot]
a4ac2aa99a Chore(deps-dev): Bump mockito-core from 3.5.2 to 3.5.7
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.5.2 to 3.5.7.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.5.2...v3.5.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-26 02:00:58 +00:00
Liam Newman
ae3b6fbe6b Merge pull request #931 from hub4j/dependabot/maven/spotbugs.version-4.1.2
Chore(deps): Bump spotbugs.version from 4.1.1 to 4.1.2
2020-08-19 19:52:24 -07:00
Liam Newman
e357fca963 Merge pull request #930 from hub4j/dependabot/maven/org.mockito-mockito-core-3.5.2
Chore(deps-dev): Bump mockito-core from 3.5.0 to 3.5.2
2020-08-19 19:52:08 -07:00
dependabot[bot]
c84cc89805 Chore(deps): Bump spotbugs.version from 4.1.1 to 4.1.2
Bumps `spotbugs.version` from 4.1.1 to 4.1.2.

Updates `spotbugs` from 4.1.1 to 4.1.2
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.1.1...4.1.2)

Updates `spotbugs-annotations` from 4.1.1 to 4.1.2
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.1.1...4.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-20 02:01:10 +00:00
dependabot[bot]
181238cd50 Chore(deps-dev): Bump mockito-core from 3.5.0 to 3.5.2
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.5.0 to 3.5.2.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.5.0...v3.5.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-19 02:00:47 +00:00
Liam Newman
214c24c736 Merge pull request #927 from hub4j/dependabot/maven/org.mockito-mockito-core-3.5.0
Chore(deps-dev): Bump mockito-core from 3.4.6 to 3.5.0
2020-08-17 08:40:40 -07:00
dependabot[bot]
cf51ce8f26 Chore(deps-dev): Bump mockito-core from 3.4.6 to 3.5.0
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.4.6 to 3.5.0.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.4.6...v3.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-17 02:00:42 +00:00
Liam Newman
2b7ed40d01 [maven-release-plugin] prepare for next development iteration 2020-08-12 18:47:49 -07:00
Liam Newman
349ef7a54c [maven-release-plugin] prepare release github-api-1.116 2020-08-12 18:47:42 -07:00
Liam Newman
94df5fc389 Merge pull request #923 from bitwiseman/feature/is-template
Added GHRepository.isTemplate() method
2020-08-12 18:43:07 -07:00
Liam Newman
906238a297 Add GHRepository.isTemplate() 2020-08-12 18:28:18 -07:00
Liam Newman
7963fa82b5 Ensure withPreview can be called multiple times 2020-08-12 18:27:48 -07:00
Liam Newman
1aba6012fb Centralize GHRepository read 2020-08-12 18:21:44 -07:00
Liam Newman
ff4324ac67 Merge pull request #897 from bonnie-young/add-create-repo-with-template-support
add create repo with template support
2020-08-12 08:43:17 -07:00
Yang Ting
11bc669e1d update code for create repository from template
Signed-off-by: Yang Ting <bonnie.young@maxwit.com>
2020-08-12 22:08:31 +08:00
Liam Newman
dcf26d58e4 Merge pull request #919 from bitwiseman/task/one-more-date
Fixed and streamlined date parsing
2020-08-07 16:42:49 -07:00
Liam Newman
4d46872c35 Fixed and streamlined date parsing
Fixes #917
2020-08-07 16:36:23 -07:00
Liam Newman
4f0d62f421 Merge pull request #920 from ewiegs4/deployment-payload
Support for object deployment payloads
2020-08-07 16:35:54 -07:00
Eddie Wiegers
f7ad1f517b formatting 2020-08-07 17:46:33 -05:00
Eddie Wiegers
345d6197f3 Support for object deployment payloads. 2020-08-07 17:36:28 -05:00
Liam Newman
bb4d44138a Merge branch 'master' into add-create-repo-with-template-support 2020-08-04 16:05:02 -07:00
Liam Newman
a8ef0cde53 Merge pull request #913 from hub4j/dependabot/maven/spotbugs.version-4.1.1
Chore(deps): Bump spotbugs.version from 4.0.6 to 4.1.1
2020-08-03 10:58:51 -07:00
dependabot[bot]
77dc009c95 Chore(deps): Bump spotbugs.version from 4.0.6 to 4.1.1
Bumps `spotbugs.version` from 4.0.6 to 4.1.1.

Updates `spotbugs` from 4.0.6 to 4.1.1
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.6...4.1.1)

Updates `spotbugs-annotations` from 4.0.6 to 4.1.1
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.6...4.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-03 02:00:46 +00:00
Liam Newman
aa298c93cc Merge pull request #911 from bitwiseman/task/workflow-run
Add GHEvent.WORKFLOW_RUN
2020-08-02 08:27:02 -07:00
Liam Newman
dfb0a5240e Merge pull request #909 from JKalash/jkalash/master
GHCheckRun.getPullRequests public
2020-07-31 16:06:17 -07:00
Liam Newman
9cfc3c22b5 Add GHEvent.WORKFLOW_RUN 2020-07-31 16:03:34 -07:00
Liam Newman
b177d98e29 Populate Check pull requests
Turns out there were quite a few bugs in this area (it was exposed publicly before. Some
tweaking was needed and updates to the tests to show this working as expected.
2020-07-31 15:57:17 -07:00
Joe
5405fb0370 return unmodifiable list 2020-07-30 21:48:42 +01:00
Joe
72a1c24b3b format 2020-07-30 21:43:37 +01:00
Joe
f146ae94ec return iterable 2020-07-30 21:41:16 +01:00
Joe
a0bbba748a check suite exposes pull requests 2020-07-30 20:10:44 +01:00
Joe
81bf818573 pullRequests returns iterable 2020-07-30 20:01:44 +01:00
Joe
d5913dc292 fix array exposure 2020-07-30 15:25:35 +01:00
Joe Kalash
e1e901b794 Merge branch 'master' into jkalash/master 2020-07-30 14:01:01 +01:00
Joe
2f2f26767e make getPullRequests public 2020-07-30 13:59:36 +01:00
Liam Newman
bffa78c1b8 Merge pull request #907 from hub4j/dependabot/maven/org.mockito-mockito-core-3.4.6
Chore(deps-dev): Bump mockito-core from 3.4.4 to 3.4.6
2020-07-29 20:11:55 -07:00
dependabot[bot]
c55719c67a Chore(deps-dev): Bump mockito-core from 3.4.4 to 3.4.6
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.4.4 to 3.4.6.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.4.4...v3.4.6)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-30 02:00:49 +00:00
Liam Newman
cb3b4a6642 Merge pull request #906 from JKalash/jkalash/master
Merge arbitrary branches
2020-07-28 16:37:40 -07:00
Liam Newman
92c141cee6 Add support for string head
Also support all changes already merged.
2020-07-28 12:57:31 -07:00
Liam Newman
fd1a1a1c23 Simplified tests 2020-07-28 11:22:07 -07:00
Joe
b835884b2e fix test 2020-07-28 14:37:50 +01:00
Joe
660763908d test refactor 2020-07-28 14:24:35 +01:00
Joe
fe8bdb755a Merge branches method 2020-07-28 12:41:31 +01:00
Liam Newman
67dc6d2d23 Merge pull request #904 from Javaru/add-missing-org-permissions
Added MAINTAIN and TRIAGE to GHOrganization.Permission enum
2020-07-27 21:27:27 -07:00
Mark Vedder
9c8d73cbe2 Merge branch 'master' into add-missing-org-permissions 2020-07-27 18:54:32 -04:00
Liam Newman
5db97d92dd Merge pull request #899 from gastaldi/set_milestone
PullRequest.setMilestone should use the Issue API
2020-07-27 14:18:05 -07:00
Liam Newman
ac470dddb5 Merge branch 'master' into add-create-repo-with-template-support 2020-07-27 14:14:16 -07:00
Liam Newman
43063fe8ce Minor tweaks 2020-07-27 14:12:15 -07:00
George Gastaldi
59e0046c1e Validate argument in GitHub.getRepository
This avoids the ArrayIndexOutOfBoundsException when the argument format is invalid
2020-07-27 17:47:56 -03:00
George Gastaldi
36ab05c265 PullRequest.setMilestone should use the Issue API 2020-07-27 17:47:56 -03:00
Liam Newman
2b2be05dae Merge pull request #900 from gastaldi/repo_fix
Fixes modifyCollaborators for multiple users
2020-07-27 13:23:06 -07:00
Liam Newman
fb1adbd1ef Make withUrlPath() overwrite instead of append
I had some ideas about having multiple calls to  apend to build up paths,
but it turns out that idea is pretty bad.  `with*()` methods should
overwrite when called for the same field.

If we want to create and , we can do that later.
2020-07-27 13:12:46 -07:00
Javaru
ab68a59b25 Added MAINTAIN and TRIAGE to GHOrganization.Permission enum 2020-07-27 15:50:32 -04:00
George Gastaldi
9c7de767e9 Fixes modifyCollaborators for multiple users
Fixes #868
2020-07-27 12:37:34 -07:00
George Gastaldi
8ba5cf7c2e Formatting tweaks and fixes 2020-07-27 12:31:09 -07:00
Bonnie Young
b194a19b98 Merge branch 'master' into add-create-repo-with-template-support 2020-07-21 00:32:52 +08:00
Liam Newman
1d344b016f Merge pull request #898 from hub4j/dependabot/maven/org.mockito-mockito-core-3.4.4
Chore(deps-dev): Bump mockito-core from 3.4.2 to 3.4.4
2020-07-20 00:35:58 -07:00
dependabot[bot]
474f3ef4ca Chore(deps-dev): Bump mockito-core from 3.4.2 to 3.4.4
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.4.2 to 3.4.4.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.4.2...v3.4.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-20 02:00:54 +00:00
Yang Ting
9830927020 add create repo with template support
Signed-off-by: Yang Ting <bonnie.young@maxwit.com>
2020-07-19 23:07:19 +08:00
Liam Newman
727932a442 Merge pull request #895 from jeetchoudhary/protection
GHBranch getProtection method to return correct number of reviewers #890
2020-07-17 12:27:05 -07:00
jeetchoudhary
cd92b51845 Merge branch 'master' into protection 2020-07-17 23:59:51 +05:30
Liam Newman
fe26d16411 Update test and data to verify getProtection() code path
The create and get code paths are different.  Both need testing.
2020-07-17 10:50:54 -07:00
Liam Newman
d68c66ce2b Merge pull request #893 from hub4j/dependabot/maven/org.mockito-mockito-core-3.4.2
Chore(deps-dev): Bump mockito-core from 3.4.0 to 3.4.2
2020-07-17 09:59:31 -07:00
Jitender kumar
e7bfbfb48f reformat class 2020-07-17 17:28:15 +05:30
jeetchoudhary
f2a88ae61c fixing getRequiredReviewers to return count #890 2020-07-17 16:55:51 +05:30
jeetchoudhary
e2113f6ee5 Update rest request for test case 2020-07-17 16:52:17 +05:30
dependabot[bot]
3867224024 Chore(deps-dev): Bump mockito-core from 3.4.0 to 3.4.2
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.4.0 to 3.4.2.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.4.0...v3.4.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-17 02:01:30 +00:00
Liam Newman
9ee0bf43bc [maven-release-plugin] prepare for next development iteration 2020-07-16 15:16:56 -07:00
Liam Newman
2844542efa [maven-release-plugin] prepare release github-api-1.115 2020-07-16 15:16:47 -07:00
Liam Newman
e3fcae9392 Revert "Remove Java 15-ea"
This reverts commit c6ccfa91f3.
2020-07-15 15:32:46 -07:00
Liam Newman
c6ccfa91f3 Remove Java 15-ea
It is unclear exactly why this started failing but we're not interested figuring this out.
2020-07-15 15:19:06 -07:00
Liam Newman
b6fcee1cb9 Rollback to surefire 2.22.2 2020-07-15 15:14:16 -07:00
Liam Newman
9071befb04 Run slow or flaky tests in test phase 2020-07-15 15:05:26 -07:00
Liam Newman
bdd5fe98f3 Use file to specify slow-or-flaky-tests list 2020-07-15 15:00:03 -07:00
Liam Newman
a3d3e83a49 Move slow or flaky tests to separate surefire execution
This lets us have most tests run immediately and with no retries and then have slower tests that may be flaky run later with retries.
2020-07-15 14:45:32 -07:00
Liam Newman
08bde72028 Merge pull request #849 from alexanderkjall/add-support-for-child-teams
Added support for fetching what teams are part of this team.
2020-07-15 14:05:47 -07:00
Liam Newman
108a136368 Remove getChildTeams and add test for no children 2020-07-15 13:46:11 -07:00
Liam Newman
57d87ad6b1 Merge branch 'master' into add-support-for-child-teams 2020-07-15 13:28:32 -07:00
Liam Newman
0c22815ff7 Merge pull request #872 from MarcosCela/doc/org-level-resources
Add documentation for organization-level resources
2020-07-15 13:27:05 -07:00
Liam Newman
0ca792ecfd Merge pull request #830 from bitwiseman/task/rate-limit/full
Handle header and endpoint rate limit responses consistently
2020-07-15 12:42:11 -07:00
Liam Newman
987c34c69e Merge branch 'master' into task/rate-limit/full 2020-07-15 12:13:16 -07:00
Liam Newman
c1c02bc8ab Merge pull request #887 from hub4j/dependabot/maven/org.mockito-mockito-core-3.4.0
Chore(deps-dev): Bump mockito-core from 3.3.3 to 3.4.0
2020-07-14 12:02:54 -07:00
dependabot[bot]
4ee369f27c Chore(deps-dev): Bump mockito-core from 3.3.3 to 3.4.0
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.3.3 to 3.4.0.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.3.3...v3.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-13 15:52:33 +00:00
Liam Newman
c9012efdcb Merge pull request #886 from hub4j/dependabot/maven/net.revelc.code.formatter-formatter-maven-plugin-2.12.1
Chore(deps): Bump formatter-maven-plugin from 2.12.0 to 2.12.1
2020-07-13 08:51:51 -07:00
dependabot[bot]
41524fc67d Chore(deps): Bump formatter-maven-plugin from 2.12.0 to 2.12.1
Bumps [formatter-maven-plugin](https://github.com/revelc/formatter-maven-plugin) from 2.12.0 to 2.12.1.
- [Release notes](https://github.com/revelc/formatter-maven-plugin/releases)
- [Changelog](https://github.com/revelc/formatter-maven-plugin/blob/formatter-maven-plugin-2.12.1/CHANGELOG.md)
- [Commits](https://github.com/revelc/formatter-maven-plugin/compare/formatter-maven-plugin-2.12.0...formatter-maven-plugin-2.12.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-13 02:00:47 +00:00
Liam Newman
04ff61e981 Merge pull request #885 from XiongKezhi/add-missing-conclusion
Add the missing SKIPPED check run conclusion
2020-07-12 14:11:56 -07:00
Liam Newman
532468dc67 Update src/main/java/org/kohsuke/github/GHCheckRun.java 2020-07-12 13:41:57 -07:00
Kezhi Xiong
9c9a2dae47 Add JavaDoc for check run conclusion 2020-07-12 15:58:34 +08:00
Kezhi Xiong
c8a868b57f Add the missing SKIPPED check run conclusion 2020-07-12 15:54:09 +08:00
Liam Newman
4b3f81ee34 Clean up comments and javadoc 2020-07-10 10:51:20 -07:00
Liam Newman
afa170ba7c Add more tests for rate limit record selection 2020-07-10 09:01:29 -07:00
Liam Newman
46e3b2272e Clean up and reorganize changes
Changed GitHubRateLimitSpecifier to RateLimitTarget
Made RateLimitTarget public so it can be passed to GitHubBuilder
2020-07-10 09:01:29 -07:00
Liam Newman
52472e90ec Simplified rate limit record selection
Here we have another example of trying to do something clever when simplicity is the better choice.
Rather than trying to guess the rate limit record for a request based on the url path,
I added an enumeration which can be set on the request to say which rate limit record to applies.

This is simpler, safer, and faster than trying to guess the rate limit from the url path.
2020-07-10 09:01:29 -07:00
Liam Newman
4ef0d00846 Integrate full rate limit checking 2020-07-10 09:01:29 -07:00
Liam Newman
580f2537f2 Move GHRef readers to GHRef class 2020-07-09 15:00:40 -07:00
Liam Newman
3d9fd96026 Merge pull request #884 from bitwiseman/task/gitbucket
Workaround for GitBucket refs issue
2020-07-09 13:38:55 -07:00
Liam Newman
f449b92721 Workaround for GitBucket refs issue
The bug that caused this has been fixed by GitBucket but may not be released for some time.
It was a change to this library that broke them, so to be nice we're fully working around it here.

That said, the GET /refs endpoint is deprecated and will be going away at some point.
We will be making a breaking change in this area again in the next few months. We'll need to raise
it to GitBucket to make sure they handle it proproperly.
2020-07-09 09:50:29 -07:00
Liam Newman
3b0216b023 Merge pull request #877 from hub4j/dependabot/maven/com.github.tomakehurst-wiremock-jre8-standalone-2.27.1
Chore(deps-dev): Bump wiremock-jre8-standalone from 2.26.3 to 2.27.1
2020-07-07 12:40:23 -07:00
Liam Newman
98cf839737 Add new methods 2020-07-07 12:29:59 -07:00
dependabot[bot]
0bb0846505 Chore(deps-dev): Bump wiremock-jre8-standalone from 2.26.3 to 2.27.1
Bumps [wiremock-jre8-standalone](https://github.com/tomakehurst/wiremock) from 2.26.3 to 2.27.1.
- [Release notes](https://github.com/tomakehurst/wiremock/releases)
- [Commits](https://github.com/tomakehurst/wiremock/compare/2.26.3...2.27.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-07 19:23:07 +00:00
Liam Newman
70969400a3 Merge pull request #876 from jtnord/symlink-support
Add minimal symlink support via GHContent.getTarget()
2020-07-07 12:21:39 -07:00
Liam Newman
147e8d5d12 Merge branch 'master' into symlink-support 2020-07-07 11:38:14 -07:00
Liam Newman
cacc3e6edd Update formatter cache directory 2020-07-07 10:15:00 -07:00
Liam Newman
a284eca147 Shorten file paths for windows 2020-07-07 09:48:31 -07:00
James Nord
0d3ba9d7f0 formatting fixes 2020-07-07 13:29:33 +01:00
Liam Newman
be8064d642 Merge pull request #879 from hub4j/dependabot/maven/org.codehaus.mojo-animal-sniffer-maven-plugin-1.19
Chore(deps): Bump animal-sniffer-maven-plugin from 1.18 to 1.19
2020-07-06 10:15:33 -07:00
dependabot[bot]
e30dba742d Chore(deps): Bump animal-sniffer-maven-plugin from 1.18 to 1.19
Bumps [animal-sniffer-maven-plugin](https://github.com/mojohaus/animal-sniffer) from 1.18 to 1.19.
- [Release notes](https://github.com/mojohaus/animal-sniffer/releases)
- [Commits](https://github.com/mojohaus/animal-sniffer/compare/animal-sniffer-parent-1.18...animal-sniffer-parent-1.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-06 02:01:00 +00:00
James Nord
44b72ed647 Add initial symlink support.
this adds rudimentary symlink support (just enough to get a symlink).

still todo, howto handle GHRepository.getFileContent where the path
contains a symlink within the repository
2020-07-02 17:18:20 +01:00
Liam Newman
666bd77dac Merge pull request #874 from hub4j/bitwiseman-patch-1
Add "workflow_dispatch" to GHEvent
2020-07-02 08:52:31 -07:00
Liam Newman
0a6613e60d Add "workflow_dispatch" to GHEvent
This event is undocumented at this time, but this change will stop the deserialization errors.

Fixes #854
2020-07-01 15:57:33 -07:00
Liam Newman
62e186c123 Merge pull request #871 from hub4j/dependabot/maven/net.revelc.code.formatter-formatter-maven-plugin-2.12.0
Chore(deps): Bump formatter-maven-plugin from 2.11.0 to 2.12.0
2020-06-30 11:02:37 -07:00
Marcos.Cela
50dd8f5bcc add a new doc section "Working with organizations" with a simple example
Closes #812
2020-06-30 09:44:57 +02:00
Marcos Cela
d5fcac9c45 Merge pull request #1 from hub4j/master
Update base
2020-06-30 08:44:42 +02:00
dependabot[bot]
c2bed85190 Chore(deps): Bump formatter-maven-plugin from 2.11.0 to 2.12.0
Bumps [formatter-maven-plugin](https://github.com/revelc/formatter-maven-plugin) from 2.11.0 to 2.12.0.
- [Release notes](https://github.com/revelc/formatter-maven-plugin/releases)
- [Changelog](https://github.com/revelc/formatter-maven-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/revelc/formatter-maven-plugin/compare/formatter-maven-plugin-2.11.0...formatter-maven-plugin-2.12.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-30 02:00:52 +00:00
Liam Newman
183b463ef2 Merge branch 'master' into add-support-for-child-teams 2020-06-29 09:58:14 -07:00
Liam Newman
92fdac44a0 Merge pull request #869 from hub4j/dependabot/maven/org.apache.maven.plugins-maven-site-plugin-3.9.1
Chore(deps): Bump maven-site-plugin from 3.9.0 to 3.9.1
2020-06-29 09:57:00 -07:00
dependabot[bot]
12829ecc73 Chore(deps): Bump maven-site-plugin from 3.9.0 to 3.9.1
Bumps [maven-site-plugin](https://github.com/apache/maven-site-plugin) from 3.9.0 to 3.9.1.
- [Release notes](https://github.com/apache/maven-site-plugin/releases)
- [Commits](https://github.com/apache/maven-site-plugin/compare/maven-site-plugin-3.9.0...maven-site-plugin-3.9.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-25 02:00:46 +00:00
Alexander Kjäll
51319c3b26 use this.organization instead of providing the organization as a parameter 2020-06-24 07:30:59 +02:00
Liam Newman
8fd827040b Merge pull request #860 from hub4j/dependabot/github_actions/actions/cache-v2
Chore(deps): Bump actions/cache from v1 to v2
2020-06-23 09:24:06 -07:00
dependabot[bot]
5ec46eae0d Chore(deps): Bump actions/cache from v1 to v2
Bumps [actions/cache](https://github.com/actions/cache) from v1 to v2.
- [Release notes](https://github.com/actions/cache/releases)
- [Commits](https://github.com/actions/cache/compare/v1...b8204782bbb5f872091ecc5eb9cb7d004e35b1fa)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-23 14:59:54 +00:00
Liam Newman
32c03301be Merge pull request #853 from sullis/add-dependabot
add Dependabot
2020-06-23 07:59:26 -07:00
Liam Newman
df7f29b2ab Merge pull request #858 from hub4j/dependabot/maven/spotbugs.version-4.0.6
Chore(deps): Bump spotbugs.version from 4.0.4 to 4.0.6
2020-06-23 07:55:48 -07:00
dependabot-preview[bot]
e863113c36 Chore(deps): Bump spotbugs.version from 4.0.4 to 4.0.6
Bumps `spotbugs.version` from 4.0.4 to 4.0.6.

Updates `spotbugs` from 4.0.4 to 4.0.6
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.4...4.0.6)

Updates `spotbugs-annotations` from 4.0.4 to 4.0.6
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.4...4.0.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-23 06:40:11 +00:00
Liam Newman
8e2c1d7382 Merge pull request #851 from MarcosCela/fix/ghteambuilder-accept-long
GHTeamBuilder#parentTeamId now accepts a long instead of an int
2020-06-22 06:28:20 -07:00
Liam Newman
ab7b9cccba Merge branch 'master' into fix/ghteambuilder-accept-long 2020-06-22 06:18:54 -07:00
Liam Newman
81bf61a161 Merge pull request #857 from hub4j/dependabot/maven/com.github.spotbugs-spotbugs-maven-plugin-4.0.4
Chore(deps): Bump spotbugs-maven-plugin from 4.0.0 to 4.0.4
2020-06-22 06:14:39 -07:00
dependabot-preview[bot]
b40f008647 Chore(deps): Bump spotbugs-maven-plugin from 4.0.0 to 4.0.4
Bumps [spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) from 4.0.0 to 4.0.4.
- [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases)
- [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-4.0.0...spotbugs-maven-plugin-4.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 06:57:13 +00:00
Sean C. Sullivan
734e41702b add Dependabot
https://github.blog/2020-06-01-keep-all-your-packages-up-to-date-with-dependabot/
2020-06-20 07:10:28 -07:00
Alexander Kjäll
038dd20a91 added a unit test for fetching a child team 2020-06-19 08:27:25 +02:00
Marcos.Cela
1dd62b8550 add a simple test for GHTeamBuilder: create a team with a parent/child relation
Additionally, ensure that when creating the team and setting the parentTeamId
on the GHTeamBuilder, we receive it directly from a previously retrieved
GHTeam. This ensures that the return type of GHTeam#getId() is compatible
with GHTeamBuilder#parentTeamId()
2020-06-18 10:33:04 +02:00
Marcos.Cela
715deebe05 GHTeamBuilder#parentTeamId now accepts a long instead of an int
Closes #850
2020-06-17 12:15:29 +02:00
Alexander Kjäll
b3fe3d8590 Added support for fetching what teams are part of this team.
The call is to this endpoint https://developer.github.com/v3/teams/#list-child-teams-legacy
2020-06-17 09:38:17 +02:00
Liam Newman
f74c3ed3ea Merge pull request #848 from hub4j/dependabot/maven/org.kohsuke.stapler-stapler-1.260
Chore(deps-dev): Bump stapler from 1.259 to 1.260
2020-06-16 08:39:53 -07:00
Liam Newman
2c9aebeeed Merge pull request #847 from hub4j/timja-patch-1
Fix tag template in release drafter
2020-06-16 08:34:54 -07:00
dependabot-preview[bot]
7474f1e11f Chore(deps-dev): Bump stapler from 1.259 to 1.260
Bumps [stapler](https://github.com/stapler/stapler) from 1.259 to 1.260.
- [Release notes](https://github.com/stapler/stapler/releases)
- [Changelog](https://github.com/stapler/stapler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stapler/stapler/compare/stapler-parent-1.259...stapler-parent-1.260)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-16 06:28:21 +00:00
Tim Jacomb
dba9c55b64 Fix tag template in release drafter 2020-06-16 07:16:52 +01:00
Liam Newman
b432364397 [maven-release-plugin] prepare for next development iteration 2020-06-10 20:02:26 -07:00
Liam Newman
696967bdd1 [maven-release-plugin] prepare release github-api-1.114 2020-06-10 20:02:18 -07:00
Liam Newman
b76889efc3 Merge pull request #845 from bitwiseman/task/redo-822
Modify getRef() changes to be compatible with older GHE versions
2020-06-10 20:00:44 -07:00
Liam Newman
e6a7b64ebe Merge branch 'master' into task/redo-822 2020-06-10 19:53:42 -07:00
Liam Newman
9daa0df311 Modify getRef() changes to be compatible with older GHE versions
Fixes #844
    Fixes #794
2020-06-10 19:47:23 -07:00
Liam Newman
612800bda5 Merge pull request #843 from bitwiseman/task/body-close
[JENKINS-62655] Ensure connection response stream is always closed
2020-06-10 17:30:12 -07:00
Liam Newman
a6bbb1dec9 Ensure connection response stream is always closed 2020-06-10 17:22:25 -07:00
Liam Newman
873c93ab64 Merge pull request #841 from hub4j/dependabot/maven/org.apache.bcel-bcel-6.5.0
Chore(deps): Bump bcel from 6.4.1 to 6.5.0
2020-06-10 08:59:00 -07:00
dependabot-preview[bot]
d15242e2d2 Chore(deps): Bump bcel from 6.4.1 to 6.5.0
Bumps bcel from 6.4.1 to 6.5.0.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-10 03:50:37 +00:00
Liam Newman
992d2b937c Merge pull request #840 from hub4j/dependabot/maven/spotbugs.version-4.0.4
Chore(deps): Bump spotbugs.version from 4.0.3 to 4.0.4
2020-06-09 20:49:24 -07:00
dependabot-preview[bot]
1e05ddad4b Chore(deps): Bump spotbugs.version from 4.0.3 to 4.0.4
Bumps `spotbugs.version` from 4.0.3 to 4.0.4.

Updates `spotbugs` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.3...4.0.4)

Updates `spotbugs-annotations` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.3...4.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-09 06:33:50 +00:00
Liam Newman
4f8a64610b [maven-release-plugin] prepare for next development iteration 2020-06-08 14:37:20 -07:00
Liam Newman
b82366218c [maven-release-plugin] prepare release github-api-1.113 2020-06-08 14:37:11 -07:00
Liam Newman
acbe1f4cb3 Update PULL_REQUEST_TEMPLATE.md 2020-06-08 13:25:56 -07:00
Liam Newman
4c5e018583 Merge pull request #838 from Chew/feature/new-profile-data
Add bio, hireable, and twitter_username fields to Person
2020-06-08 12:21:16 -07:00
Liam Newman
6c0380e85c Merge pull request #839 from bitwiseman/issue-828
Add GitHub Team Discussions as GHDiscussion
2020-06-08 12:18:46 -07:00
Liam Newman
fde48e604f Test coverage and javadoc fixes 2020-06-08 12:06:39 -07:00
Liam Newman
e83a4de5fb Merge branch 'master' into feature/new-profile-data 2020-06-08 10:33:29 -07:00
Liam Newman
927d2799dc Move url construction to single method 2020-06-08 10:12:15 -07:00
Liam Newman
1ad701fe5d Add convenience override of getId() 2020-06-08 09:59:43 -07:00
Liam Newman
086425d2da Tweaks for batch update 2020-06-08 09:59:43 -07:00
Charles Moulliard
beca54416a Merge branch 'master' into issue-828 2020-06-08 18:43:15 +02:00
Chew
c92f5c5713 Update test value and add new test for Twitter Username 2020-06-07 15:05:02 -05:00
Chew
dee4e6caff Add twitter_username to Person and bio and hireable to User 2020-06-07 00:55:44 -05:00
Liam Newman
dd5a39e72e Improve wiremock stub accuracy 2020-06-06 16:29:26 -07:00
Charles Moulliard
e5ed52165c Fix: Add missing @param for the delete() method 2020-06-04 18:26:14 +02:00
Charles Moulliard
9484f8e0f5 Chore: Add more methods to test CRUD operations on discusions 2020-06-04 18:19:41 +02:00
Charles Moulliard
947caffe0a Chore: Add method to get a discussion using a number/id 2020-06-04 17:27:15 +02:00
Charles Moulliard
870090e8df Chore: Remove javadoc Throwing the exception for the GHDiscussionbuilder - update method 2020-06-04 13:51:04 +02:00
Charles Moulliard
73f07f13c5 Chore: Remove javadoc Throwing the exception 2020-06-04 13:47:41 +02:00
Charles Moulliard
d1952bf591 Chore: Reformat method 2020-06-04 13:37:08 +02:00
Charles Moulliard
5a612e1332 Chore: Add try/catch block if we cannot find the discussion to be updated 2020-06-04 13:25:57 +02:00
Charles Moulliard
b00a9faea6 Fix: Add missing parameter 2020-06-04 12:58:07 +02:00
Charles Moulliard
74db42a703 Chore: Add method to update a discussion 2020-06-04 12:52:58 +02:00
Charles Moulliard
ddf625ca04 Chore: Add method to delete a discussion using its number. Add field number 2020-06-04 12:20:36 +02:00
Charles Moulliard
eca2f017d8 Fix: Add missing import statement for the Jackson Annotation. Use the correct htmlUrl field 2020-06-04 11:32:33 +02:00
Charles Moulliard
3190bde343 Fix: Add mising try/catch block to report the exeption when no discussions are found 2020-06-04 11:31:50 +02:00
Charles Moulliard
c6ebf42a47 Update src/main/java/org/kohsuke/github/GHTeam.java
Dont wrapUp using the team object

Co-authored-by: Liam Newman <bitwiseman@gmail.com>
2020-06-04 11:14:42 +02:00
Charles Moulliard
c116b60d12 Update src/main/java/org/kohsuke/github/GHDiscussion.java
Add doc link to github team discussion API

Co-authored-by: Liam Newman <bitwiseman@gmail.com>
2020-06-04 11:13:19 +02:00
Charles Moulliard
5d09e6d9ab Update src/main/java/org/kohsuke/github/GHDiscussion.java
Remove `this.root` as it is already set with the org

Co-authored-by: Liam Newman <bitwiseman@gmail.com>
2020-06-04 11:12:38 +02:00
Charles Moulliard
2613ce0ac9 Update src/main/java/org/kohsuke/github/GHDiscussion.java
Remove to set the field `root`

Co-authored-by: Liam Newman <bitwiseman@gmail.com>
2020-06-04 11:10:21 +02:00
Charles Moulliard
a88e9b28ea Update src/main/java/org/kohsuke/github/GHDiscussion.java
Change the visibility of the fields from protected to private. Add @JacksonInject annotation. Rename html_url to htmlUrl as needed by Jackson

Co-authored-by: Liam Newman <bitwiseman@gmail.com>
2020-06-04 11:09:24 +02:00
Charles Moulliard
f0a3c26ee6 Fix: Add the missing correct file to check the discussion created using wiremock 2020-06-04 10:44:26 +02:00
Charles Moulliard
84c87ecb32 Chore: Fixed the null org within the generated json file but we still get an error 404 2020-06-04 08:49:16 +02:00
Charles Moulliard
6573f44d41 Fix: As the name of the organization could be empty/null, then use getLogin to get the org name 2020-06-04 07:46:51 +02:00
Charles Moulliard
3cacbc552c Fix: Set the organisation name to avoid to populate a url request having /orgs/null 2020-06-04 07:30:44 +02:00
Charles Moulliard
343d623e02 chore: Push new resource files generated 2020-06-04 07:22:53 +02:00
Charles Moulliard
6b80bb2b11 chore: Remove deleted resources files 2020-06-04 07:00:14 +02:00
Charles Moulliard
56fe7452eb chore. Review test case. Add new wrapUp methods 2020-06-04 06:59:41 +02:00
Charles Moulliard
d3a66f6605 chore: Regenerate new testing files 2020-05-29 17:37:49 +02:00
Charles Moulliard
dd7b4712f1 fix: Add missing @throws IOException 2020-05-29 17:24:49 +02:00
Charles Moulliard
9df5871f6b chore: wrapUp Github instance 2020-05-29 17:20:54 +02:00
Charles Moulliard
29aab9e9f4 chore: Add missing classes and test case 2020-05-29 16:34:07 +02:00
Charles Moulliard
af67eb7f0b feat: add new APi for Discussion 2020-05-29 16:28:47 +02:00
Liam Newman
10482c0141 [maven-release-plugin] prepare for next development iteration 2020-05-28 07:48:53 -07:00
Liam Newman
a7a792251a [maven-release-plugin] prepare release github-api-1.112 2020-05-28 07:48:45 -07:00
Liam Newman
aec2308144 Merge pull request #831 from hub4j/dependabot/maven/org.apache.maven.plugins-maven-project-info-reports-plugin-3.1.0
Bump maven-project-info-reports-plugin from 3.0.0 to 3.1.0
2020-05-28 07:34:56 -07:00
dependabot-preview[bot]
0741b8aa6a Bump maven-project-info-reports-plugin from 3.0.0 to 3.1.0
Bumps [maven-project-info-reports-plugin](https://github.com/apache/maven-project-info-reports-plugin) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/apache/maven-project-info-reports-plugin/releases)
- [Commits](https://github.com/apache/maven-project-info-reports-plugin/compare/maven-project-info-reports-plugin-3.0.0...maven-project-info-reports-plugin-3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-28 06:40:32 +00:00
Liam Newman
3082622394 Merge pull request #822 from bitwiseman/issue/794
Fixed getRef() to use git/ref endpoint instead of git/refs
2020-05-21 11:02:43 -07:00
Liam Newman
965c9cb0af Fixed getRef() to use git/ref endpoint instead of git/refs
Fixes #794
2020-05-21 10:41:36 -07:00
Liam Newman
495a46e2d8 Merge pull request #823 from bitwiseman/task/cleanup-more
Code cleanup for GHObject and GHRepositoryStatistics
2020-05-21 07:51:51 -07:00
Liam Newman
05bda1192e Merge branch 'master' into task/cleanup-more 2020-05-20 21:00:31 -07:00
Liam Newman
6058af0ca1 Merge pull request #821 from bitwiseman/issue/805
Populate Source and Parent if needed
2020-05-20 20:59:21 -07:00
Liam Newman
1eb8bf9719 Reduce round trips and cleanup test data 2020-05-20 19:13:37 -07:00
Liam Newman
afc02faeda Clean up GHObject field access 2020-05-20 19:11:48 -07:00
Liam Newman
66f22de90f Populate Source and Parent if needed
NOTE: this also addresses a bug in push events where the repository url is incorrect
2020-05-20 13:22:09 -07:00
Liam Newman
2949a2e0ff Clean up GHRepositoryStatistics constructors 2020-05-19 17:25:58 -07:00
Liam Newman
ba12efea9d Merge pull request #820 from bitwiseman/issue/800
Prevent NPE when accessing description for GHLicense
2020-05-19 17:25:14 -07:00
Liam Newman
e1180a12fb Merge pull request #817 from bitwiseman/issue/802
Consider header rate limit information for getRateLimit()
2020-05-19 17:08:25 -07:00
Liam Newman
1393706f13 Prevent NPE when accessing description for license
When license can be identified, the description will be null.  So will the url.
Tht means that url cannot be converted to string.

Fixes #800 .
2020-05-19 17:06:59 -07:00
Liam Newman
6f994f31f7 Update src/main/java/org/kohsuke/github/GitHubClient.java 2020-05-19 14:25:16 -07:00
Liam Newman
38aa99a063 Consider header rate limit information for getRateLimit()
Fixes #802
2020-05-18 13:56:10 -07:00
Liam Newman
85c44b3529 Merge pull request #809 from pzygielo/imports
Remove unused imports
2020-05-16 13:50:23 -07:00
Liam Newman
e1a2768de5 Merge pull request #810 from pzygielo/equals
Use .equals to compare Strings
2020-05-16 13:49:54 -07:00
Liam Newman
e1c9b27203 Merge pull request #811 from pzygielo/close
Be nice and close Closeable
2020-05-16 13:49:14 -07:00
Piotrek Żygieło
969f6ef826 Use .equals to compare Strings 2020-05-16 11:55:21 +02:00
Piotrek Żygieło
7abc4d4e76 Be nice and close Closeable 2020-05-16 11:49:02 +02:00
Piotrek Żygieło
ac97147c1f Remove unused imports 2020-05-16 09:58:20 +02:00
Liam Newman
dbd20fe396 Merge pull request #804 from springernature/master
fix to #803
2020-05-13 09:12:20 -07:00
Liam Newman
44e57c9c4b Merge pull request #808 from hub4j/dependabot/maven/spotbugs.version-4.0.3
Bump spotbugs.version from 4.0.2 to 4.0.3
2020-05-13 09:07:37 -07:00
Stefan Reisner
488e5e531f updated GHContentIntegrationTest.java
dummy commit
2020-05-13 12:39:10 +02:00
dependabot-preview[bot]
42a6a8d770 Bump spotbugs.version from 4.0.2 to 4.0.3
Bumps `spotbugs.version` from 4.0.2 to 4.0.3.

Updates `spotbugs` from 4.0.2 to 4.0.3
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.2...4.0.3)

Updates `spotbugs-annotations` from 4.0.2 to 4.0.3
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.2...4.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-13 06:52:27 +00:00
Liam Newman
f8e877ea05 Merge pull request #806 from bitwiseman/task/rename
Rename organization to hub4j
2020-05-12 08:52:06 -07:00
Stefan Reisner
65d6fc7272 updated GHContentIntegrationTest.java
dummy commit
2020-05-12 12:06:44 +02:00
Dr. Stefan Reisner
63ce8e461b Update src/test/java/org/kohsuke/github/GHContentIntegrationTest.java
Co-authored-by: Liam Newman <bitwiseman@gmail.com>
2020-05-12 09:59:53 +02:00
Stefan Reisner
fbf4c48461 updated GHContentIntegrationTest.java, src/test/resources/org/kohsuke/github/GHContentIntegrationTest/wiremock/**
adapting to new org hub4-test-org (was github-api-test-org)
2020-05-11 16:33:29 +02:00
Stefan Reisner
81a55db644 updated src/test/resources/org/kohsuke/github/GHContentIntegrationTest/wiremock/testGetFileWithNoneAsciiPath/** 2020-05-11 15:29:02 +02:00
Stefan Reisner
4d4edfa181 updated GHContentIntegrationTest.java
adapting testGetFileContentWithNonAsciiPath to shortened file path
2020-05-11 08:01:32 +02:00
Liam Newman
6f9182f1f6 Rename organization to hub4j
Fixes #801
2020-05-08 15:17:14 -07:00
Stefan Reisner
fa600c03e2 updated GHContentIntegrationTest.java
sorting imports
2020-05-06 17:33:11 +02:00
Dr. Stefan Reisner
4a53301e9f Merge branch 'master' into master 2020-05-06 17:26:06 +02:00
Stefan Reisner
676984b3d5 added src/test/resources/org/kohsuke/github/GHContentIntegrationTest/wiremock/testGetFileContentWithNonAsciiPath/** 2020-05-06 16:58:42 +02:00
Stefan Reisner
e6d7f7248b updated GitHubRequest.java
using URI.toASCIIString() instead of URI.toString() in urlPathEncode()
2020-05-06 16:54:21 +02:00
Stefan Reisner
50903b5c4a updated GHContentIntegrationTest.java 2020-05-06 16:53:23 +02:00
Liam Newman
01e399fb91 Add Java 15 early access to CI
Switch canary compile to Java 13.
2020-05-01 10:55:42 -07:00
Liam Newman
911aeb7af0 Merge pull request #796 from github-api/dependabot/maven/net.revelc.code-impsort-maven-plugin-1.4.1
Bump impsort-maven-plugin from 1.3.2 to 1.4.1
2020-04-27 14:21:34 -07:00
Liam Newman
7e5cd9abbc Merge branch 'master' into dependabot/maven/net.revelc.code-impsort-maven-plugin-1.4.1 2020-04-27 14:12:08 -07:00
Liam Newman
115527a21a Merge pull request #792 from bitwiseman/issue/682
Fix Gist getId() and deleteFile(), add getGistId()
2020-04-27 13:37:34 -07:00
Liam Newman
eff4f4f601 Merge branch 'master' into issue/682 2020-04-27 13:20:35 -07:00
Liam Newman
16e0099a0d Add deleteFile() to GHGist
Related to #466 and #484
2020-04-27 10:44:25 -07:00
Liam Newman
2c8c678275 Merge pull request #770 from sladyn98/change_url_methods
Change withURLPath to setRawURLPath
2020-04-27 09:54:14 -07:00
Liam Newman
3b51e87fbf Merge branch 'master' into change_url_methods 2020-04-27 09:48:23 -07:00
Liam Newman
6c6eef5e2b Merge pull request #795 from bitwiseman/task/check-raw-url
Check that raw url starts with 'http'
2020-04-27 09:47:24 -07:00
Liam Newman
6e5910f44c Check that raw url starts with 'http' 2020-04-27 09:41:43 -07:00
dependabot-preview[bot]
a967189bc6 Bump impsort-maven-plugin from 1.3.2 to 1.4.1
Bumps [impsort-maven-plugin](https://github.com/revelc/impsort-maven-plugin) from 1.3.2 to 1.4.1.
- [Release notes](https://github.com/revelc/impsort-maven-plugin/releases)
- [Commits](https://github.com/revelc/impsort-maven-plugin/compare/impsort-maven-plugin-1.3.2...impsort-maven-plugin-1.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 06:59:29 +00:00
Sladyn
7069176cf6 Apply suggestions from code review
Co-Authored-By: Liam Newman <bitwiseman@gmail.com>
2020-04-27 10:49:57 +05:30
Liam Newman
44dcbe773d Fix Gist getId() and add getGistId()
Fixes #682
2020-04-25 20:16:58 -07:00
Liam Newman
ca76975461 Record Disable test 2020-04-23 11:13:51 -07:00
Liam Newman
83122ac99e Take new snapshot of testGetProtection() 2020-04-23 11:13:51 -07:00
Sladyn Nunes
c3e9458555 Additional modifications to test 2020-04-23 11:13:51 -07:00
Sladyn Nunes
057ba38873 Added getProtectionTest 2020-04-23 11:13:50 -07:00
Sladyn Nunes
81d7d6236b Add resource files 2020-04-23 11:13:50 -07:00
Sladyn Nunes
191dd49653 added test and modified url 2020-04-23 11:13:50 -07:00
Sladyn Nunes
21e9dd6f51 Change withURLPath to setRawURLPath 2020-04-23 11:13:50 -07:00
Liam Newman
cc2d14acc6 Merge pull request #791 from ingwarsw/global_node_id
Add global node_id to GHObject + GHTeam extends GHObject
2020-04-22 13:15:13 -07:00
Liam Newman
87f37e9f1c Formatting and improved bridge method tests 2020-04-22 09:40:19 -07:00
Karol Lassak
d536a9f874 Merge branch 'master' into global_node_id 2020-04-19 11:41:17 +02:00
Karol Lassak
b45f353fa9 Fix tests + add deprecation to one of methods 2020-04-19 11:38:36 +02:00
Karol Lassak
a3073ec14e Fix formatting 2020-04-19 11:19:48 +02:00
Karol Lassak
f77eb33029 Add deprecated method 2020-04-19 11:18:29 +02:00
Liam Newman
c1c919097a Merge pull request #790 from chids/reintroduce-proxy-test-confirmation
Reintroduce the confirmation message for the Github proxy setup
2020-04-18 15:07:41 -07:00
Karol Lassak
e05348463c Fix javadoc 2020-04-18 14:32:51 +02:00
Karol Lassak
fdcf74eaf2 Add global node_id to GHObject + GHTeam extends GHObject 2020-04-18 14:23:06 +02:00
Mårten Gustafson
6d57a3e3b9 Reintroduce the confirmation message for the Github proxy setup
which is referenced from the contribution guidlines.
2020-04-17 15:17:19 +02:00
Liam Newman
1f449c866e Merge pull request #781 from bitwiseman/task/app-set-dep
Deprecate set methods that should not be public
2020-04-16 11:49:09 -07:00
Liam Newman
e12deccd24 Merge pull request #782 from chids/support-issue-event-attributes
Support issue event attributes
2020-04-16 11:36:42 -07:00
Mårten Gustafson
3184ebb5ee Link to Github docs for issue events. 2020-04-16 09:28:38 +02:00
Liam Newman
4a35ed2b35 Merge branch 'master' into support-issue-event-attributes 2020-04-16 00:02:42 -07:00
Liam Newman
5c9474d1c8 [maven-release-plugin] prepare for next development iteration 2020-04-15 23:48:24 -07:00
Liam Newman
2321dc50c5 [maven-release-plugin] prepare release github-api-1.111 2020-04-15 23:48:15 -07:00
Liam Newman
4efd2e8184 Merge pull request #786 from github-api/dependabot/maven/spotbugs.version-4.0.2
Bump spotbugs.version from 4.0.1 to 4.0.2
2020-04-15 23:43:50 -07:00
dependabot-preview[bot]
e30e153bfa Bump spotbugs.version from 4.0.1 to 4.0.2
Bumps `spotbugs.version` from 4.0.1 to 4.0.2.

Updates `spotbugs` from 4.0.1 to 4.0.2
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.1...4.0.2)

Updates `spotbugs-annotations` from 4.0.1 to 4.0.2
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.1...4.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-16 06:38:59 +00:00
Mårten Gustafson
2724211535 Merge branch 'master' into support-issue-event-attributes 2020-04-16 08:30:51 +02:00
Mårten Gustafson
81068de0f1 Revert "WireMockStatusReporterTest doesn't print to stdout as of"
This reverts commit d76718e8b2.
2020-04-16 08:26:03 +02:00
Liam Newman
7d842175f7 Merge pull request #783 from bitwiseman/issue/760
Expose MappingReader and MappingWriter
2020-04-15 16:58:01 -07:00
Liam Newman
e0aee9f361 Expose MappingReader and MappingWriter
Jenkins Blue Ocean made interesting design choices relating github-api interactions.

They mostly reused the existing API and OM, but in a few places they chose to
implement their own object mapping independent of this project. This is fine
as long as nothing in this project ever changes, including internals such
as ObjectMapper configuration or behavior.

Recent release have made changes to those internals which break assumptions made
in Blue Ocean.

This change exposes this project's MappingReader and MappingWriter to allow
for a fix to Blue Ocean requiring only minimal changes.

This doesn't prevent future changes from breaking Blue Ocean but at least makes
them much less likely.

Fixes #780
2020-04-15 16:39:59 -07:00
Mårten Gustafson
df576e2738 Expose and test per issue event attributes for milestone, label and
assignment events.
2020-04-14 11:47:44 +02:00
Mårten Gustafson
bb1356b25d Add Wiremock recordings for issue events. 2020-04-14 11:24:44 +02:00
Liam Newman
1b67960da4 Deprecate set methods that should not be public 2020-04-13 13:41:28 -07:00
Mårten Gustafson
d76718e8b2 WireMockStatusReporterTest doesn't print to stdout as of
061e8bb662.
2020-04-13 10:30:08 +02:00
Liam Newman
76c51922f1 [maven-release-plugin] prepare for next development iteration 2020-04-06 09:43:50 -07:00
Liam Newman
f95e89a136 [maven-release-plugin] prepare release github-api-1.110 2020-04-06 09:43:41 -07:00
Liam Newman
2dff60a23c Merge pull request #777 from bitwiseman/issue/775
Reverse removal of misnamed gitHttpTransportUrl
2020-04-06 09:38:47 -07:00
Liam Newman
95f83d1a29 Merge pull request #774 from martinvanzijl/issue_518_allow_getref_with_prefix
Allow "refs/" prefix in parameter to GHRepository.getRef()
2020-04-06 09:33:39 -07:00
Liam Newman
b875ccecc1 Reverse removal of misnamed gitHttpTransportUrl 2020-04-06 09:31:50 -07:00
Martin van Zijl
e4c3802f16 Revert accidental changes to addCollaborators test files. 2020-04-07 04:11:11 +12:00
Liam Newman
081e485f4f Merge pull request #773 from martinvanzijl/issue_444_unset_milestone
Add ability to unset the milestone of an issue
2020-04-05 12:57:10 -07:00
Liam Newman
4adf88da19 Merge pull request #767 from XiongKezhi/installation-repository-event
Installation repository event
2020-04-05 12:45:56 -07:00
Liam Newman
31e2b1b8d3 Merge branch 'master' into issue_444_unset_milestone 2020-04-05 12:41:02 -07:00
Martin van Zijl
bd28abd343 Allow "refs/" prefix in parameter to GHRepository.getRef().
Fixes #518.
2020-04-06 04:43:26 +12:00
August
955690b124 Rename refreash to populate and add node_id for GHRepository 2020-04-05 19:09:02 +08:00
Martin van Zijl
fa6f06ae15 Add ability to unset the milestone of an issue.
Fixes #444.
2020-04-05 16:16:04 +12:00
August
263de140c5 Removed InstallationRepository 2020-04-04 22:49:52 +08:00
Kezhi Xiong
ed85d06d69 Merge branch 'master' into installation-repository-event 2020-04-04 22:33:18 +08:00
August
4ff0870df8 Refresh repositories while warp up installation event 2020-04-04 22:30:05 +08:00
Liam Newman
410bac2040 [maven-release-plugin] prepare for next development iteration 2020-04-01 14:31:22 -07:00
Liam Newman
38b1e367b1 [maven-release-plugin] prepare release github-api-1.109 2020-04-01 14:31:14 -07:00
Liam Newman
3cddffa37f Merge pull request #768 from bitwiseman/task/jacoco-report
Add Jacoco report to site
2020-04-01 14:27:23 -07:00
Liam Newman
ea7a1a7175 More GHRateLimit test stabilization 2020-04-01 14:22:17 -07:00
Liam Newman
36b5601588 Add Jacoco report to site 2020-04-01 14:03:44 -07:00
Liam Newman
7fc68f2969 Merge branch 'master' into installation-repository-event 2020-04-01 12:29:13 -07:00
Liam Newman
c5ee07add4 Merge pull request #741 from sladyn98/add_has_projects
Add has_projects field to github repository
2020-04-01 08:33:59 -07:00
August
32ff315b6b Resolve spotbugs and format code 2020-04-01 16:58:02 +08:00
August
f919346f8f Add installation and installtion repositories event 2020-04-01 16:08:21 +08:00
Liam Newman
279df00404 Add checks for hasProjects() 2020-03-31 14:54:16 -07:00
Liam Newman
bfd4b17fa0 Merge remote-tracking branch 'upstream/master' into add_has_projects 2020-03-31 13:33:36 -07:00
Liam Newman
5fe2817164 Merge pull request #764 from bitwiseman/issue/valid_creds
Change credential check to use rate limit
2020-03-31 12:37:16 -07:00
Liam Newman
b337bb39bc Update PULL_REQUEST_TEMPLATE.md 2020-03-31 10:05:16 -07:00
Liam Newman
65ae41c5f1 Fix tests for isCredentialsValid 2020-03-31 09:36:26 -07:00
Liam Newman
796c644c4a Change credential check to use rate limit
Fixes #582
2020-03-31 08:28:57 -07:00
Liam Newman
bfd9023a27 Merge pull request #762 from bitwiseman/task/insensitive
Http header field names must be case-insensitive
2020-03-31 07:28:44 -07:00
Liam Newman
c9cdf5d03e Make rate limit tests tolerant of one second timing differences
Fixes #760
2020-03-30 19:55:19 -07:00
Liam Newman
f60bb41ad9 Move tests around for clarity 2020-03-30 19:15:00 -07:00
Liam Newman
c333903b4a Http header field names must be case-insensitive
GitHub has started changing their headers from capitalized words to all lowercase.
A recent change made the header fields querying case-senstive which broke gzip content detection.
This was not caught by tests because recorded files remain unchanged.
It is also possible that WireMock is auto-capitalizing.

This fixes the case-sensitivity issue and also extends that funcionality to anyone consuming the
headers generated by ResponseInfo.

Fixes #751
2020-03-30 17:31:42 -07:00
Liam Newman
dd55e8a22c Merge pull request #753 from jglick/createCheckRun
GHRepository.createCheckRun
2020-03-30 13:46:31 -07:00
Jesse Glick
3ab9381d0a createCheckRunErrMissingConclusion 2020-03-30 15:06:01 -04:00
Jesse Glick
58f1fe0671 createPendingCheckRun 2020-03-30 14:58:58 -04:00
Jesse Glick
82b9c05d0f Strengthened test a bit 2020-03-30 14:49:37 -04:00
Jesse Glick
7c9397f7f6 Switched from fluent style with .done() to accessible constructors 2020-03-30 14:46:56 -04:00
Jesse Glick
6214b6a3ff Regenerated WireMock metadata 2020-03-30 14:26:23 -04:00
Jesse Glick
883c8cc4c8 Merge branch 'master' of github.com:github-api/github-api into createCheckRun 2020-03-30 14:20:05 -04:00
Liam Newman
8d47c72913 Merge pull request #758 from XiongKezhi/add-check-suite-warp-up
Add wrapUp() for GHEventPayload.CheckSuite
2020-03-30 09:01:19 -07:00
Jesse Glick
89a6664e45 More links to GH docs from Javadoc 2020-03-27 14:07:40 -04:00
Jesse Glick
30d792d6e1 Remove ‘Draft’ from nested data class names 2020-03-27 14:04:42 -04:00
Liam Newman
3745bf3157 Merge branch 'master' into add_has_projects 2020-03-27 07:53:07 -07:00
Kezhi Xiong
a7fda3e50d Merge branch 'master' into add-check-suite-warp-up 2020-03-27 17:05:14 +08:00
XiongKezhi
7f07204fef Add warpUp() for GHEventPayload.CheckSuite 2020-03-27 16:57:06 +08:00
Jesse Glick
8b51a44b7c Merge branch 'createCheckRun' of github.com:jglick/github-api into createCheckRun 2020-03-26 19:10:29 -04:00
Jesse Glick
c499c73dcc Merge branch 'master' of github.com:github-api/github-api into createCheckRun 2020-03-26 19:09:13 -04:00
Jesse Glick
c01f3f5e8a NPE when there are no annotations 2020-03-26 19:07:35 -04:00
Liam Newman
2aef35655f Merge pull request #756 from bitwiseman/task/shorter
Shorten generated  test resource paths
2020-03-26 15:52:08 -07:00
Liam Newman
7ddf1f5830 Shorten generated test resource paths 2020-03-26 14:58:54 -07:00
Liam Newman
b2c513ea42 Merge branch 'master' into createCheckRun 2020-03-26 14:10:29 -07:00
Liam Newman
4c30f94355 Add Java 8 Site to CI 2020-03-26 14:06:46 -07:00
Liam Newman
e911e86c4c Merge pull request #755 from jglick/javadoc
#724 broke the site goal from .github/PULL_REQUEST_TEMPLATE.md
2020-03-26 13:57:51 -07:00
Liam Newman
ca640b3f64 Merge pull request #738 from sourabhsparkala/sign_verification
Get commit or tag signature verified flag
2020-03-26 13:56:03 -07:00
Jesse Glick
b4c4a05f3b Moving enums inside GHCheckRun 2020-03-26 16:44:01 -04:00
Jesse Glick
fd3c36a259 IMHO treating Javadoc warnings as fatal makes sources less legible and does not improve API comprehension at all 2020-03-26 16:33:57 -04:00
Jesse Glick
d8274ac2d4 Merge branch 'javadoc' into createCheckRun 2020-03-26 16:26:52 -04:00
Jesse Glick
9c7479f953 #724 broke the site goal from .github/PULL_REQUEST_TEMPLATE.md 2020-03-26 16:25:32 -04:00
Jesse Glick
b5dc3c4366 Added some Javadoc. 2020-03-26 16:22:04 -04:00
Jesse Glick
26b8082155 Handle >50 annotations 2020-03-26 16:14:39 -04:00
Liam Newman
418df15f7b Merge branch 'master' into sign_verification 2020-03-26 10:23:16 -07:00
Liam Newman
31ed0125b8 Shorten test paths for windows 2020-03-26 10:09:01 -07:00
Liam Newman
494318b879 Change method name to isVerified 2020-03-26 09:49:03 -07:00
Liam Newman
f554ddc372 Capitalize and Move GHVerification.Reason enum 2020-03-26 09:45:20 -07:00
Jesse Glick
03de12c221 SpotBugs 2020-03-25 20:03:18 -04:00
Jesse Glick
6c41f22b57 Coverage of DraftImage 2020-03-25 19:59:42 -04:00
Jesse Glick
7ae96388e3 Merge branch 'master' of github.com:github-api/github-api into createCheckRun 2020-03-25 19:21:46 -04:00
Jesse Glick
e8b4de00d2 WireMock coverage 2020-03-25 19:18:11 -04:00
Jesse Glick
cd7963b30d Acc to 7a650132c5/src/main/java/org/kohsuke/github/GitHubBuilder.java (L221) it is GITHUB_LOGIN not GITHUB_USER 2020-03-25 17:52:32 -04:00
Liam Newman
0dc44cffcf Merge branch 'master' into add_has_projects 2020-03-25 11:57:44 -07:00
Liam Newman
7a650132c5 Merge pull request #724 from bitwiseman/task/builder-updater
Add Builder/Creator/Updater for GHLabel
2020-03-25 11:56:41 -07:00
Jesse Glick
c7fb390c38 Introduced enums 2020-03-25 13:40:00 -04:00
Jesse Glick
572ff9df19 I guess nullability annotations can be omitted from internal members 2020-03-25 13:20:33 -04:00
Jesse Glick
b715e0cef7 Reformatted 2020-03-25 13:18:11 -04:00
Jesse Glick
36ab2a889f Redesigned using a fluent builder idiom 2020-03-25 13:14:06 -04:00
D067452
a78d2f28d7 Get commit or tag signature verified flag
This fixes #737

- A new entity GHVerification.java has been added which would be reflecting Verification flag
- Updating GHCommit.java and GHTagObject.java with GHVerification
- Altering few test cases AppTest.java and GHTagTest.java to verify if the Verification entity is being picked up
- A separate test class SignatureVerificationTest.java with the associated wiremock test resources
- Adding a new enum GHReason.java
- Updating tests to check the GHReason implementation, GHReasonTest.java with the associated wiremock test resources
2020-03-25 17:19:56 +01:00
Jesse Glick
7d5a39ed89 GHRepository.createCheckRun 2020-03-24 23:51:38 -04:00
Liam Newman
772272ff36 Re-record test for GHLabel 2020-03-24 12:32:13 -07:00
Liam Newman
2ab4eafee9 Tweaks and cleanup 2020-03-23 17:40:01 -07:00
Liam Newman
b15e0d4c45 Cleanup and tweaks 2020-03-23 17:40:01 -07:00
Liam Newman
b8180314d8 Change to Preview for new builder pattern 2020-03-23 17:40:01 -07:00
Liam Newman
fcb8d03a0f Ensure that Description is part of GHLabel comparision 2020-03-23 17:40:01 -07:00
Liam Newman
09ec89bc2e Remove Repository member from GHLabel
It turns out GHLabel instances do not need a reference to their repo, just to root.
2020-03-23 17:40:01 -07:00
Liam Newman
863ad0f486 Clarify behavior 2020-03-23 17:40:01 -07:00
Liam Newman
79a1bb3571 Update src/test/java/org/kohsuke/github/AppTest.java 2020-03-23 17:40:01 -07:00
Liam Newman
9f1d7323c7 Reverted getter changes to highlight the more important set/update changes 2020-03-23 17:40:01 -07:00
Liam Newman
64a82f4785 Clean up proposed API changes 2020-03-23 17:40:01 -07:00
Liam Newman
f37e4bd76e Private fields 2020-03-23 17:40:01 -07:00
Liam Newman
98ef2cc640 Update-in-place and safer single or batch calculation 2020-03-23 17:40:01 -07:00
Liam Newman
134222fd69 Minor cleanups 2020-03-23 17:40:01 -07:00
Liam Newman
0cb2371517 Third alternative proposal
This removes the  from the fields.  Functionally the behavior is unchanged but
it is no longer guaranteed at compile time.  This simplifies streamlines the code slightly,
but at the cost of only being able to assert immutability rather than know it.

However, as we move to using this structure through more of the library, this is may be a better choice.
There are so many places where the GitHub API itself returns partial records or updates them dynamically.
Trying to claim immutability where it doesn't exist is not great either.
2020-03-23 17:40:01 -07:00
Liam Newman
b7de4359fd Alternative proposal
The guts of this version are a bit ugly but they result reasonable API code without a ton of extra
code needed.
2020-03-23 17:40:01 -07:00
Liam Newman
2607d6a107 Make GHLabel example of proposed API design 2020-03-23 17:40:01 -07:00
Liam Newman
db46b1ce13 Merge pull request #752 from github-api/dependabot/maven/com.squareup.okio-okio-2.5.0
Bump okio from 2.4.3 to 2.5.0
2020-03-23 14:44:12 -07:00
dependabot-preview[bot]
d7b08d5207 Bump okio from 2.4.3 to 2.5.0
Bumps [okio](https://github.com/square/okio) from 2.4.3 to 2.5.0.
- [Release notes](https://github.com/square/okio/releases)
- [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/square/okio/compare/parent-2.4.3...parent-2.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-23 06:54:29 +00:00
Sladyn
29fbba832c Merge branch 'master' into add_has_projects 2020-03-21 23:03:10 +05:30
Liam Newman
fd621a442a Merge pull request #742 from sladyn98/addHtmlURL
Retrieve html_url from Pull Request Review Comment
2020-03-20 12:33:34 -07:00
Liam Newman
a1a73568ae Merge branch 'master' into addHtmlURL 2020-03-20 11:41:23 -07:00
Liam Newman
3daccbd6ec Merge pull request #740 from avano/list-checkruns-for-ref
[CheckRuns] Add method for listing checkruns for given ref
2020-03-20 11:39:40 -07:00
Liam Newman
293deadb48 Merge branch 'master' into addHtmlURL 2020-03-20 08:42:47 -07:00
Andrej Vano
452b56c47b [GHEvent] Add new enum for registry_package event 2020-03-20 11:47:04 +01:00
Andrej Vano
5cb6bfa633 [CheckRuns] Add method for listing checkruns for given ref 2020-03-20 11:47:04 +01:00
Sladyn Nunes
0515cee6f3 Merge branch 'addHtmlURL' of https://github.com/sladyn98/github-api into addHtmlURL 2020-03-20 11:57:58 +05:30
Sladyn Nunes
4247112539 Adjust format 2020-03-20 11:56:22 +05:30
Sladyn Nunes
8d3374f574 Added test 2020-03-20 11:27:29 +05:30
Liam Newman
26833e5f7c Merge branch 'master' into add_has_projects 2020-03-19 12:15:34 -07:00
Liam Newman
6752b46f67 Merge pull request #750 from github-api/dependabot/maven/spotbugs.version-4.0.1
Bump spotbugs.version from 4.0.0 to 4.0.1
2020-03-19 10:30:48 -07:00
dependabot-preview[bot]
b9429ffcaa Bump spotbugs.version from 4.0.0 to 4.0.1
Bumps `spotbugs.version` from 4.0.0 to 4.0.1.

Updates `spotbugs` from 4.0.0 to 4.0.1
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.0...4.0.1)

Updates `spotbugs-annotations` from 4.0.0 to 4.0.1
- [Release notes](https://github.com/spotbugs/spotbugs/releases)
- [Changelog](https://github.com/spotbugs/spotbugs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spotbugs/spotbugs/compare/4.0.0...4.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-19 06:35:16 +00:00
Liam Newman
10827c7e21 Merge branch 'master' into addHtmlURL 2020-03-18 08:43:43 -07:00
Liam Newman
23cb4a34a4 Merge branch 'master' into add_has_projects 2020-03-18 08:43:20 -07:00
Liam Newman
adfd09565f Merge pull request #733 from ingwarsw/add_get_team_by_slug
Make getTeambySlug faster
2020-03-17 15:23:14 -07:00
Karol Lassak
78b9ff49d4 Fix tests 2020-03-17 22:36:54 +01:00
Karol Lassak
fca425d25e Add test for old getteam method 2020-03-17 22:34:13 +01:00
Karol Lassak
1a4238156c Fix javadocs 2020-03-17 11:34:31 +01:00
Karol Lassak
f6210cc014 Change variable name to something meningfull 2020-03-17 11:21:58 +01:00
Karol Lassak
6c8b466e59 Add mocks for tests 2020-03-17 11:18:50 +01:00
Karol Lassak
2aebe97f9f Add/restore test for getTeam 2020-03-17 11:18:33 +01:00
Karol Lassak
157724bff8 Fix rest of tests 2020-03-17 10:20:42 +01:00
Karol Lassak
6cbb1a0bee Fix tests partially 2020-03-17 10:13:43 +01:00
Karol Lassak
960a13dd38 Merge branch 'master' into add_get_team_by_slug 2020-03-17 09:08:34 +01:00
Karol Lassak
9213f80435 Add comment to deprecation
Co-Authored-By: Liam Newman <bitwiseman@gmail.com>
2020-03-17 09:07:37 +01:00
Liam Newman
bccae94c7a Merge pull request #734 from github-api/dependabot/maven/org.apache.maven.plugins-maven-site-plugin-3.9.0
Bump maven-site-plugin from 3.8.2 to 3.9.0
2020-03-16 12:57:09 -07:00
Liam Newman
d71f77ce06 Merge pull request #746 from github-api/dependabot/maven/com.github.spotbugs-spotbugs-maven-plugin-4.0.0
Bump spotbugs-maven-plugin from 3.1.12.2 to 4.0.0
2020-03-16 12:56:54 -07:00
Liam Newman
2787f3dc71 Merge pull request #730 from github-api/dependabot/maven/com.squareup.okhttp3-okhttp-4.4.1
Bump okhttp from 4.4.0 to 4.4.1
2020-03-16 12:56:40 -07:00
dependabot-preview[bot]
fb00baab5b Bump maven-site-plugin from 3.8.2 to 3.9.0
Bumps [maven-site-plugin](https://github.com/apache/maven-site-plugin) from 3.8.2 to 3.9.0.
- [Release notes](https://github.com/apache/maven-site-plugin/releases)
- [Commits](https://github.com/apache/maven-site-plugin/compare/maven-site-plugin-3.8.2...maven-site-plugin-3.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 19:29:36 +00:00
dependabot-preview[bot]
9e22155d31 Bump okhttp from 4.4.0 to 4.4.1
Bumps [okhttp](https://github.com/square/okhttp) from 4.4.0 to 4.4.1.
- [Release notes](https://github.com/square/okhttp/releases)
- [Changelog](https://github.com/square/okhttp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/square/okhttp/compare/parent-4.4.0...parent-4.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 19:29:35 +00:00
dependabot-preview[bot]
963373435d Bump spotbugs-maven-plugin from 3.1.12.2 to 4.0.0
Bumps [spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) from 3.1.12.2 to 4.0.0.
- [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases)
- [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-3.1.12.2...spotbugs-maven-plugin-4.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 19:29:30 +00:00
Liam Newman
377987fa92 Merge pull request #747 from sladyn98/add_ci_status_badge
Added github CI status badge
2020-03-16 12:28:18 -07:00
Liam Newman
0b6980639e Merge pull request #745 from github-api/dependabot/maven/org.mockito-mockito-core-3.3.3
Bump mockito-core from 3.3.1 to 3.3.3
2020-03-16 12:26:26 -07:00
Liam Newman
4f1cc9f94f Merge pull request #744 from github-api/dependabot/maven/org.apache.maven.plugins-maven-javadoc-plugin-3.2.0
Bump maven-javadoc-plugin from 3.1.1 to 3.2.0
2020-03-16 12:26:12 -07:00
dependabot-preview[bot]
6e5434a0ec Bump mockito-core from 3.3.1 to 3.3.3
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.3.1 to 3.3.3.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.3.1...v3.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 19:25:57 +00:00
dependabot-preview[bot]
3244f7c38f Bump maven-javadoc-plugin from 3.1.1 to 3.2.0
Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.1.1...maven-javadoc-plugin-3.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 19:25:56 +00:00
Liam Newman
f27b676e89 Merge pull request #743 from github-api/dependabot/maven/org.eclipse.jgit-org.eclipse.jgit-5.7.0.202003110725-r
Bump org.eclipse.jgit from 5.6.1.202002131546-r to 5.7.0.202003110725-r
2020-03-16 12:25:03 -07:00
Liam Newman
4f2a80a4a3 Merge pull request #732 from github-api/dependabot/maven/com.github.tomakehurst-wiremock-jre8-standalone-2.26.3
Bump wiremock-jre8-standalone from 2.26.2 to 2.26.3
2020-03-16 12:24:43 -07:00
Sladyn
a51bc27829 Merge branch 'master' into add_ci_status_badge 2020-03-16 23:35:17 +05:30
Sladyn Nunes
4fd321c93d Added github CI status badge 2020-03-16 23:32:23 +05:30
dependabot-preview[bot]
bbd62bdef5 Bump org.eclipse.jgit from 5.6.1.202002131546-r to 5.7.0.202003110725-r
Bumps org.eclipse.jgit from 5.6.1.202002131546-r to 5.7.0.202003110725-r.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 06:40:34 +00:00
Sladyn
4bb1d78939 Merge branch 'master' into addHtmlURL 2020-03-15 18:41:22 +05:30
Sladyn Nunes
53c37ef413 Retrieve html_url from PRReviewComment 2020-03-15 18:30:29 +05:30
Sladyn
a6511b6c5a Merge branch 'master' into add_has_projects 2020-03-15 17:30:45 +05:30
Sladyn Nunes
829e96a2d0 Add has_projects field to github repository 2020-03-15 14:44:52 +05:30
Karol Lassak
2e25f37433 Format code 2020-03-09 16:39:22 +01:00
Karol Lassak
fbf6c73226 Make getTeambySlug fast enought 2020-03-09 16:04:01 +01:00
dependabot-preview[bot]
aab54e3f23 Bump wiremock-jre8-standalone from 2.26.2 to 2.26.3
Bumps [wiremock-jre8-standalone](https://github.com/tomakehurst/wiremock) from 2.26.2 to 2.26.3.
- [Release notes](https://github.com/tomakehurst/wiremock/releases)
- [Commits](https://github.com/tomakehurst/wiremock/compare/2.26.2...2.26.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-09 06:47:44 +00:00
Liam Newman
a6eff7fbfb [maven-release-plugin] prepare for next development iteration 2020-03-04 16:54:50 -08:00
Liam Newman
d5667d2473 [maven-release-plugin] prepare release github-api-1.108 2020-03-04 16:54:42 -08:00
Liam Newman
a42305dd59 Revert "Removed extraneous author javadocs"
This reverts commit 888abc9e2a.
2020-03-04 11:32:12 -08:00
Liam Newman
c22a718d14 Merge pull request #723 from XiongKezhi/complete-checks-api
Complete checks api
2020-03-03 23:03:10 -08:00
Liam Newman
d0b23c79e2 Merge branch 'master' into complete-checks-api 2020-03-03 19:59:21 -08:00
Liam Newman
76da04afd8 Merge pull request #725 from github-api/dependabot/maven/com.github.tomakehurst-wiremock-jre8-standalone-2.26.2
Bump wiremock-jre8-standalone from 2.26.1 to 2.26.2
2020-03-03 12:55:59 -08:00
XiongKezhi
768f60709f Add Output and more tests 2020-03-03 23:45:01 +08:00
dependabot-preview[bot]
8cd3acd318 Bump wiremock-jre8-standalone from 2.26.1 to 2.26.2
Bumps [wiremock-jre8-standalone](https://github.com/tomakehurst/wiremock) from 2.26.1 to 2.26.2.
- [Release notes](https://github.com/tomakehurst/wiremock/releases)
- [Commits](https://github.com/tomakehurst/wiremock/compare/2.26.1...2.26.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-03 06:35:55 +00:00
Kezhi Xiong
ce7cfc0648 Merge branch 'master' into complete-checks-api 2020-03-03 12:57:42 +08:00
Liam Newman
8b6cf55473 Merge pull request #719 from bitwiseman/task/deprecated
Remove a few long deprecated methods and fully annotate others
2020-03-02 14:06:50 -08:00
Liam Newman
75d95d844c Update src/test/java/org/kohsuke/github/AppTest.java
Co-Authored-By: Karl Shultz <kshultz@cloudbees.com>
2020-03-02 08:41:21 -08:00
XiongKezhi
f54bfd3fb5 Fixed JavaDoc warning reported by maven site 2020-03-01 22:18:36 +08:00
XiongKezhi
f8a8ee9b9d Format code 2020-03-01 22:14:53 +08:00
XiongKezhi
16faaae199 Add GHCheckSuite 2020-03-01 21:59:16 +08:00
XiongKezhi
375417527b Change timestamps property back to String 2020-03-01 15:17:24 +08:00
XiongKezhi
10b01ca6b3 using Date for timestamps and add more JavaDoc 2020-03-01 14:01:59 +08:00
Liam Newman
f9006af04c Merge branch 'master' into complete-checks-api 2020-02-29 15:39:38 -08:00
Kezhi Xiong
57f947576e Delete empty line in JavaDoc 2020-02-29 20:15:32 +08:00
XiongKezhi
5a8f8c345b parse completedAt and startedAt into Date in getters 2020-02-29 18:09:25 +08:00
XiongKezhi
e96067e3c8 Merge remote-tracking branch 'origin/complete-checks-api' into complete-checks-api 2020-02-29 13:27:02 +08:00
XiongKezhi
2242174515 add Output in GHCheckRun 2020-02-29 13:26:59 +08:00
Kezhi Xiong
73179c118b Fixed typo in JavaDoc of getApp 2020-02-29 13:19:14 +08:00
Liam Newman
5b575134fc Merge branch 'master' into task/deprecated 2020-02-28 14:38:30 -08:00
Liam Newman
c11c06b896 Merge pull request #720 from bitwiseman/task/inject-root
Enable injection of GitHub and other values into mapping
2020-02-28 14:38:09 -08:00
Liam Newman
ba8d2a251f Merge branch 'master' into task/deprecated 2020-02-28 08:37:51 -08:00
Liam Newman
c9589b73f4 Merge pull request #722 from github-api/dependabot/maven/org.mockito-mockito-core-3.3.1
Bump mockito-core from 3.3.0 to 3.3.1
2020-02-28 08:37:41 -08:00
Liam Newman
32f4425100 Merge pull request #721 from github-api/dependabot/maven/com.github.tomakehurst-wiremock-jre8-standalone-2.26.1
Bump wiremock-jre8-standalone from 2.26.0 to 2.26.1
2020-02-28 08:37:27 -08:00
XiongKezhi
05e81484f1 format code 2020-02-28 16:57:19 +08:00
XiongKezhi
10cc79f737 add more properties to GHCheckRun 2020-02-28 15:40:51 +08:00
dependabot-preview[bot]
957d9b180d Bump mockito-core from 3.3.0 to 3.3.1
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.3.0...v3.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-28 06:31:41 +00:00
dependabot-preview[bot]
883204fc43 Bump wiremock-jre8-standalone from 2.26.0 to 2.26.1
Bumps [wiremock-jre8-standalone](https://github.com/tomakehurst/wiremock) from 2.26.0 to 2.26.1.
- [Release notes](https://github.com/tomakehurst/wiremock/releases)
- [Commits](https://github.com/tomakehurst/wiremock/compare/2.26.0...2.26.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-28 06:31:11 +00:00
Liam Newman
6d3904fbbd Change name of inject methods 2020-02-27 14:27:57 -08:00
Liam Newman
56a51f18e7 Update src/main/java/org/kohsuke/github/GHIssue.java 2020-02-27 14:20:03 -08:00
Liam Newman
307508b7a0 Move GHGist from late binding to inject bind 2020-02-27 10:23:54 -08:00
Liam Newman
66fce79427 Add ability to inject other local bindings 2020-02-27 10:23:31 -08:00
Liam Newman
5e5708d8d4 Clean up GHPerson deprecated a bit more 2020-02-27 10:16:48 -08:00
Liam Newman
944d92bbb4 Make more methods as deprecated 2020-02-27 09:40:03 -08:00
Liam Newman
0155d5aa39 Make HttpConnector a functional interface 2020-02-27 09:39:03 -08:00
Liam Newman
fe4f45c2b0 Remove DeleteToken class the was never in github v3 api 2020-02-27 09:38:50 -08:00
Liam Newman
1b63a58e63 Increase coverage 2020-02-27 09:38:24 -08:00
Liam Newman
46a141db9c Use consistent templating for all tests 2020-02-25 14:43:37 -08:00
Liam Newman
66de06956c Merge pull request #696 from nobe0716/feature/delete_branch_automatically
Add automatic deletion of branches that merged by PR
2020-02-25 13:44:01 -08:00
Liam Newman
713dd62bd1 Take new snapshot 2020-02-25 12:37:58 -08:00
Liam Newman
5ac65aafad Merge pull request #715 from Sage-Pierce/#714
[#714]Fix query parameter construction of org member filter
2020-02-25 12:17:30 -08:00
Liam Newman
4aef92e6fe Merge pull request #717 from bitwiseman/task/remove-fetch-array
Deprecate PagedIterable.asList() and PagedIterable.asSet()
2020-02-25 12:14:39 -08:00
Sage Pierce
a1b0e771e5 Merge branch 'master' into #714 2020-02-25 08:46:30 -06:00
spierce
5baeac4706 [#714]More specific assertions; Add test for members with filter 2020-02-25 08:42:10 -06:00
Noah J
87aa9bd673 Merge branch 'master' into feature/delete_branch_automatically 2020-02-25 14:22:14 +09:00
Liam Newman
2ec5ca56d5 Merge branch 'master' into task/remove-fetch-array 2020-02-24 20:34:26 -08:00
Liam Newman
b5c7f83ec8 Merge pull request #718 from bitwiseman/task/iterator-remove
Task/iterator remove
2020-02-24 20:30:35 -08:00
Liam Newman
eb3ebdbf52 Merge pull request #716 from bitwiseman/task/inject-response
Use InjectableValue to provide response info
2020-02-24 20:04:40 -08:00
Liam Newman
c60698ff7e Iterator.remove() has a default implementation 2020-02-24 20:03:50 -08:00
Liam Newman
f8c2cda257 Use InjectableValue to provide response info 2020-02-24 19:54:40 -08:00
Liam Newman
48f6c195e0 Remove toIterable from RequestBuilder 2020-02-24 19:31:53 -08:00
Liam Newman
804fa60317 Deprecate asList and asSet 2020-02-24 18:40:23 -08:00
Liam Newman
d77b99d3d4 Remove fetchArray method 2020-02-24 18:28:18 -08:00
spierce
006f1271d6 [#714]Add test for new method 2020-02-24 17:22:03 -06:00
spierce
0d14514712 [#714]Formatting fix 2020-02-24 16:47:35 -06:00
spierce
f25e5f9488 [#714]Fix query parameter construction of org member filter 2020-02-24 15:57:08 -06:00
Liam Newman
9e8bbfd175 Merge pull request #712 from github-api/dependabot/maven/org.mockito-mockito-core-3.3.0
Bump mockito-core from 3.2.4 to 3.3.0
2020-02-24 07:23:34 -08:00
Liam Newman
3d11c96e23 Merge pull request #713 from github-api/oleg-nenashev-patch-1
Fix scm.url in pom.xml so that Dependabot can pick up changelogs
2020-02-24 07:23:10 -08:00
Oleg Nenashev
a670737ca5 Fix scm.url in pom.xml so that Dependabot can pick up changelogs 2020-02-24 10:10:30 +01:00
dependabot-preview[bot]
9fdd982e73 Bump mockito-core from 3.2.4 to 3.3.0
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.2.4 to 3.3.0.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.2.4...v3.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 06:44:28 +00:00
Liam Newman
8024918e08 [maven-release-plugin] prepare for next development iteration 2020-02-22 20:19:04 -08:00
Liam Newman
cda7607e1c [maven-release-plugin] prepare release github-api-1.107 2020-02-22 20:18:57 -08:00
Liam Newman
816c83c80a Merge branch 'master' into feature/delete_branch_automatically 2020-02-22 19:33:46 -08:00
Liam Newman
0c3c490d58 Merge pull request #707 from rdvdijk/add-rocket-eyes-reactions
Add support for rocket and eyes reactions.
2020-02-22 19:33:08 -08:00
Liam Newman
99da6fb66f Merge pull request #710 from avano/checks
CheckRun - Add ability to get the head sha + Implement GH Status Event
2020-02-22 19:17:06 -08:00
Liam Newman
fa2601386c Add tests for new reactions 2020-02-22 19:16:33 -08:00
Liam Newman
122833b0e3 Merge branch 'master' into checks 2020-02-22 18:48:50 -08:00
Liam Newman
8618dbf0d5 Merge pull request #709 from bitwiseman/issue/708
Fix for NullPointer in issue search results
2020-02-22 18:42:09 -08:00
Liam Newman
a0baf33459 Fix for NullPointer in issue search results
User reported #708 which made me realize that search tests were basically all disabled.
This terms on two basic search tests and also makes it so GHIssue can continue to work without
a GHRepository set on it.

Fixes #708
2020-02-22 17:01:12 -08:00
Andrej Vano
0ee66ea928 [Status] Add GHEventPayload.Status class 2020-02-22 18:14:03 +01:00
Andrej Vano
f68d4aaf5b [CheckRun] Add ability to access HEAD SHA 2020-02-22 18:10:27 +01:00
Liam Newman
888abc9e2a Removed extraneous author javadocs 2020-02-21 15:58:39 -08:00
Liam Newman
c8115b1c10 Remove shading 2020-02-21 15:58:39 -08:00
Liam Newman
137d4f591f Update maven-build.yml 2020-02-21 15:44:31 -08:00
Liam Newman
337d49770d Update maven-build.yml 2020-02-21 15:42:28 -08:00
Liam Newman
614c5578b0 Fix code coverage and GHRepositoryTraffic test 2020-02-21 15:35:45 -08:00
Liam Newman
d456e60800 Check code coverage on ubuntu 2020-02-21 13:17:31 -08:00
Liam Newman
064206fb9a Merge pull request #706 from bitwiseman/task/guard
Add basic rate limit checker
2020-02-21 13:06:51 -08:00
Liam Newman
a68fe3b39d More javadoc because words are hard 2020-02-21 12:04:25 -08:00
Liam Newman
1904c82941 PR feedback 2020-02-21 10:52:28 -08:00
Roel van Dijk
6fc9dd4b30 Add support for rocket and eyes reactions. 2020-02-21 10:59:17 +01:00
Liam Newman
158a31e924 Added javadocs and other cleanup
Whenever I submit a PR and then start looking at it as a reviewer, I immediately find a bunch of things that need changing.
2020-02-20 18:53:13 -08:00
Liam Newman
b70b924db4 Inital implmentation of RateLimitChecker
This is a stripped down rate limit checking implmentation that handles the infrastructure
of deciding how to get rate limit information and leaves it to other implementers to
decided what kind of checks they want to do and how long they want to wait.

The implmentation supports checkers that sleep less than the full time until the
rate limit is expected to reset, allowing for polling and notifying clients of why their query
is not returning.

A basic checker which sleeps until the rate limit is expected to reset is included as working example..
2020-02-20 16:03:46 -08:00
Liam Newman
9018d72e97 Merge pull request #697 from bitwiseman/tast/response-info
Refactor `Requester` into multiple smaller classes
2020-02-20 15:59:11 -08:00
Liam Newman
5c395138ed Merge pull request #705 from github-api/dependabot/maven/org.eclipse.jgit-org.eclipse.jgit-5.6.1.202002131546-r
Bump org.eclipse.jgit from 5.6.0.201912101111-r to 5.6.1.202002131546-r
2020-02-19 16:01:40 -08:00
Liam Newman
af157adc1b Merge pull request #704 from github-api/dependabot/maven/com.squareup.okhttp3-okhttp-4.4.0
Bump okhttp from 4.3.1 to 4.4.0
2020-02-19 16:01:21 -08:00
Liam Newman
1db4fca9db Comment tweaks 2020-02-18 09:02:52 -08:00
dependabot-preview[bot]
013f475859 Bump org.eclipse.jgit from 5.6.0.201912101111-r to 5.6.1.202002131546-r
Bumps org.eclipse.jgit from 5.6.0.201912101111-r to 5.6.1.202002131546-r.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-18 06:36:30 +00:00
dependabot-preview[bot]
b5bc38fa52 Bump okhttp from 4.3.1 to 4.4.0
Bumps [okhttp](https://github.com/square/okhttp) from 4.3.1 to 4.4.0.
- [Release notes](https://github.com/square/okhttp/releases)
- [Changelog](https://github.com/square/okhttp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/square/okhttp/compare/parent-4.3.1...parent-4.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-18 06:36:08 +00:00
Liam Newman
bd0e0cdfa4 Revert synchronization in iterators
These were not synchronized before we should leave them fix this in a future change
2020-02-17 20:08:52 -08:00
Liam Newman
dade4c4cc4 Bump spotbugs to 4.0.0 2020-02-17 13:11:00 -08:00
Liam Newman
acc5a89dff Class clean up
We don't need two layers of PageIterator just to get the final response.
Also made iterators thread-safe.
And added more detailed comments.
2020-02-17 12:55:44 -08:00
sunghyo-jung
d34881aa25 Add updated mapping files 2020-02-17 18:43:59 +09:00
sunghyo-jung
b8ad48997b Rollback field name, add mapping files
`delete_branch_on_merge` is field of github repository,
So use it as same literal (ref. https://developer.github.com/v3/repos/)

Use `getRepository` instead of `getTempRepository` at GHRepositoryTest
2020-02-17 18:42:30 +09:00
sunghyo-jung
77754b7246 Merge branch 'feature/delete_branch_automatically' of https://github.com/nobe0716/github-api into feature/delete_branch_automatically 2020-02-17 17:05:19 +09:00
sunghyo-jung
6d5bf49a51 Apply CamelCase on field delete_branch_on_merge 2020-02-17 17:03:43 +09:00
Liam Newman
b7af635a9a Address PR feedback 2020-02-16 21:33:19 -08:00
Noah J
f53b4e959c Merge branch 'master' into feature/delete_branch_automatically 2020-02-14 01:44:39 +09:00
nobe0716
6716d156bb Apply changes 2020-02-14 01:44:04 +09:00
Liam Newman
dc33e28452 Create GitHubHttpUrlConnectionClient to encapsulate interactions with HttpUrlConnection 2020-02-13 08:37:07 -08:00
Liam Newman
9da4781759 Update src/main/java/org/kohsuke/github/GitHub.java 2020-02-12 23:59:15 -08:00
Liam Newman
0c6959cb4a Merge remote-tracking branch 'github-api/master' into tast/response-info 2020-02-12 23:52:45 -08:00
Liam Newman
ff3136df70 Move a few static helpers to GitHubClient 2020-02-12 23:48:33 -08:00
Liam Newman
326c627221 Merge pull request #698 from github-api/dependabot/maven/org.apache.maven.plugins-maven-shade-plugin-3.2.2
Bump maven-shade-plugin from 3.2.1 to 3.2.2
2020-02-12 23:33:14 -08:00
dependabot-preview[bot]
075f382a8f Bump maven-shade-plugin from 3.2.1 to 3.2.2
Bumps [maven-shade-plugin](https://github.com/apache/maven-shade-plugin) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/apache/maven-shade-plugin/releases)
- [Commits](https://github.com/apache/maven-shade-plugin/compare/maven-shade-plugin-3.2.1...maven-shade-plugin-3.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-13 07:29:11 +00:00
Liam Newman
dabb8fe49e Merge pull request #675 from jimmysombrero/collaborator-permissions
Added ability to specify permissions for collaborators
2020-02-12 23:28:00 -08:00
Liam Newman
90489e4392 JavaDocs and refactoring 2020-02-12 22:42:12 -08:00
Liam Newman
ad45a74f87 Further clean up of refactored classes 2020-02-12 22:42:12 -08:00
Liam Newman
60c045a713 Delete mocking test that is just too brittle to live 2020-02-12 22:42:12 -08:00
Liam Newman
f6c75e1f99 More refactoring 2020-02-12 22:42:12 -08:00
Liam Newman
dd9245f6f2 Progress commit on moving to Client/Request/Response refactor 2020-02-12 22:42:12 -08:00
Liam Newman
7310a70743 Disable two tests due to spurious mocking failures 2020-02-12 22:42:12 -08:00
Liam Newman
82276837ac Created Client/Request/Response classes 2020-02-12 22:42:12 -08:00
Liam Newman
bd68252b44 Test cleanup 2020-02-12 22:42:12 -08:00
Liam Newman
6b1258e33a Major rewrite of Requester 2020-02-12 22:42:12 -08:00
Liam Newman
0400032923 Merge branch 'master' into collaborator-permissions 2020-02-12 22:32:50 -08:00
Liam Newman
d9563322f1 Merge pull request #695 from github-api/dependabot/maven/org.kohsuke.stapler-stapler-1.259
Bump stapler from 1.258 to 1.259
2020-02-12 22:32:31 -08:00
Liam Newman
ab965969dd Merge branch 'master' into collaborator-permissions 2020-02-12 22:31:03 -08:00
Liam Newman
2f32e034d8 Merge pull request #694 from bitwiseman/task/fetch
Streamline fetch and retry process
2020-02-12 22:29:22 -08:00
sunghyo-jung
d7bb171c1e Add automatic deletion of branches that merged by PR
Add method to Toggle `delete_branch_on_merge`
Locate new fields below to merge options
2020-02-12 19:02:31 +09:00
dependabot-preview[bot]
1cf7931f43 Bump stapler from 1.258 to 1.259
Bumps [stapler](https://github.com/stapler/stapler) from 1.258 to 1.259.
- [Release notes](https://github.com/stapler/stapler/releases)
- [Changelog](https://github.com/stapler/stapler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stapler/stapler/compare/stapler-parent-1.258...stapler-parent-1.259)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 06:30:12 +00:00
James Vaughn
edc697dd73 fixed javadoc isues 2020-02-07 21:27:00 -06:00
James Vaughn
54a059ff68 updated signatures for addCollaborators methods
updated javadoc comments for addCollaborators methods
combined both modifyCollaborators methods into one method
updated addColloaborators test to match new method signature
2020-02-07 21:13:23 -06:00
Liam Newman
289282e235 Move OTP detection earlier
Like other errors we've been waiting until later to catch, this one is detectable so
whe should do that before the downstream exception needs to be thrown.
2020-02-06 16:59:49 -08:00
Liam Newman
825c36c15e Tweaks for clarity 2020-02-06 14:11:16 -08:00
Liam Newman
1234c2e99e Add tests for rate limit 2020-02-06 13:33:29 -08:00
Liam Newman
b8fae1308d Streamline fetch and retry process 2020-02-06 08:01:17 -08:00
James Vaughn
dddcf624e6 finished suggested formatting changes 2020-02-05 21:30:52 -06:00
James Vaughn
b33fe9f7fe Merge branch 'collaborator-permissions' of https://github.com/jimmysombrero/github-api into collaborator-permissions 2020-02-04 21:10:39 -06:00
James Vaughn
5a799400a9 fixed minor formatting issues 2020-02-04 21:10:29 -06:00
Liam Newman
76919a819f Merge branch 'master' into collaborator-permissions 2020-02-03 12:46:17 -08:00
Liam Newman
9c30f846b2 Merge pull request #692 from github-api/dependabot/maven/com.github.tomakehurst-wiremock-jre8-standalone-2.26.0
Bump wiremock-jre8-standalone from 2.25.1 to 2.26.0
2020-02-03 12:45:46 -08:00
Liam Newman
9230f51988 Implement new methods on Options 2020-02-03 12:41:33 -08:00
dependabot-preview[bot]
712035dc9a Bump wiremock-jre8-standalone from 2.25.1 to 2.26.0
Bumps [wiremock-jre8-standalone](https://github.com/tomakehurst/wiremock) from 2.25.1 to 2.26.0.
- [Release notes](https://github.com/tomakehurst/wiremock/releases)
- [Commits](https://github.com/tomakehurst/wiremock/compare/2.25.1...2.26.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 12:34:01 -08:00
Liam Newman
32e5c5b4ad Merge pull request #693 from alexanderrtaylor/replaceAsserts
Replacing asserts with standard
2020-02-03 12:29:59 -08:00
Alex Taylor
134a6fab7e Merge branch 'master' into replaceAsserts 2020-02-03 14:47:11 -05:00
Alex Taylor
82e27cb962 Replacing asserts with standard
Beginning work to replace Asserts with assertThat to keep consistency
2020-02-03 11:43:16 -05:00
James Vaughn
8bcad7b3f9 Merge branch 'collaborator-permissions' of https://github.com/jimmysombrero/github-api into collaborator-permissions 2020-02-02 22:03:08 -06:00
James Vaughn
d767575f76 Added test for addCollaborators
Mark old addCollaborators methods depricated
2020-02-02 22:02:56 -06:00
jimmysombrero
7214c7d393 Merge branch 'master' into collaborator-permissions 2020-02-01 22:40:54 -06:00
James Vaughn
205e5ab03d Merge branch 'collaborator-permissions' of https://github.com/jimmysombrero/github-api into collaborator-permissions 2020-02-01 22:39:28 -06:00
James Vaughn
6576beae76 Added missing methods to keep the API from breaking
added tests for addCollaborators()
2020-02-01 22:39:14 -06:00
Liam Newman
001f8f1f50 Update PULL_REQUEST_TEMPLATE.md 2020-01-31 13:18:17 -08:00
Liam Newman
3b694a87ef Fix formatting 2020-01-31 13:17:16 -08:00
spierce
84dd06d769 [#690]Implement the ability to read total_private_repos for GHPerson 2020-01-31 13:44:43 -06:00
Liam Newman
c5cb16abfb Merge branch 'master' into collaborator-permissions 2020-01-31 08:32:35 -08:00
Liam Newman
79fb34324d Merge pull request #684 from alexanderrtaylor/assertThatIssues
Authentication and assertThat issues
2020-01-30 11:10:38 -08:00
Alex Taylor
303aef3548 Merge branch 'assertThatIssues' of https://github.com/alexanderrtaylor/github-api into assertThatIssues 2020-01-30 11:22:39 -05:00
Alex Taylor
fd278f8c32 Update AbstractGitHubWireMockTest.java
added return for Javadoc
2020-01-30 11:22:37 -05:00
Liam Newman
53041a4117 Merge branch 'master' into assertThatIssues 2020-01-29 18:32:47 -08:00
Liam Newman
9b3fe3b13a Merge pull request #687 from bitwiseman/task/windows-ci
Shorten file names for Windows
2020-01-29 18:06:48 -08:00
Liam Newman
5c6c5081e9 Improve naming of jobs 2020-01-29 18:00:30 -08:00
Liam Newman
e087ea0ac7 Split build jobs for clarity 2020-01-29 17:36:31 -08:00
Liam Newman
71c44dc805 Move CI to cache .m2 directory 2020-01-29 17:18:19 -08:00
Liam Newman
c5c8596664 Reduce output from connection retry 2020-01-29 17:04:24 -08:00
Liam Newman
92a86f4d1c No formatting checks on Windows CI build 2020-01-29 16:01:37 -08:00
Alex Taylor
8098b68b8e formatting changes
sorry forgot to run the formatting automation before committing the last
2020-01-29 16:56:49 -05:00
Alex Taylor
7356001723 Merge remote-tracking branch 'upstream/master' into assertThatIssues 2020-01-29 16:56:15 -05:00
Alex Taylor
aba60587ab Corrected massive change
Added back the extends Assert to the wiremock test base class so that I am not making a massive change and potentially  breaking inflight work people are doing
2020-01-29 16:49:33 -05:00
Liam Newman
936a6a04fb Reduce some code coverage bars on windows 2020-01-29 13:38:08 -08:00
Liam Newman
9675126298 Turn off some tests for windows 2020-01-29 13:30:01 -08:00
Liam Newman
6a5886ea1c Disable import sorting 2020-01-29 11:38:32 -08:00
Liam Newman
648c6a5a8f Shorten file names for Windows 2020-01-29 09:24:50 -08:00
Liam Newman
14b7bf4753 Add windows to CI matrix 2020-01-28 20:52:49 -08:00
jimmysombrero
0e310fa96a Merge branch 'master' into collaborator-permissions 2020-01-28 15:21:25 -06:00
Liam Newman
0f6c282c80 [maven-release-plugin] prepare for next development iteration 2020-01-27 19:07:15 -08:00
Liam Newman
ed3cd0c9c8 [maven-release-plugin] prepare release github-api-1.106 2020-01-27 19:07:07 -08:00
Liam Newman
398f029f6d Merge pull request #685 from bitwiseman/task/commons-io-2.4
Downgrade to commons-io 2.4
2020-01-27 19:04:24 -08:00
Liam Newman
ad9c2b917b Disable rate limit hanging test 2020-01-27 18:56:41 -08:00
Liam Newman
d0d65182c0 Downgrade to commons-io 2.4 for Jenkins compatibility 2020-01-27 18:43:56 -08:00
Alex Taylor
4c3a0d329b added Authentication Check
Added additional authentication checks on gitHubBeforeAfter so that cleanup is done with a user logged in
2020-01-27 15:24:28 -05:00
Alex Taylor
7c495c2177 Fixes after merge
Fixed some failing tests after merge
2020-01-27 14:45:02 -05:00
Alex Taylor
2f86a9e534 Merge remote-tracking branch 'upstream/master' into assertThatIssues 2020-01-27 14:37:46 -05:00
Alex Taylor
12c3a0b1fa Authentication and assertThat issues
Fixed some problems with tests trying to authenticate when you are not actually signed in. This hit rate API limiting which caused tests to hang/fail

Also fixed assertThat getting deprecated from junit
2020-01-27 14:29:46 -05:00
Liam Newman
14f3660f55 [maven-release-plugin] prepare for next development iteration 2020-01-27 00:03:48 -08:00
Liam Newman
5a8b032d74 [maven-release-plugin] prepare release github-api-1.105 2020-01-27 00:03:39 -08:00
Liam Newman
57c4613b1f Merge pull request #683 from timja/add-full-create-team-parameters
Add support for all create team parameters
2020-01-27 00:00:44 -08:00
Tim Jacomb
e008021a42 Merge branch 'add-full-create-team-parameters' of github.com:timja/github-api into add-full-create-team-parameters 2020-01-27 07:52:15 +00:00
Tim Jacomb
7e600c43ed Var-args instead of list 2020-01-27 07:52:08 +00:00
Tim Jacomb
963478e206 Merge branch 'master' into add-full-create-team-parameters 2020-01-27 07:46:14 +00:00
Tim Jacomb
0f32783488 Revert updatePrivacy 2020-01-27 07:40:16 +00:00
Liam Newman
756d470715 [maven-release-plugin] prepare for next development iteration 2020-01-26 23:33:20 -08:00
Liam Newman
2c47b7535b [maven-release-plugin] prepare release github-api-1.104 2020-01-26 23:33:11 -08:00
Tim Jacomb
4cc90b4929 Fix test 2020-01-27 07:31:19 +00:00
Tim Jacomb
32754ffcf5 Cleanup based on review 2020-01-27 07:24:01 +00:00
Tim Jacomb
64aae75680 Allow updating privacy status 2020-01-26 11:02:01 +00:00
Tim Jacomb
69d2160a0d Add support for all create team parameters 2020-01-25 20:07:56 +00:00
Liam Newman
99e326539e Merge pull request #680 from bitwiseman/issue/ssl
Handle SSLHandshakeException with connection retry
2020-01-24 21:47:20 -08:00
Liam Newman
1dde975cfe Handle SSLHandshakeException with connection retry 2020-01-24 21:24:55 -08:00
jimmysombrero
58c069ec5c Merge branch 'master' into collaborator-permissions 2020-01-24 18:26:54 -06:00
James Vaughn
7916600a7b updating local branch 2020-01-24 18:24:53 -06:00
James Vaughn
3e4f160c5d ran mvn clean install then the build commmand and build was successful 2020-01-24 18:23:59 -06:00
Liam Newman
aeb5e5f681 Merge pull request #674 from v1v/master
Retry when SocketException with some sleep
2020-01-24 14:43:29 -08:00
Liam Newman
1c2e491845 Minor improvement to statistics
Reading raw streams just to map them is not needed.
Using arrays instead of lists works fine.
2020-01-24 14:07:19 -08:00
Liam Newman
eb4000f26b Streamline retry code path 2020-01-24 12:32:04 -08:00
Liam Newman
74dd887c79 Merge branch 'master' into master 2020-01-23 22:22:42 -08:00
Liam Newman
764599a7d9 Move socket handling and add test 2020-01-23 20:54:13 -08:00
Liam Newman
ad683fee89 Merge branch 'master' into collaborator-permissions 2020-01-23 17:51:59 -08:00
Liam Newman
85a53fc68f Merge pull request #676 from alexanderrtaylor/issues-349
Issues 349
2020-01-23 17:49:39 -08:00
James Vaughn
3bf8baee85 format fixed and validation passed 2020-01-23 18:32:37 -06:00
Vaughn
8792213594 tried formatting the file once again. 2020-01-23 15:16:36 -06:00
Victor Martinez
d9ebc9455c UTs for the Timeout and Retry 2020-01-23 21:09:14 +00:00
Vaughn
9ab8bdfe4a formatted file 2020-01-23 14:45:24 -06:00
Victor Martinez
418ea9a19e As suggested in the code review, handle exceptions and setup the connection 2020-01-23 20:39:58 +00:00
Victor Martinez
20f04febf2 As suggested in the code review, make a configurable sleep 2020-01-23 20:36:00 +00:00
Alex Taylor
a65783201e updated the test files
Updated the test files and did a temp repo
2020-01-23 15:31:50 -05:00
Victor Martinez
a5f04d44a4 Fix javadoc warning 2020-01-23 20:29:55 +00:00
Victor Martinez
cbe1022f20 Support more generic Socket Exceptions
For instance: connection reset by peer
2020-01-23 20:28:57 +00:00
Vaughn
90301ae9ee Added ability to specify permissions for collaborators 2020-01-23 13:37:35 -06:00
Victor Martinez
4f38ab3640 Cosmetic change 2020-01-23 14:01:29 +00:00
Victor Martinez
fca179abab Retry if SocketException
See https://github.com/github-api/github-api/pull/373
2020-01-23 13:33:12 +00:00
Liam Newman
e426237c35 [maven-release-plugin] prepare for next development iteration 2020-01-22 11:57:10 -08:00
Liam Newman
3dae361d7b [maven-release-plugin] prepare release github-api-1.103 2020-01-22 11:56:59 -08:00
Liam Newman
967831388e Relocate shaded dependecies and generate separate shaded artifact 2020-01-22 09:59:10 -08:00
Liam Newman
f9794f20d4 Use Https 2020-01-21 17:22:58 -08:00
Liam Newman
f98efd6af0 Update site.xml 2020-01-21 16:56:44 -08:00
Liam Newman
69bf0641f8 Update site.xml
Closes #671
2020-01-21 16:55:46 -08:00
Liam Newman
5791843d16 [maven-release-plugin] prepare for next development iteration 2020-01-21 15:40:09 -08:00
Liam Newman
58d0a20074 [maven-release-plugin] prepare release github-api-1.102 2020-01-21 15:40:00 -08:00
Liam Newman
5884c7b3ba Re-enable jacoco during ci 2020-01-21 14:44:47 -08:00
Liam Newman
dd1da268a2 Additional checks and clean up to GHRateLimit and tests 2020-01-21 13:30:08 -08:00
Alex Taylor
473f3954c7 Update GHRepositoryTest.java
Added some parent tests as well
2020-01-21 15:56:07 -05:00
Alex Taylor
5aad5406a2 [WIP]Adding GHRepo tests 2020-01-21 14:35:29 -05:00
Liam Newman
98b606287d Add more validation to rate limit
Downstream tests are doing some strange Json.  Give better output when they do something invalid.
2020-01-18 23:33:44 -08:00
Liam Newman
9792fc0daa Fix missing version 2020-01-18 19:20:21 -08:00
Liam Newman
a9bb9302bc Move cached 404 retry to main code path 2020-01-18 18:53:31 -08:00
Liam Newman
30c70bc8d4 Merge pull request #651 from martinvanzijl/issue_500_create_tag_method
Add createTag() method to GHRepository
2020-01-18 14:02:39 -08:00
Liam Newman
0df48c37ac Merge branch 'master' into issue_500_create_tag_method 2020-01-17 22:43:07 -08:00
Liam Newman
ec31e94e7a Merge pull request #665 from bitwiseman/task/cache-error-test
Workaround for `If-Modified-Since` HTTP request header causing cache corruption
2020-01-17 22:42:09 -08:00
Liam Newman
ea631d0e88 Merge pull request #633 from bitwiseman/task/shade
Add shading of dependencies
2020-01-17 22:41:29 -08:00
Liam Newman
66a180346e Improve commenting of workaround 2020-01-17 17:52:50 -08:00
Liam Newman
63ee878789 Merge remote-tracking branch 'github-api/master' into task/cache-error-test 2020-01-17 17:27:12 -08:00
Liam Newman
3479e4f2fd Clean up and formatting 2020-01-17 17:05:45 -08:00
Liam Newman
54f4152f89 Template data files to make okhttp2 test runnable in CI
OkHttp2 doesn't invalidate caches sometimes when it probably should
2020-01-17 17:00:40 -08:00
Liam Newman
06334bf272 Template data files to make okhttp3 test runnable in CI 2020-01-17 16:58:54 -08:00
Liam Newman
839f096f39 Add caching error test for OkHttp 2020-01-17 15:57:14 -08:00
Liam Newman
f3b2fdc4fc Update test and resources using new workaround 2020-01-17 15:53:55 -08:00
Liam Newman
16d34f3268 Workaround for #669 - retry with cache overridden
This is much more reasonable way to address this issue.
When the Requester detects a 404 response with an ETag (only happpens when the server's 304
is bogus and would cause cache corruption), try the query again with new request header
that forces the server to not return 304 and return new data instead.

Ths solution is transparent to users of this library and autmatically fixes a situation that
was causing cache corruption. If GitHub ever fixes the issue and begins providing accurate
ETags to their 404 responses, this will result in two calls being made for each 404 response.
While that would be unfortunate, it would still be better than the current situation.
2020-01-17 15:53:55 -08:00
Liam Newman
61e8dd09d6 Revert "Workaround for #669 - remove If-Modified-Since header"
This reverts commit 90d7fea7aa.
2020-01-17 14:46:31 -08:00
Liam Newman
90d7fea7aa Workaround for #669 - remove If-Modified-Since header
This is a first cut at working round #669.  It is hacky as hell and I hate it.
2020-01-17 14:46:10 -08:00
Liam Newman
b9c8bf07ea Restore correct exception throwing for getArray 2020-01-15 19:42:42 -08:00
Liam Newman
a3ba07d45f Inline toIterable 2020-01-15 19:33:22 -08:00
Liam Newman
5a6a29cbb5 Add array and iterator tests 2020-01-15 19:31:30 -08:00
Liam Newman
72aedbb76c JENKINS-54126 - Repro of github caching error 2020-01-14 00:29:43 -08:00
Liam Newman
e7e3be6ea7 Merge pull request #662 from sullis/github-actions-checkout-v2
GitHub Actions checkout v2
2020-01-13 11:29:25 -08:00
Liam Newman
62e1b9eb01 Merge pull request #663 from sullis/jackson-2.10.2
jackson 2.10.2
2020-01-13 11:22:29 -08:00
Sean C. Sullivan
3fff92dc35 jackson 2.10.2 2020-01-12 16:09:57 -08:00
Sean C. Sullivan
352d77719e GitHub Actions checkout v2 2020-01-12 15:23:13 -08:00
Martin van Zijl
ff397dfa4d Correction per "mvn install site". 2020-01-11 13:03:41 +13:00
Martin van Zijl
34d64c0dff Added comment to JavaDoc as advised per GitHub Maven test. 2020-01-11 12:53:54 +13:00
Martin van Zijl
b5fdc2f956 Merge branch 'master' of https://github.com/kohsuke/github-api into issue_500_create_tag_method 2020-01-11 12:46:08 +13:00
Martin van Zijl
38602965db Merge branch 'issue_500_create_tag_method' of https://github.com/martinvanzijl/github-api into issue_500_create_tag_method 2020-01-11 12:31:28 +13:00
Martin van Zijl
df1ea62883 Removed wiremock files for old test case. 2020-01-11 12:24:12 +13:00
Martin van Zijl
afaff52888 Removed test from GHRepositoryTest and added to GHTagTest. 2020-01-11 12:23:41 +13:00
Liam Newman
5b7829c288 Merge branch 'master' into task/shade 2020-01-10 11:14:18 -08:00
Liam Newman
2462eb2c79 Merge pull request #652 from github-api/dependabot/maven/com.squareup.okio-okio-2.4.3
Bump okio from 2.4.2 to 2.4.3
2020-01-10 11:13:59 -08:00
Liam Newman
edc26b0a55 Fix site 2020-01-10 10:11:31 -08:00
Liam Newman
cc94e8b0ca Merge branch 'master' into dependabot/maven/com.squareup.okio-okio-2.4.3 2020-01-10 09:24:04 -08:00
Liam Newman
80f3a6e507 Merge pull request #659 from github-api/dependabot/maven/com.squareup.okhttp3-okhttp-4.3.1
Bump okhttp from 4.2.2 to 4.3.1
2020-01-10 09:23:03 -08:00
Liam Newman
5709be7ff7 Merge branch 'master' into issue_500_create_tag_method 2020-01-10 09:19:05 -08:00
Liam Newman
46fce8cf4b Merge branch 'master' into dependabot/maven/com.squareup.okio-okio-2.4.3 2020-01-10 09:18:51 -08:00
Liam Newman
e84049367e Merge branch 'master' into dependabot/maven/com.squareup.okhttp3-okhttp-4.3.1 2020-01-10 09:18:05 -08:00
Liam Newman
f213ead595 Move shade to ci and release profiles 2020-01-09 11:36:24 -08:00
Liam Newman
ba540b0725 Remove parent pom 2020-01-09 08:27:06 -08:00
Liam Newman
eb55691c89 Add shading of dependencies
Fixes #630
2020-01-09 08:26:49 -08:00
Liam Newman
dd508e7dea Rerecord GHTreeBuilder for test org 2020-01-08 19:44:23 -08:00
dependabot-preview[bot]
66357866c5 Bump okio from 2.4.2 to 2.4.3
Bumps [okio](https://github.com/square/okio) from 2.4.2 to 2.4.3.
- [Release notes](https://github.com/square/okio/releases)
- [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/square/okio/compare/parent-2.4.2...parent-2.4.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-09 03:22:54 +00:00
dependabot-preview[bot]
6e3728b458 Bump okhttp from 4.2.2 to 4.3.1
Bumps [okhttp](https://github.com/square/okhttp) from 4.2.2 to 4.3.1.
- [Release notes](https://github.com/square/okhttp/releases)
- [Changelog](https://github.com/square/okhttp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/square/okhttp/compare/parent-4.2.2...parent-4.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-09 03:22:54 +00:00
Liam Newman
31d4eef4b1 Merge pull request #642 from asthinasthi/create-tree-null-sha-field
Post only non-null values in request body for createTree
2020-01-08 19:21:43 -08:00
Liam Newman
f58f32a7a8 Merge branch 'master' into create-tree-null-sha-field 2020-01-08 17:36:36 -08:00
Liam Newman
28d8fb686a Merge pull request #653 from github-api/dependabot/maven/org.apache.maven.plugins-maven-source-plugin-3.2.1
Bump maven-source-plugin from 3.2.0 to 3.2.1
2020-01-07 11:26:07 -08:00
dependabot-preview[bot]
4c7fc2ef47 Bump maven-source-plugin from 3.2.0 to 3.2.1
Bumps [maven-source-plugin](https://github.com/apache/maven-source-plugin) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/apache/maven-source-plugin/releases)
- [Commits](https://github.com/apache/maven-source-plugin/compare/maven-source-plugin-3.2.0...maven-source-plugin-3.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-07 00:00:39 +00:00
Liam Newman
a3f99978c2 Merge pull request #657 from github-api/dependabot/maven/junit-junit-4.13
Bump junit from 4.12 to 4.13
2020-01-06 15:59:26 -08:00
Liam Newman
136b55d310 Merge pull request #650 from bitwiseman/issue/mime-base64-638
Do not MIME encode Base64 content for sending
2020-01-06 09:23:44 -08:00
dependabot-preview[bot]
617e90259b Bump junit from 4.12 to 4.13
Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/master/doc/ReleaseNotes4.12.md)
- [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-02 06:36:48 +00:00
Martin van Zijl
959eb46162 Deleted unit test cleanup method.
This method failed in the automated GitHub build online with a null
pointer exception.

I tried to make it a @Before/@After method, but that fails on
my local PC.
2020-01-02 13:21:27 +13:00
Martin van Zijl
998bda9de7 Add createTag() method.
Fixes #500.
2019-12-23 05:43:48 +13:00
Liam Newman
37a2018fe3 Do not MIME encode Base64 content for sending
Fixes #638
2019-12-20 19:48:17 -08:00
Liam Newman
2c80e07c9d Merge branch 'master' into create-tree-null-sha-field 2019-12-19 19:11:09 -08:00
Liam Newman
a115f34766 Merge pull request #637 from PauloMigAlmeida/marketplace_endpoints_patch2
[Patch 2/2] :: Add support to Marketplace endpoints
2019-12-19 19:10:00 -08:00
Liam Newman
cd66c1e7c3 Add Accept header 2019-12-19 18:59:50 -08:00
Liam Newman
4f9975dc6d Merge remote-tracking branch 'github-api/master' into marketplace_endpoints_patch2 2019-12-19 18:44:48 -08:00
Liam Newman
9da487d962 Merge pull request #635 from PauloMigAlmeida/marketplace_endpoints
[Patch 1/2] :: Add support to Marketplace endpoints
2019-12-19 18:26:16 -08:00
Liam Newman
c7123b016b Update for Accept header 2019-12-19 18:21:09 -08:00
PauloMigAlmeida
efb13ddaf0 Fix errors caught during the build
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-19 18:06:14 -08:00
PauloMigAlmeida
3539b73c08 Implement changes requested for patch 1
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-19 18:06:14 -08:00
PauloMigAlmeida
2c084ef4d5 improve docs related to credentials requirements for some methods
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-19 18:06:14 -08:00
PauloMigAlmeida
754e66f4dd Additional tests for list accounts with a few parameters combinations
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-19 18:06:14 -08:00
PauloMigAlmeida
41b698f0a8 Add tests for listing GitHub marketplace accounts
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-19 18:06:14 -08:00
PauloMigAlmeida
de78da4fa6 Implement listing all GitHub Marketplace accounts given a plan
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-19 18:06:14 -08:00
PauloMigAlmeida
3d241d6fa1 formatting improvements
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-19 18:06:14 -08:00
PauloMigAlmeida
1d983a0090 Implement list marketplace plans
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-19 18:06:13 -08:00
Liam Newman
78fb860305 Merge pull request #648 from bitwiseman/task/accept-header
Enforce 'Accept' request header values
2019-12-19 18:04:55 -08:00
Liam Newman
c699a84f42 Enforce 'Accept' request header values
The 'Accept' header on requests can change what data is returned, so we need to
only match requests with the correct value.
2019-12-19 17:56:32 -08:00
PauloMigAlmeida
d8a178d93d Implement changes requested for patch 2
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-20 13:27:40 +13:00
PauloMigAlmeida
ada4243548 Merge branch 'marketplace_endpoints' of https://github.com/PauloMigAlmeida/github-api into marketplace_endpoints_patch2
 Conflicts:
	src/main/java/org/kohsuke/github/GHMarketplaceAccount.java
	src/main/java/org/kohsuke/github/GHMarketplaceListAccountBuilder.java
	src/test/java/org/kohsuke/github/GHMarketplacePlanTest.java
2019-12-20 13:14:12 +13:00
PauloMigAlmeida
fa2e3aad6c Fix errors caught during the build
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-20 12:58:11 +13:00
PauloMigAlmeida
0cf457a46f Merge branch 'master' of https://github.com/kohsuke/github-api into marketplace_endpoints 2019-12-20 12:46:48 +13:00
PauloMigAlmeida
bb7b98d448 Merge remote-tracking branch 'origin/marketplace_endpoints' into marketplace_endpoints 2019-12-20 12:38:16 +13:00
PauloMigAlmeida
e8d90848f2 Implement changes requested for patch 1
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-20 12:37:59 +13:00
Liam Newman
7c791451ba Merge pull request #647 from halkeye/patch-1
Labels with description are not preview anymore
2019-12-19 13:57:07 -08:00
Liam Newman
16d8c2b221 Remove Symmetra preview 2019-12-19 13:50:18 -08:00
Gavin Mogan
dceecbef0a Labels with description are not preview anymore
https://developer.github.com/v3/issues/labels/#create-a-label
2019-12-19 13:50:07 -08:00
Liam Newman
3cbddf1de9 Merge pull request #646 from PauloMigAlmeida/issue_628
Implement App createToken with empty body
2019-12-19 13:47:22 -08:00
PauloMigAlmeida
650340fcb3 Fix example on the docs
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-20 01:47:39 +13:00
PauloMigAlmeida
ce5b893224 Add example on the docs
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-20 01:44:09 +13:00
PauloMigAlmeida
7869afa4ff Implement test for createToken method with no json property
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-20 01:09:34 +13:00
Paulo Miguel Almeida
9085606082 Fix GHObjectTest test broken on PR #644
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-20 00:08:23 +13:00
Paulo Miguel Almeida
1e3f646814 Refactor GHAppCreateTokenBuilder;
Add docs;

Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-20 00:05:31 +13:00
PauloMigAlmeida
933f0cb4b8 Merge branch 'master' of https://github.com/github-api/github-api into issue_628
 Conflicts:
	src/main/java/org/kohsuke/github/GHAppCreateTokenBuilder.java
2019-12-19 22:59:44 +13:00
PauloMigAlmeida
7497761fcc Implement create token variation 2019-12-19 19:42:22 +13:00
Liam Newman
12b3d4ec7a Merge branch 'master' into marketplace_endpoints 2019-12-17 17:27:10 -08:00
Liam Newman
8fd5ed57c4 Merge pull request #644 from martinvanzijl/issue_126_add_type_and_site_admin_fields
Add type and site_admin fields to GHPerson
2019-12-17 17:23:54 -08:00
Liam Newman
7bc301bc70 Merge pull request #634 from bitwiseman/task/minimum-coverage
Task/minimum coverage
2019-12-17 17:23:30 -08:00
Liam Newman
30321d3a0e Update coverage excludes and bars 2019-12-17 17:16:23 -08:00
Liam Newman
511a0ae503 Exclude deprecated classes 2019-12-17 17:16:22 -08:00
Liam Newman
1057636666 Add wiremock data 2019-12-17 17:16:22 -08:00
Liam Newman
564b1d2a98 Enable event tests 2019-12-17 17:16:22 -08:00
Liam Newman
20cd0e2de2 Turn Traffic tests back on 2019-12-17 17:16:22 -08:00
Liam Newman
6bc617c488 Merge pull request #623 from bitwiseman/task/iterator
Move array population to single iterator code path
2019-12-17 15:01:12 -08:00
Liam Newman
049db83423 Merge remote-tracking branch 'github-api/master' into task/iterator 2019-12-17 14:35:37 -08:00
Liam Newman
52dd90e85d Additional tweaks to reduce the number of code paths 2019-12-17 14:15:38 -08:00
Liam Newman
305267d07f Rename methods for better clarity 2019-12-17 12:41:23 -08:00
Liam Newman
20369aa1b5 Merge pull request #622 from alexanderrtaylor/GHEventAddition
[JENKINS-57430] Added some new GH Event Types
2019-12-17 11:32:45 -08:00
Liam Newman
40f05e4dbb Clean up request method calls 2019-12-17 10:02:55 -08:00
Liam Newman
a23d19f208 Merge pull request #645 from github-api/dependabot/maven/org.mockito-mockito-core-3.2.4
Bump mockito-core from 3.2.0 to 3.2.4
2019-12-17 09:06:48 -08:00
dependabot-preview[bot]
cb1d1e8ed7 Bump mockito-core from 3.2.0 to 3.2.4
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.2.0 to 3.2.4.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.2.0...v3.2.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-17 06:37:39 +00:00
Alex Taylor
4f67f32719 Update src/main/java/org/kohsuke/github/GHCheckRun.java 2019-12-16 14:53:38 -05:00
Alex Taylor
a80b5b6abc Fixed the findbugs errors 2019-12-14 15:38:34 -05:00
Liam Newman
0be3d88872 Merge pull request #643 from github-api/dependabot/maven/com.squareup.okio-okio-2.4.2
Bump okio from 2.4.1 to 2.4.2
2019-12-13 19:42:09 +00:00
Liam Newman
48bb996350 Merge pull request #640 from github-api/dependabot/maven/org.eclipse.jgit-org.eclipse.jgit-5.6.0.201912101111-r
Bump org.eclipse.jgit from 5.5.1.201910021850-r to 5.6.0.201912101111-r
2019-12-13 19:41:52 +00:00
Martin van Zijl
ee2dde4cd1 Add type and site_admin fields to GHPerson.
Helps with #126.
2019-12-14 07:24:23 +13:00
dependabot-preview[bot]
c10a31c933 Bump okio from 2.4.1 to 2.4.2
Bumps [okio](https://github.com/square/okio) from 2.4.1 to 2.4.2.
- [Release notes](https://github.com/square/okio/releases)
- [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/square/okio/compare/2.4.1...parent-2.4.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-12 06:33:01 +00:00
Anirudh Mathad
d6a846f58d Post only non-null values in request body for createTree 2019-12-11 15:25:24 -08:00
dependabot-preview[bot]
945873231d Bump org.eclipse.jgit from 5.5.1.201910021850-r to 5.6.0.201912101111-r
Bumps org.eclipse.jgit from 5.5.1.201910021850-r to 5.6.0.201912101111-r.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-11 06:36:08 +00:00
PauloMigAlmeida
5dc494978e Implement tests
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-10 13:21:52 +13:00
PauloMigAlmeida
c870ec10c0 Implement /user/marketplace_purchases endpoint
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-10 13:21:06 +13:00
PauloMigAlmeida
2085b8fd14 Split GHMarketplaceAccount.java into 2 pieces for re-utilisation purposes
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-10 13:19:19 +13:00
PauloMigAlmeida
e065b6435c improve docs related to credentials requirements for some methods
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-09 20:59:03 +13:00
PauloMigAlmeida
da5331ceb0 Additional tests for list accounts with a few parameters combinations
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-09 20:07:32 +13:00
PauloMigAlmeida
8f81982de4 Add tests for listing GitHub marketplace accounts
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-09 19:36:13 +13:00
PauloMigAlmeida
499b46ecf3 Implement listing all GitHub Marketplace accounts given a plan
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-09 15:53:46 +13:00
PauloMigAlmeida
a7d232e15f formatting improvements
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-08 20:26:37 +13:00
PauloMigAlmeida
8fdb394ec5 Implement list marketplace plans
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-12-08 20:13:54 +13:00
PauloMigAlmeida
7a1da64bf2 Merge branch 'master' of https://github.com/kohsuke/github-api 2019-12-08 15:42:54 +13:00
PauloMigAlmeida
95ae155fc0 Merge branch 'master' of https://github.com/PauloMigAlmeida/github-api 2019-12-08 15:42:34 +13:00
Liam Newman
d1507f2666 Merge pull request #631 from bitwiseman/task/base64
Remove dependency on apache commons-codec
2019-12-04 10:56:08 +00:00
Liam Newman
7e4f98d328 Remove dependency on apache commons-codec 2019-12-03 11:39:05 +00:00
Liam Newman
f9a956905e Merge pull request #629 from sullis/mockito-3.2.0
mockito 3.2.0
2019-11-30 13:20:54 -08:00
Sean C. Sullivan
e7d95f9da6 mockito 3.2.0 2019-11-29 13:33:54 -05:00
Alex Taylor
bc8f0aa223 Update GHEventPayload.java
updated to meet standards
2019-11-27 15:18:43 -05:00
Liam Newman
6f2ae94e12 Changelog for v1.101 2019-11-27 10:47:25 -08:00
Alex Taylor
8f787e9976 Added the Check Run event
Added the check run event and the objects used there along with a valid test
2019-11-27 13:30:45 -05:00
Liam Newman
321d8240a2 [maven-release-plugin] prepare for next development iteration 2019-11-27 10:27:31 -08:00
Liam Newman
d667b2f822 [maven-release-plugin] prepare release github-api-1.101 2019-11-27 10:27:24 -08:00
Liam Newman
d7f511363d Merge pull request #627 from alecharp/fix-cache-control-packagename
Fixed CacheControl package name
2019-11-27 10:14:12 -08:00
Adrien Lecharpentier
39e7c5c3de Fixed CacheControl package name
With okhttp 3, the package name changed. In the okhttp3.OkHttpConnector,
the incorrect class is loaded, creating a ClassNotFoundException at
runtime when okhttp3 only is loaded.
2019-11-27 18:30:06 +01:00
Liam Newman
60acd5c864 Update CHANGELOG.md 2019-11-26 19:08:00 -08:00
Liam Newman
b92cf6fd35 [maven-release-plugin] prepare for next development iteration 2019-11-26 17:53:42 -08:00
Liam Newman
f7d048e0b9 [maven-release-plugin] prepare release github-api-1.100 2019-11-26 17:53:14 -08:00
Liam Newman
b3d79622e6 Fix lifecycle test to not fail during release 2019-11-26 17:46:49 -08:00
Liam Newman
7e7ae79477 Update change log for 1.100 2019-11-26 17:46:49 -08:00
Liam Newman
0f9482864c Move url to separate method 2019-11-26 15:26:46 -08:00
Liam Newman
60700d59fe Force URI encoding for api paths starting with slash 2019-11-26 15:14:36 -08:00
Liam Newman
3296cef02d Change requester to GET by default 2019-11-25 18:15:21 -08:00
Liam Newman
1b55b5fa3c Move array population to single iterator code path
This remove a second code path throught pagination.
2019-11-25 18:15:21 -08:00
Liam Newman
5910988314 Merge pull request #625 from bitwiseman/bug/content-encode
Fixed GHContent to allow spaces in path
2019-11-25 18:13:38 -08:00
Liam Newman
8c4b1ef74a Fixed GHContent to allow spaces in path
URI path encoding whack-a-mole.  This fix should cover a significant number of cases.

Also, fixed to NOT do URLEncode for URI path.  The encoding is different between path and query.

Fixes #624
2019-11-25 18:06:19 -08:00
Alex Taylor
b2701f5ba4 [JENKINS-57430] Added some new GH Event Types
Added some new GH Event types so that it does not throw errors
2019-11-22 14:26:35 -05:00
Liam Newman
7d4f1941e7 Merge pull request #621 from bitwiseman/lifecycle
Re-enable Lifecycle test
2019-11-21 22:26:48 -08:00
Liam Newman
eedefcdbbb Reformat a few json test files 2019-11-21 22:19:10 -08:00
Liam Newman
bdb5e82abc Make servers only start if the might be needed
If proxying or snapshotting, we start all servers.
Otherwise only start a server if we have mapping files for them.
2019-11-21 22:09:54 -08:00
Liam Newman
ff766a46c8 Enable uploads testing and LifecycleTest
Fixed asset upload url to not hard coded
2019-11-21 17:07:38 -08:00
Liam Newman
0a40dc5939 Merge pull request #620 from siordache-forks/issue#504
fix and unit tests for issue #504
2019-11-20 22:34:02 -08:00
Serban Iordache
71862d76d3 remove '@apiNote' javadoc tag 2019-11-21 00:45:45 +01:00
Serban Iordache
7a35cc3d17 fix and unit tests for issue #504
add new methods for creating tree content
2019-11-21 00:31:36 +01:00
Liam Newman
7a4870c977 Merge pull request #619 from asthinasthi/deprecate-permission
Removed permission field in createTeam. It is deprecated in the API
2019-11-20 09:29:26 -08:00
Matt Farmer
d4d2792498 Deprecated permission field in createTeam & provided alternate method 2019-11-19 17:15:50 -08:00
Liam Newman
a969509283 Merge pull request #616 from bitwiseman/impsort
Cleanup imports
2019-11-18 19:53:07 -08:00
Liam Newman
82fa340c07 Import sorting cleanup 2019-11-18 19:14:24 -08:00
Liam Newman
d44cd4a827 Merge remote-tracking branch 'github-api/master' into impsort 2019-11-18 19:13:27 -08:00
Liam Newman
a8dbe65e30 Move GistTest to GHGistTest 2019-11-18 19:13:10 -08:00
Liam Newman
d2ce7c11ac Merge pull request #615 from alexanderrtaylor/BranchMissing
Branch missing
2019-11-18 19:08:40 -08:00
Liam Newman
d02af5ccb0 Switch property mapper to snake case
Jackson to automatically map property names using known patterns.
GitHub uses snake_case.
2019-11-18 19:05:43 -08:00
Liam Newman
9a5467dcac Re-enable GHBranchProtection test 2019-11-18 19:05:43 -08:00
Liam Newman
2af4f61882 Cleanup imports 2019-11-18 11:35:45 -08:00
Liam Newman
cbd06eef96 Code formatting 2019-11-15 15:51:07 -08:00
Liam Newman
392dc2a040 Merge remote-tracking branch 'github-api/master' into BranchMissing 2019-11-15 15:36:24 -08:00
Liam Newman
da11702f68 Modify formatting to columnize
Turns out I do care about formatting a little.  We have a lot of builders and chained methods.
I think it is easier to follow long chains when lined up veritcally.
2019-11-15 15:18:07 -08:00
Liam Newman
f262bf7cdb Commit default format 2019-11-15 13:49:32 -08:00
Alex Taylor
78ab5ad156 Changed Exception Type
Changed Exception type and added a comment
2019-11-15 14:55:50 -05:00
Alex Taylor
6af796fc3b Adjusted format
Adjusted format according to standard from repo
2019-11-15 14:35:32 -05:00
Liam Newman
c174be37b3 Merge pull request #614 from bitwiseman/task/requester-cleanup
Clean up Requester interface a bit
2019-11-15 08:40:45 -08:00
Alex Taylor
18aa067c44 Merge branch 'master' into BranchMissing 2019-11-15 10:59:15 -05:00
Alex Taylor
8d50b338f4 Added GHBranch creator
Added GHBranch creator and added a test to make sure it works
2019-11-15 10:54:32 -05:00
Liam Newman
37d7cfaaf2 Clean up Requester interface a bit 2019-11-14 18:16:56 -08:00
Liam Newman
d3564a9a4f Merge pull request #613 from bitwiseman/javadoc-warning
Javadoc fail on warning during CI build
2019-11-14 15:53:50 -08:00
Liam Newman
39d6dd9916 Update PULL_REQUEST_TEMPLATE.md 2019-11-14 13:36:33 -08:00
Liam Newman
0152ebf062 Enable failOnWarning for JavaDoc
Continuing to ratchet up some base level code quality
2019-11-14 13:33:33 -08:00
Liam Newman
757b9b2118 Add JavaDocs
Do using IntelliJ JavaDocs plugin. Better to have something than nothing.
2019-11-14 13:24:28 -08:00
Liam Newman
f6a01551fd Make PagedIterableWithConsumer package local for mocking 2019-11-14 13:15:34 -08:00
Liam Newman
1f619f3801 Merge pull request #611 from PauloMigAlmeida/master
Implement Meta endpoint
2019-11-14 13:06:43 -08:00
Liam Newman
fd436cf5b2 Fixes for build failures 2019-11-14 13:01:35 -08:00
Liam Newman
7e05ce38cf Add examples of different ways to create data objects 2019-11-14 12:39:40 -08:00
Liam Newman
7d1e977ffe Make GHMeta fields effectively final 2019-11-14 12:39:04 -08:00
Liam Newman
6c2ce83b45 Make GHMeta fields not externally settable 2019-11-14 10:29:40 -08:00
Liam Newman
d5ba0eebcb Run code formatting 2019-11-14 09:12:28 -08:00
Liam Newman
432585cb75 Merge remote-tracking branch 'github-api/master' into ghmeta 2019-11-14 09:05:20 -08:00
Liam Newman
e41a341ce6 Merge pull request #609 from bitwiseman/task/style
Code style fixes
2019-11-14 08:47:47 -08:00
PauloMigAlmeida
5d9a4b42a6 Merge branch 'master' of https://github.com/kohsuke/github-api 2019-11-14 15:56:42 +13:00
PauloMigAlmeida
6aad80904a Implement Meta endpoint
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-11-14 15:52:43 +13:00
Liam Newman
20e796cef4 Create PULL_REQUEST_TEMPLATE.md 2019-11-13 15:47:55 -08:00
Liam Newman
a3b126282d Remove package comments 2019-11-13 15:20:02 -08:00
Liam Newman
5f597379b5 JavaDoc warning fixes 2019-11-13 14:53:42 -08:00
Liam Newman
9d8460bb81 Enable automatic code formatter with CI validation
This may be controversial but it we're doing it. Having code formatting needs to be consistent
and a non-issue during code review. I'm willing modify the configuration if people see a strong
need, but formatting needs to be present and enforced.
2019-11-13 13:28:23 -08:00
Liam Newman
8943af9840 Cleanup tabs and whitespace 2019-11-13 12:47:19 -08:00
Liam Newman
d23c718036 Merge pull request #603 from madhephaestus/master
Add Functionality of OTP to support user 2fa
2019-11-13 12:43:23 -08:00
Alex Taylor
834c84c9ea Added the test for Issue #607
Added a test so that we can prove when this issue is fixed
2019-11-13 15:07:06 -05:00
Liam Newman
adc436a3f5 Update issue templates 2019-11-13 09:48:25 -08:00
Kevin Harrington
e325bf7771 fixed for the sensitive javadoc parser 2019-11-13 00:38:51 -05:00
Kevin Harrington
feabd07a21 adding javadoc 2019-11-13 00:28:18 -05:00
Kevin Harrington
e138c6fd61 Switch interface to existing Supplier class 2019-11-13 00:26:20 -05:00
Kevin Harrington
d32299fde5 add testing of scopes in assigned token 2019-11-13 00:23:38 -05:00
Kevin Harrington
3d7d780e8f only run test with moc date 2019-11-13 00:19:06 -05:00
Kevin Harrington
9f49854033 Comments for the path of OTP exception 2019-11-13 00:17:57 -05:00
Kevin Harrington
1fe820d463 instructions for reproducing the test data 2019-11-12 18:15:08 -05:00
Kevin Harrington
4a78690fde Remove old function prototype and replace it with the lambda model. 2019-11-12 18:10:05 -05:00
Kevin Harrington
3dcaf5a9de Unit test passing with Mock data 2019-11-12 18:05:39 -05:00
Kevin Harrington
ff788852d6 added the filter to the test to only run with mock data 2019-11-12 17:58:21 -05:00
Kevin Harrington
5ae062719e re-run the data capture with the overloaded function 2019-11-12 17:56:25 -05:00
Kevin Harrington
421c0a11fb Implement @PauloMigAlmeida suggested lambda style OTP workflow 2019-11-12 17:32:24 -05:00
Kevin Harrington
6ae586aeb7 Creating a receiver lambda for the PTM functionality 2019-11-12 17:28:23 -05:00
Liam Newman
7036423084 Merge pull request #595 from bitwiseman/issue/rate-limit
Adjust GHRateLimit to system time instead of depending on synchronization
2019-11-12 13:01:58 -08:00
Kevin Harrington
2f118a9cbe Adding suggested exception from @PauloMigAlmeida
When the OTP code is requested, then the special GHOTPRequiredException
is raised instead of the generic IOException. This differentiates
between an OTP request and a failed password.
2019-11-12 15:44:45 -05:00
Kevin Harrington
2c50255b21 renaming 2019-11-12 15:35:55 -05:00
harrington
8cb7210c46 set the timestamp in the token name to match the test data 2019-11-12 15:01:14 -05:00
harrington
ad0a24ad2f Make sure test is only run with stored mock data 2019-11-12 14:54:38 -05:00
harrington
df6c951830 Unit test passing with OTP data 2019-11-12 14:53:14 -05:00
harrington
5da2caa616 Adding the assume only valid when live 2019-11-12 13:00:51 -05:00
harrington
a3fe95d1e4 clear junk data 2019-11-12 12:58:22 -05:00
Liam Newman
38e61c121b Merge pull request #604 from sullis/jackson-2.10.1
jackson 2.10.1
2019-11-11 14:31:21 -08:00
Liam Newman
03e9623073 Updates based on review feedback
Created GHRateLimit.Record
Add the four rate limit records to GHRateLimit
Moved getLimt(), getRemaining(), and so on to point to core record for ease of use.
Fixed update check for header to not replace existing with older when remaining count is lower.

NOTE: Did not expose records other than core and did not resolve header update behavior to respect non-core records.
2019-11-11 14:29:36 -08:00
Sean C. Sullivan
93a1657e1e jackson 2.10.1 2019-11-10 18:31:29 -05:00
Kevin Harrington
91d67fb72f Tuning the test to pass 2019-11-10 12:13:38 -05:00
Kevin Harrington
d8cc1f885c Properly disabling the test 2019-11-10 11:32:59 -05:00
Kevin Harrington
c1f999d896 Disabling test that can't run on CI 2019-11-10 11:27:45 -05:00
Kevin Harrington
efc4d0f59b Merge branch 'master' of git@github.com:madhephaestus/github-api.git 2019-11-10 11:20:50 -05:00
Kevin Harrington
cf55d670b9 Added test to comply with CONTRIBUTING.md
Test extends AbstractGitHubWireMockTest

Test requires 2fa and the user at the command line as the test is run.
2019-11-10 11:20:32 -05:00
Kevin Harrington
8567c5e6a1 Update src/main/java/org/kohsuke/github/GitHub.java
spelling

Co-Authored-By: Liam Newman <bitwiseman@gmail.com>
2019-11-10 10:26:51 -05:00
Kevin Harrington
331084fefd comments 2019-11-09 16:47:26 -05:00
Kevin Harrington
62bf691ac1 Add Functionality of OTP to github
close #602 by adding an API to request a token using an OTP.
2019-11-09 16:43:25 -05:00
Liam Newman
09b41d4665 Merge pull request #593 from github-api/dependabot/maven/com.squareup.okhttp3-okhttp-4.2.2
Bump okhttp from 3.14.2 to 4.2.2
2019-11-07 17:36:00 -08:00
Liam Newman
71645240e9 Address Spotbugs issues in dependency update 2019-11-07 16:40:59 -08:00
dependabot-preview[bot]
603468823d Bump okhttp from 3.14.2 to 4.2.2
Bumps [okhttp](https://github.com/square/okhttp) from 3.14.2 to 4.2.2.
- [Release notes](https://github.com/square/okhttp/releases)
- [Changelog](https://github.com/square/okhttp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/square/okhttp/compare/parent-3.14.2...parent-4.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-07 16:18:48 -08:00
Liam Newman
01f464cc69 Add gitter.io chat 2019-11-07 15:47:39 -08:00
Liam Newman
57ac6e982f Updated Last-Modified headers
Introduces #597

This does not appear to be a bug in github-api but in OkHttp 2.7.5
(and/or the Cache implementation in that version).
2019-11-07 14:05:54 -08:00
Liam Newman
319d2d1efe Update cache test Date and Limit values 2019-11-07 13:50:57 -08:00
Liam Newman
37de3a4122 Add tests for server time ahead and behind local time
Sometimes adding tests finds broken product code.  Sometimes it finds broken test environment.
This was the latter.

The wiremock templating returns dates in UTC format not RFC-1123 format.
2019-11-07 13:24:31 -08:00
Liam Newman
bb3a49264d Merge remote-tracking branch 'github-api/master' into issue/rate-limit 2019-11-07 11:38:00 -08:00
Liam Newman
9cecce74fa Merge pull request #594 from martinvanzijl/add-method-to-set-topics
Add method to set repository topics
2019-11-06 21:26:31 -08:00
Liam Newman
f9cf2878ef Tweaks to test 2019-11-06 21:20:55 -08:00
Liam Newman
9c80b7cf54 Various clean up and fixes for GHRateLimit 2019-11-06 20:38:10 -08:00
Liam Newman
1ecad7031f Handle GHRateLimit expiration and server time inconsistency 2019-11-06 17:17:26 -08:00
Martin van Zijl
c85d6107ec Added method to set repository topics. Fixes #546. 2019-11-07 13:41:14 +13:00
Liam Newman
7b7445b601 Clean up GHRateLimit
Improves the way reset date is calculated - uses server date if possible.

Fixes #383
2019-11-06 11:11:53 -08:00
Liam Newman
1ab474673d Lock okhttp3 UrlConnection to working versions, unlock client 2019-11-04 15:15:28 -08:00
Liam Newman
dbf92e7f20 Added changelog 2019-11-04 11:02:11 -08:00
Liam Newman
6c42db2508 Add release version tag 2019-11-04 10:30:08 -08:00
Liam Newman
c9a42178e8 [maven-release-plugin] prepare for next development iteration 2019-11-04 10:09:02 -08:00
Liam Newman
eff48dfe67 [maven-release-plugin] prepare release github-api-1.99 2019-11-04 10:08:55 -08:00
Liam Newman
0c38bdc068 Merge pull request #590 from github-api/dependabot/maven/org.apache.maven.plugins-maven-source-plugin-3.2.0
Bump maven-source-plugin from 3.1.0 to 3.2.0
2019-11-04 09:35:00 -08:00
Liam Newman
b8e1736696 [maven-release-plugin] prepare for next development iteration 2019-11-04 09:16:45 -08:00
Liam Newman
c2f36444d0 [maven-release-plugin] prepare release github-api-1.98 2019-11-04 09:16:39 -08:00
Liam Newman
5dc74f5b4d [maven-release-plugin] prepare for next development iteration 2019-11-04 08:30:58 -08:00
Liam Newman
9694dfe4cc [maven-release-plugin] prepare release github-api-1.97 2019-11-04 08:30:51 -08:00
Liam Newman
734125ea14 [maven-release-plugin] prepare for next development iteration 2019-11-04 08:07:30 -08:00
Liam Newman
438f5d1b87 [maven-release-plugin] prepare release github-api-1.96 2019-11-04 08:07:19 -08:00
dependabot-preview[bot]
fadd6d7978 Bump maven-source-plugin from 3.1.0 to 3.2.0
Bumps [maven-source-plugin](https://github.com/apache/maven-source-plugin) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/apache/maven-source-plugin/releases)
- [Commits](https://github.com/apache/maven-source-plugin/compare/maven-source-plugin-3.1.0...maven-source-plugin-3.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-04 13:12:37 +00:00
Liam Newman
5026262273 Merge pull request #578 from martinvanzijl/issue_457_create_team_with_repo_access_fix
GHOrganization.createTeam now adds team to specified repositories
2019-11-01 10:50:53 -07:00
Liam Newman
5b53fba020 Merge pull request #581 from martinvanzijl/issue_546_list_repository_topics
Add method to list repository topics
2019-11-01 09:33:10 -07:00
Liam Newman
3892e6e16f Merge branch 'master' into issue_457_create_team_with_repo_access_fix 2019-11-01 09:30:50 -07:00
Liam Newman
33467de763 Formatting and snapshot cleanup 2019-11-01 09:30:33 -07:00
Martin van Zijl
f3528d97c2 Move team cleanup to @Before method as per GitHub review.
Removed constant for TEAM_NAME as it is now only used once in
the method.
2019-11-01 14:48:20 +13:00
Liam Newman
6fb3b01bf0 Fix gpg signing 2019-10-31 18:10:04 -07:00
Martin van Zijl
e3c9cec440 Fixed typo in comment: listTopics() not getTopics(). 2019-11-01 13:48:20 +13:00
Liam Newman
0e011425fb Merge pull request #586 from PauloMigAlmeida/master
[Documentation] :: Add GitHub App Developer Guide
2019-10-31 17:47:23 -07:00
Liam Newman
ba658f7fea Merge branch 'master' into master 2019-10-31 17:47:12 -07:00
Liam Newman
0e6087143b Merge pull request #587 from bitwiseman/site-build
Fix site errors
2019-10-31 17:46:45 -07:00
Liam Newman
5f967e6307 Fix javadoc on java 11 2019-10-31 17:41:05 -07:00
Martin van Zijl
2eb8ce632c Merge branch 'master' into issue_546_list_repository_topics 2019-11-01 13:35:57 +13:00
Liam Newman
f25dbd15d9 Stabilize time check 2019-10-31 16:10:34 -07:00
PauloMigAlmeida
cc5ea77170 Merge branch 'master' of https://github.com/kohsuke/github-api 2019-11-01 12:02:34 +13:00
PauloMigAlmeida
e323644af2 Correcting typos as pointed out during the code review
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-11-01 11:58:16 +13:00
Liam Newman
61f3a3219f Fix tt incompatible tags 2019-10-31 15:41:09 -07:00
Liam Newman
4dcf5dbc13 More pom fixes 2019-10-31 14:24:29 -07:00
Liam Newman
8faecba0a2 Fix site errors 2019-10-31 13:33:14 -07:00
Liam Newman
739551cbe3 Remove old index 2019-10-31 13:01:58 -07:00
PauloMigAlmeida
24a2e42881 [Documentation] :: Add GitHub Developer Guide
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-11-01 02:02:07 +13:00
Liam Newman
6921754c99 Merge pull request #585 from github-api/add-code-of-conduct-1
Create CODE_OF_CONDUCT.md
2019-10-30 17:22:09 -07:00
Liam Newman
d8827a0b44 Create CODE_OF_CONDUCT.md 2019-10-30 17:21:56 -07:00
Liam Newman
a48091988f Update release-drafter.yml 2019-10-30 17:04:40 -07:00
Liam Newman
9bd9c9cf1f Create release-drafter.yml 2019-10-30 16:29:26 -07:00
Liam Newman
695692285b Merge pull request #579 from martinvanzijl/issue_512_methods_to_update_milestones
Add methods to update and delete milestones.
2019-10-30 15:47:50 -07:00
Liam Newman
03edacf7b6 Enable test for Milestone due date update 2019-10-30 15:05:35 -07:00
Liam Newman
4802c97e89 Fix GitHub.printDate()
GitHub.printDate() was not setting GMT timezone resulting in completely bogus output.
2019-10-30 14:57:56 -07:00
Liam Newman
9fc24d1981 Merge branch 'master' into issue_512_methods_to_update_milestones 2019-10-30 12:57:18 -07:00
Liam Newman
d4ddf453b0 Merge pull request #580 from martinvanzijl/issue_529_fix_get_deployment_by_id
Fix for getting deployment by id
2019-10-30 12:55:58 -07:00
Liam Newman
c0117f07cf Merge pull request #583 from PauloMigAlmeida/master
Convenience method to auth with app installation token && documentation examples
2019-10-30 12:54:28 -07:00
Paulo Miguel Almeida
8a88c14b13 Add convenience method to authenticate with app installation tokens;
Convert existing markdown doc to APT due to formatting features;
Replace occurrences of kohsuke user to github-api org where applicable;
Fix repositoryIds method on GHAppCreateTokenBuilder;

Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-10-30 22:18:12 +13:00
Martin van Zijl
a5b6302a69 Add method to list repository topics.
For #546.

The method to update repository topics does not work yet. It may
not have been implemented in the underlying API.
2019-10-30 15:05:09 +13:00
Martin van Zijl
9f29d4619d Fix for getting deployment by id.
Fixes #529.
2019-10-30 13:13:06 +13:00
Martin van Zijl
f4b9dd7d7b Add methods to update and delete milestones.
Fixes #512.
2019-10-30 12:20:06 +13:00
Martin van Zijl
c0a4152b00 GHOrganization.createTeam now adds team to specified repositories.
Fixes #457.
2019-10-29 17:49:41 +13:00
Liam Newman
efb87c5a9e Adjust Jacoco targets to further point to untouched classes. 2019-10-25 19:09:26 -07:00
Liam Newman
061e8bb662 Stop printing to System 2019-10-25 18:33:54 -07:00
Liam Newman
a4f42b2948 Add more tests from AppTest 2019-10-25 18:31:40 -07:00
Liam Newman
cb2fcd3a9e Enable Jacoco on at has-it-been-touched reporting 2019-10-25 18:19:13 -07:00
Liam Newman
1d004a35a0 Merge pull request #510 from awittha/get-user-orgs
Added getUserPublicOrganizations method
2019-10-24 18:32:09 -07:00
Austin Witt
c763c02018 [added] unit tests for getUserPublicOrganizations(...) 2019-10-24 11:03:37 -05:00
Austin Witt
eb36cb4436 Merge remote-tracking branch 'upstream/master' into get-user-orgs 2019-10-23 14:39:54 -05:00
Liam Newman
72d4b9bf62 Merge pull request #525 from vbehar/draft-pr
Add support for draft pull requests
2019-10-21 16:01:02 -07:00
Liam Newman
81ea138f41 Test and fixes for draft pull request 2019-10-21 15:38:04 -07:00
Liam Newman
1bbc66ad62 Merge remote-tracking branch 'github-api/master' into draft-pr 2019-10-21 14:34:40 -07:00
Liam Newman
e7348df372 Merge pull request #575 from romani/patch-1
bump jackson-databind to 2.10.0 to avoid security alert
2019-10-21 12:56:12 -07:00
Roman Ivanov
550e060647 bump jackson-databind to 2.10.0 to avoid security alert 2019-10-20 06:37:28 -07:00
Liam Newman
2970a58e95 Merge branch 'master' into draft-pr 2019-10-18 13:00:39 -07:00
Liam Newman
e0efa04fd4 Merge pull request #574 from github-api/dependabot/maven/com.github.tomakehurst-wiremock-jre8-standalone-2.25.1
Bump wiremock-jre8-standalone from 2.25.0 to 2.25.1
2019-10-18 13:00:14 -07:00
dependabot-preview[bot]
4d24088982 Bump wiremock-jre8-standalone from 2.25.0 to 2.25.1
Bumps [wiremock-jre8-standalone](https://github.com/tomakehurst/wiremock) from 2.25.0 to 2.25.1.
- [Release notes](https://github.com/tomakehurst/wiremock/releases)
- [Commits](https://github.com/tomakehurst/wiremock/compare/2.25.0...2.25.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-18 19:58:47 +00:00
Liam Newman
baba9f5de6 Merge pull request #573 from github-api/dependabot/maven/hamcrest.version-2.2
Bump hamcrest.version from 2.1 to 2.2
2019-10-18 12:57:35 -07:00
dependabot-preview[bot]
c35cd63d0e Bump hamcrest.version from 2.1 to 2.2
Bumps `hamcrest.version` from 2.1 to 2.2.

Updates `hamcrest` from 2.1 to 2.2
- [Release notes](https://github.com/hamcrest/JavaHamcrest/releases)
- [Changelog](https://github.com/hamcrest/JavaHamcrest/blob/master/CHANGES.md)
- [Commits](https://github.com/hamcrest/JavaHamcrest/compare/v2.1...v2.2)

Updates `hamcrest-core` from 2.1 to 2.2
- [Release notes](https://github.com/hamcrest/JavaHamcrest/releases)
- [Changelog](https://github.com/hamcrest/JavaHamcrest/blob/master/CHANGES.md)
- [Commits](https://github.com/hamcrest/JavaHamcrest/compare/v2.1...v2.2)

Updates `hamcrest-library` from 2.1 to 2.2
- [Release notes](https://github.com/hamcrest/JavaHamcrest/releases)
- [Changelog](https://github.com/hamcrest/JavaHamcrest/blob/master/CHANGES.md)
- [Commits](https://github.com/hamcrest/JavaHamcrest/compare/v2.1...v2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-16 23:05:29 +00:00
Liam Newman
80fa389ce3 Fix GHContent.read()
Fixes #487
2019-10-11 15:21:57 -07:00
Liam Newman
8ec861c9fe Merge pull request #563 from bitwiseman/paged_iterable_closure
Simplify creation of PagedIterables from requests
2019-10-11 13:20:17 -07:00
Liam Newman
837400fb5e Merge pull request #572 from sullis/java-matrix-jdk13
GitHub workflow: add JDK 13 to build matrix
2019-10-11 13:18:00 -07:00
Liam Newman
ec4525b8ff Merge branch 'master' into java-matrix-jdk13 2019-10-11 13:13:09 -07:00
Liam Newman
281c927971 Update GHIssueEvent PagedIterable 2019-10-11 13:11:08 -07:00
Liam Newman
9dd44c13e4 Update for AuthorizationList 2019-10-11 13:05:13 -07:00
Liam Newman
f28edbcf8f Simplify creation of PagedIterables from requests 2019-10-11 13:05:13 -07:00
Liam Newman
29e147f992 wrupUp() package private 2019-10-11 13:02:42 -07:00
Sean C. Sullivan
830f4231e1 GitHub workflow: add JDK 13 to build matrix 2019-10-11 12:08:03 -07:00
Liam Newman
7d65e31055 Merge pull request #484 from martinvanzijl/issue_466_edit_gists
Add support for editing Gists
2019-10-11 11:46:56 -07:00
Liam Newman
dec7a91b5b Merge pull request #479 from martinvanzijl/issue_376_issue_events
Add issue events API
2019-10-11 11:44:03 -07:00
Liam Newman
1ba630c221 Minor Gist updater improvement 2019-10-11 11:21:11 -07:00
Martin van Zijl
7d3387fb96 Updated unit tests. 2019-10-11 16:37:08 +13:00
Liam Newman
a0c0de28d7 Move a few more tests to use temp repo 2019-10-09 13:41:00 -07:00
Liam Newman
dc31d52f83 Add facility to create and auto-cleanup temp repos 2019-10-09 13:00:21 -07:00
Martin van Zijl
620c822dac Updates per review on GitHub:
- Created class GHGistUpdater to do the updating.
- Added unit tests.
2019-10-10 07:08:05 +13:00
Liam Newman
5990f5ae22 Merge pull request #567 from jberglund-BSFT/master
Add merge options to GHRepository
2019-10-09 11:02:54 -07:00
Martin van Zijl
37329a50d4 Merge branch 'master' into issue_466_edit_gists 2019-10-10 05:43:10 +13:00
Martin van Zijl
550597f72e Make unit test output neater. 2019-10-09 15:11:02 +13:00
Martin van Zijl
2aa4022e2c Updated per review.
- Created separate class for GHIssueEvent instead of nested classes.
- Renamed test class accordingly.

Other fixes:

- Changed id type to long.
- Updated test cases.
- Added toString() method.
2019-10-09 14:59:08 +13:00
Martin van Zijl
b40741b14d Merge branch 'issue_376_issue_events' of https://github.com/martinvanzijl/github-api into issue_376_issue_events 2019-10-09 14:03:27 +13:00
Joey Berglund
3c739d889e Merge branch 'master' into master 2019-10-08 15:04:55 -05:00
Liam Newman
24a92a133e Merge branch 'master' into issue_376_issue_events 2019-10-08 11:04:22 -07:00
Liam Newman
ce97eb5b40 Merge pull request #482 from martinvanzijl/issue_467_add_user_to_org
Add method to invite user to organization
2019-10-08 11:04:01 -07:00
Liam Newman
7a4e3c480e Merge branch 'master' into issue_467_add_user_to_org 2019-10-08 10:59:27 -07:00
Liam Newman
eefa710839 Merge branch 'master' into issue_466_edit_gists 2019-10-08 10:59:09 -07:00
Liam Newman
4c3e1afcca Merge branch 'master' into get-user-orgs 2019-10-08 10:57:48 -07:00
Liam Newman
c1a77ada5d Merge branch 'master' into draft-pr 2019-10-08 10:55:51 -07:00
Liam Newman
5671e5ed67 Merge branch 'master' into master 2019-10-08 10:54:23 -07:00
Liam Newman
2fdc5a8541 Merge pull request #562 from sullis/github-workflow-java-matrix
GitHub workflow: enable Java matrix [ '1.8.0', '11.0.x' ]
2019-10-08 10:51:37 -07:00
Liam Newman
297dbae247 Merge branch 'master' into github-workflow-java-matrix 2019-10-08 10:47:19 -07:00
Liam Newman
0910cdf3a4 Add test for bridge method 2019-10-08 10:37:51 -07:00
jberglund
6877fb5c74 add unit test 2019-10-08 11:20:34 -05:00
Liam Newman
2d65daa8c9 Merge branch 'master' into master 2019-10-08 08:21:54 -07:00
Sean C. Sullivan
dab4cb6186 cleanup pom.xml 2019-10-07 22:46:40 -07:00
Sean C. Sullivan
40773a2b49 GitHub workflow: enable Java matrix [ '1.8.0', '11.0.x' ] 2019-10-07 22:37:58 -07:00
Liam Newman
7e0d61a6fc Merge pull request #481 from martinvanzijl/issue_459_list_authorizations
Added method to list authorizations
2019-10-07 19:04:00 -07:00
Liam Newman
7f9620d75f Delete Foo.java 2019-10-07 18:46:02 -07:00
Martin van Zijl
3559aef1a1 Fixes per review.
- Added missing brace at end of listMyAuthorizations().
- Added unit test for listMyAuthorizations().
2019-10-08 13:21:48 +13:00
Martin van Zijl
94ceb5eaaf Merge branch 'master' into issue_459_list_authorizations 2019-10-08 12:42:18 +13:00
Martin van Zijl
778ca76d22 Merge branch 'issue_376_issue_events' of https://github.com/martinvanzijl/github-api into issue_376_issue_events 2019-10-08 12:34:44 +13:00
Martin van Zijl
b1c0e41c5c Merge branch 'master' into issue_376_issue_events 2019-10-08 12:31:30 +13:00
Liam Newman
f826edd097 Merge pull request #564 from github-api/dependabot/maven/com.squareup.okio-okio-2.4.1
Bump okio from 2.4.0 to 2.4.1
2019-10-07 14:09:42 -07:00
Liam Newman
edc7c4a4b8 Merge pull request #565 from github-api/dependabot/maven/com.google.code.gson-gson-2.8.6
Bump gson from 2.8.5 to 2.8.6
2019-10-07 14:09:11 -07:00
Liam Newman
dafdc66d25 Merge pull request #568 from bitwiseman/more-tests
More tests
2019-10-07 14:08:45 -07:00
Liam Newman
0d135f14bb Add more CI tests 2019-10-07 14:01:32 -07:00
Liam Newman
568c08d0e9 Separate connection sensitive tests 2019-10-07 13:09:27 -07:00
Liam Newman
87410e295e Add more tests to ci 2019-10-07 13:04:13 -07:00
Joey Berglund
b163e68950 Merge branch 'master' into master 2019-10-07 08:41:56 -05:00
Joey Berglund
88b006e957 Update GHRepository.java 2019-10-07 08:39:38 -05:00
dependabot-preview[bot]
477f2f2814 Bump gson from 2.8.5 to 2.8.6
Bumps [gson](https://github.com/google/gson) from 2.8.5 to 2.8.6.
- [Release notes](https://github.com/google/gson/releases)
- [Changelog](https://github.com/google/gson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/gson/compare/gson-parent-2.8.5...gson-parent-2.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-07 08:09:06 +00:00
dependabot-preview[bot]
933d99c23b Bump okio from 2.4.0 to 2.4.1
Bumps [okio](https://github.com/square/okio) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/square/okio/releases)
- [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/square/okio/compare/parent-2.4.0...2.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-07 08:08:48 +00:00
Martin van Zijl
d3a0c5ded1 Added unit test for adding user to organization. 2019-10-07 15:34:13 +13:00
Martin van Zijl
1e173ddc24 Merge branch 'master' of https://github.com/kohsuke/github-api into issue_467_add_user_to_org 2019-10-07 13:56:08 +13:00
Liam Newman
ca404cb33b Merge branch 'master' into issue_466_edit_gists 2019-10-05 19:40:56 -07:00
Liam Newman
f0dc7d5b02 Merge pull request #532 from farmdawgnation/team-pr-review-requests
Add support for team pr review requests
2019-10-05 19:39:55 -07:00
Liam Newman
933702376f Update Tests to check for lazy loading and refresh 2019-10-05 14:35:13 -07:00
Liam Newman
e08896775b Add Refreshable interfrace and use it in GHTeam and GHPullRequest 2019-10-05 14:17:17 -07:00
Matt Farmer
d610e46f8e Add a test for team review requests 2019-10-05 09:19:28 -04:00
Matt Farmer
7d1989f5a2 Materialize requested_teams from the teams API
We don't get the full object when we retrieve a PR, so when we see
requested teams we need to materialize them from the API
2019-10-05 09:13:13 -04:00
Matt Farmer
5c1e371427 Rebuild wiremock for test review requests 2019-10-05 08:35:12 -04:00
Matt Farmer
dbd9d51747 Merge remote-tracking branch 'upstream/master' into team-pr-review-requests 2019-10-05 08:29:27 -04:00
Liam Newman
fdf5d3f72d Merge pull request #475 from immanuelqrw/label-description
Adding Label description property
2019-10-04 22:28:11 -07:00
Liam Newman
2719867a86 Fix up Label Description and tests 2019-10-04 22:23:53 -07:00
Liam Newman
0240412ad2 Merge remote-tracking branch 'github-api/master' into label-description 2019-10-04 21:44:06 -07:00
Liam Newman
7c065c1205 Merge pull request #477 from martinvanzijl/issue_330_statistics
Add statistics API.
2019-10-04 21:38:08 -07:00
Liam Newman
f9aa1ad1f2 Fix JSON API FB warning 2019-10-04 21:34:55 -07:00
Liam Newman
5feffdf544 Minor fixups after merge from master
Rerecorded WireMock files with newer framework
2019-10-04 21:29:08 -07:00
Liam Newman
4e56b8bb78 Merge branch 'master' into issue_330_statistics 2019-10-04 21:12:35 -07:00
Liam Newman
845017313c Merge pull request #545 from gskjold/issue_425_projects_columns_cards
Support for projects
2019-10-04 21:10:51 -07:00
Liam Newman
dc2830d94f Enable Content test 2019-10-04 21:06:15 -07:00
Liam Newman
552edf8698 Switch to WireMockMultiServerRule as base 2019-10-04 21:06:00 -07:00
Liam Newman
41c51646fe Rename GitHubApiWireMockRule to GitHubWireMockRule 2019-10-04 21:02:44 -07:00
Joey Berglund
a42024bdbc Update GHRepository.java 2019-10-04 16:28:28 -05:00
Liam Newman
20cfb26a7f Disable Licence content test
Need to mock raw.githubusercontent.com to make this work
2019-10-04 11:09:05 -07:00
Liam Newman
3972d11827 WireMock License Test 2019-10-04 10:30:22 -07:00
Liam Newman
5cc88a0075 WireMock Project Tests 2019-10-04 10:27:47 -07:00
Gunnar Skjold
fc08711111 Expanded GHProject with columns and cards. Also added tests for projects, columns and cards 2019-10-04 10:11:18 -07:00
Martin van Zijl
b20c2babec Added support for projects.
Fixes issue #425
2019-10-04 10:11:18 -07:00
Martin van Zijl
cb0facc6ef Updates per GH review.
- Marked getContributorStats(bool) as deprecated, preview
- Moved "stats/" string to getApiTailUrl()
2019-10-05 05:43:23 +13:00
Liam Newman
78abb2edcb Merge pull request #530 from bozaro/request-log
Add GitHub API requests logging
2019-10-04 09:15:09 -07:00
Liam Newman
7d350d9def Merge pull request #561 from github-api/dependabot/maven/org.eclipse.jgit-org.eclipse.jgit-5.5.1.201910021850-r
Bump org.eclipse.jgit from 5.5.0.201909110433-r to 5.5.1.201910021850-r
2019-10-04 08:15:48 -07:00
dependabot-preview[bot]
48d7daf2c4 Bump org.eclipse.jgit from 5.5.0.201909110433-r to 5.5.1.201910021850-r
Bumps org.eclipse.jgit from 5.5.0.201909110433-r to 5.5.1.201910021850-r.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-04 08:22:03 +00:00
Liam Newman
2782059d88 Merge branch 'master' into request-log 2019-10-04 00:44:21 -07:00
Liam Newman
0ca10bc2ac Merge branch 'master' into issue_459_list_authorizations 2019-10-04 00:43:14 -07:00
Liam Newman
880abe2305 Merge branch 'master' into issue_467_add_user_to_org 2019-10-04 00:41:50 -07:00
Liam Newman
22f61d6225 Merge branch 'master' into issue_376_issue_events 2019-10-04 00:41:15 -07:00
Liam Newman
4fbaa425fb Merge branch 'master' into issue_466_edit_gists 2019-10-04 00:36:18 -07:00
Liam Newman
e81e228f03 Merge branch 'master' into issue_330_statistics 2019-10-04 00:01:36 -07:00
Liam Newman
1076f89954 Merge branch 'master' into label-description 2019-10-03 23:56:27 -07:00
Liam Newman
9c6f977202 Merge branch 'master' into get-user-orgs 2019-10-03 23:55:56 -07:00
Martin van Zijl
bd23ba6077 Added Wiremock test files. 2019-10-04 16:27:41 +13:00
Martin van Zijl
c7af56d0ed Changes per review on GitHub.
- Moved statistics methods from GHRepository to new class GHRepositoryStatistics
- Updated StatisticsTest to suit.
- For ContributorStats, put the "wait-till-ready" loop in the accessor method.
  I'm planning to do something similar for the rest.
2019-10-04 16:23:26 +13:00
Liam Newman
8da6db9fcc Merge pull request #522 from PauloMigAlmeida/master
Implement GitHub App API methods
2019-10-03 19:29:37 -07:00
Liam Newman
2fe7342fd7 Merge branch 'master' into master 2019-10-03 19:07:40 -07:00
Liam Newman
f6221144a8 Merge pull request #478 from martinvanzijl/issue_460_team_description_field
Added description field to GHTeam class.
2019-10-03 17:37:52 -07:00
Liam Newman
872d713e50 Fix one more case of connecting outside the proxy 2019-10-03 17:34:52 -07:00
Liam Newman
d5b04f572b Fixed list traversal for paged queries 2019-10-03 17:23:31 -07:00
PauloMigAlmeida
0f7a5f1c08 Merge from upstream;
Remove servlet exclusion due to previous JDK version;

Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-10-04 11:59:58 +13:00
PauloMigAlmeida
a163c565a8 Merge branch 'master' of https://github.com/kohsuke/github-api
 Conflicts:
	src/main/java/org/kohsuke/github/GitHubBuilder.java
	src/test/java/org/kohsuke/github/GitHubTest.java
2019-10-04 11:56:38 +13:00
Liam Newman
413a316b15 Record snapshot for test 2019-10-03 14:51:46 -07:00
Liam Newman
65a92a49b5 Merge remote-tracking branch 'github-api/master' into issue_460_team_description_field 2019-10-03 14:44:04 -07:00
Sharath Babu
563507ca21 add setPrivate functionality on repos 2019-10-03 14:38:26 -07:00
Liam Newman
21b2d02f0a Enable GHOrganizationTest in CI 2019-10-03 14:20:18 -07:00
Liam Newman
19e1a00fd7 Rename mapping files to include index 2019-10-03 14:05:15 -07:00
Liam Newman
a02a6a22d0 Move to Gson for formatting json 2019-10-03 13:49:53 -07:00
Liam Newman
3488421f67 More WireMock tests 2019-10-03 12:34:32 -07:00
Liam Newman
34a961088c Initial attempt at auto-format of JSON 2019-10-03 09:06:31 -07:00
Liam Newman
b35509150a Enable part of AppTest in CI 2019-10-02 15:27:22 -07:00
Liam Newman
d096aa2065 Merge pull request #558 from github-api/dependabot/maven/com.squareup.okio-okio-2.4.0
Bump okio from 2.2.2 to 2.4.0
2019-10-02 09:12:45 -07:00
dependabot-preview[bot]
efd5bef102 Bump okio from 2.2.2 to 2.4.0
Bumps [okio](https://github.com/square/okio) from 2.2.2 to 2.4.0.
- [Release notes](https://github.com/square/okio/releases)
- [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/square/okio/compare/2.2.2...parent-2.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-02 15:57:35 +00:00
Liam Newman
b8c6e44ab6 Update okhttp3 (with Java 8)
This version of okhttp3 is the last to suppurt UrlFactory, but we've replaced it anyway in preparation for future updates.
2019-10-01 14:05:50 -07:00
Liam Newman
9a91cc43e2 Merge pull request #542 from bitwiseman/cache-fix
Improved OkHttpConnector caching behavior
2019-10-01 13:11:26 -07:00
Liam Newman
f4cbab52a7 Merge branch 'master' into cache-fix 2019-10-01 13:07:35 -07:00
Liam Newman
57b58cf203 Merge pull request #557 from github-api/dependabot/maven/org.mockito-mockito-core-3.1.0
Bump mockito-core from 3.0.0 to 3.1.0
2019-10-01 08:25:59 -07:00
dependabot-preview[bot]
9ba8ae08a1 Bump mockito-core from 3.0.0 to 3.1.0
Bumps [mockito-core](https://github.com/mockito/mockito) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v3.0.0...v3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-01 12:54:01 +00:00
Liam Newman
dfe81f510e Add None and Zero Cache tests to CI 2019-09-30 16:23:08 -07:00
Liam Newman
f3a0b35442 Updated Tests to have non-cache tests run in CI 2019-09-30 11:05:11 -07:00
Liam Newman
64e3be3bc7 Merge branch 'master' into cache-fix 2019-09-30 09:13:52 -07:00
Liam Newman
4c82d1c56e Merge pull request #556 from github-api/dependabot/maven/com.github.tomakehurst-wiremock-jre8-standalone-2.25.0
Bump wiremock-jre8-standalone from 2.24.1 to 2.25.0
2019-09-30 09:13:06 -07:00
Liam Newman
d8451fc2f5 Implement new abstract methods from Admin 2019-09-30 09:00:55 -07:00
dependabot-preview[bot]
8078423252 Bump wiremock-jre8-standalone from 2.24.1 to 2.25.0
Bumps [wiremock-jre8-standalone](https://github.com/tomakehurst/wiremock) from 2.24.1 to 2.25.0.
- [Release notes](https://github.com/tomakehurst/wiremock/releases)
- [Commits](https://github.com/tomakehurst/wiremock/compare/2.24.1...2.25.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-30 08:40:16 +00:00
Liam Newman
68176b5695 Merge branch 'master' into draft-pr 2019-09-29 18:36:34 -07:00
Liam Newman
1bf7833959 Merge branch 'master' into request-log 2019-09-29 18:35:53 -07:00
Liam Newman
89770b922d Change listKeys to getKeys 2019-09-29 18:33:08 -07:00
Liam Newman
716947bbb1 Merge branch 'master' into draft-pr 2019-09-27 10:38:23 -07:00
Liam Newman
47e0d7786b Merge branch 'master' into cache-fix 2019-09-27 10:37:26 -07:00
Arngrimur Bjarnason
55f9c40bba Merge branch 'master' into getKeysForUser 2019-09-27 08:24:49 +02:00
Martin van Zijl
51afa30732 Added unit tests. 2019-09-26 14:32:30 +12:00
Liam Newman
23c07316ee Merge branch 'master' into label-description 2019-09-25 17:28:23 -07:00
Liam Newman
e740f52e5e Merge pull request #480 from martinvanzijl/issue_381_branch_url_escaping
Escape special characters in branch URLs
2019-09-25 17:15:50 -07:00
Liam Newman
a731109747 Add tests for URLEncoding 2019-09-25 17:11:46 -07:00
Martin van Zijl
a50a011eb3 Issue #381 - Escape branch URL.
This is using the "old" HTTP.UTF_8 Charset, since the new
StandardCharsets doesn't compile.
2019-09-25 16:59:58 -07:00
Liam Newman
e22c6d3a94 Merge branch 'master' into issue_330_statistics 2019-09-25 16:57:36 -07:00
Liam Newman
50fb9c1795 Merge pull request #473 from joaoe/issue-472-archive-repository
Implemented GitHub.doArchive
2019-09-25 16:55:12 -07:00
Liam Newman
22575c9a01 Add test for archive method 2019-09-25 16:48:54 -07:00
João Eiras
2934922cb5 Implemented GitHub.doArchive
doArchive() will mark a repository as archived.

Issue #472
2019-09-25 16:30:44 -07:00
Liam Newman
9042ff46c7 Clean up Previews 2019-09-25 15:47:07 -07:00
Liam Newman
a1a91539c2 Merge branch 'master' into getKeysForUser 2019-09-25 10:13:39 -07:00
Liam Newman
468f4f94a3 Merge pull request #554 from github-api/dependabot/maven/org.apache.maven.plugins-maven-surefire-plugin-2.22.2
Bump maven-surefire-plugin from 2.22.1 to 2.22.2
2019-09-25 10:10:02 -07:00
Liam Newman
3ebd35437e Merge pull request #552 from github-api/dependabot/maven/org.apache.commons-commons-lang3-3.9
Bump commons-lang3 from 3.7 to 3.9
2019-09-25 10:09:33 -07:00
dependabot-preview[bot]
a166bbadad Bump maven-surefire-plugin from 2.22.1 to 2.22.2
Bumps [maven-surefire-plugin](https://github.com/apache/maven-surefire) from 2.22.1 to 2.22.2.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-2.22.1...surefire-2.22.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-25 17:08:56 +00:00
Liam Newman
7ff07a132a Merge branch 'master' into dependabot/maven/org.apache.commons-commons-lang3-3.9 2019-09-25 10:08:33 -07:00
Liam Newman
6f297bcbb8 Merge pull request #555 from github-api/dependabot/maven/commons-io-commons-io-2.6
Bump commons-io from 1.4 to 2.6
2019-09-25 10:07:45 -07:00
dependabot-preview[bot]
1c023e15af Bump commons-io from 1.4 to 2.6
Bumps commons-io from 1.4 to 2.6.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-25 07:33:21 +00:00
dependabot-preview[bot]
37f96848a7 Bump commons-lang3 from 3.7 to 3.9
Bumps commons-lang3 from 3.7 to 3.9.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-25 07:32:00 +00:00
Liam Newman
3d04765f51 Merge branch 'master' into issue_330_statistics 2019-09-24 18:19:35 -07:00
Liam Newman
e1152fa549 Merge branch 'master' into issue_466_edit_gists 2019-09-24 14:34:15 -07:00
Liam Newman
ab47896f17 Merge branch 'master' into cache-fix 2019-09-24 14:29:36 -07:00
Liam Newman
4f13565e51 Merge pull request #549 from github-api/dependabot/maven/com.infradna.tool-bridge-method-annotation-1.18
Bump bridge-method-annotation from 1.17 to 1.18
2019-09-24 14:29:03 -07:00
dependabot-preview[bot]
7ab93a59e2 Bump bridge-method-annotation from 1.17 to 1.18
Bumps [bridge-method-annotation](https://github.com/infradna/bridge-method-injector) from 1.17 to 1.18.
- [Release notes](https://github.com/infradna/bridge-method-injector/releases)
- [Commits](https://github.com/infradna/bridge-method-injector/compare/bridge-method-injector-parent-1.17...bridge-method-injector-parent-1.18)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-24 21:26:18 +00:00
Liam Newman
943c0d022b Merge pull request #551 from github-api/dependabot/maven/commons-codec-commons-codec-1.13
Bump commons-codec from 1.7 to 1.13
2019-09-24 14:24:58 -07:00
dependabot-preview[bot]
bea8922c39 Bump commons-codec from 1.7 to 1.13
Bumps [commons-codec](https://github.com/apache/commons-codec) from 1.7 to 1.13.
- [Release notes](https://github.com/apache/commons-codec/releases)
- [Changelog](https://github.com/apache/commons-codec/blob/master/RELEASE-NOTES.txt)
- [Commits](https://github.com/apache/commons-codec/compare/1.7...commons-codec-1.13)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-24 21:23:03 +00:00
Liam Newman
97c96a7ee1 Merge pull request #550 from github-api/dependabot/maven/com.github.spotbugs-spotbugs-maven-plugin-3.1.12.2
Bump spotbugs-maven-plugin from 3.1.11 to 3.1.12.2
2019-09-24 14:21:43 -07:00
dependabot-preview[bot]
3d831ba7e8 Bump spotbugs-maven-plugin from 3.1.11 to 3.1.12.2
Bumps [spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) from 3.1.11 to 3.1.12.2.
- [Release notes](https://github.com/spotbugs/spotbugs-maven-plugin/releases)
- [Commits](https://github.com/spotbugs/spotbugs-maven-plugin/compare/spotbugs-maven-plugin-3.1.11...spotbugs-maven-plugin-3.1.12.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-24 21:19:00 +00:00
Liam Newman
df749a98cb Merge pull request #547 from github-api/dependabot/maven/org.eclipse.jgit-org.eclipse.jgit-5.5.0.201909110433-r
Bump org.eclipse.jgit from 4.9.0.201710071750-r to 5.5.0.201909110433-r
2019-09-24 14:17:31 -07:00
dependabot-preview[bot]
22bbc9c621 Bump org.eclipse.jgit from 4.9.0.201710071750-r to 5.5.0.201909110433-r
Bumps org.eclipse.jgit from 4.9.0.201710071750-r to 5.5.0.201909110433-r.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-24 19:46:06 +00:00
Liam Newman
30def4e515 Update jackson-databind to 2.9.10 2019-09-24 12:43:43 -07:00
Matt Farmer
cf8be37310 Correct test run + add sample data 2019-09-21 10:29:48 -04:00
Matt Farmer
12409df446 Merge remote-tracking branch 'upstream/master' into team-pr-review-requests 2019-09-21 09:56:12 -04:00
Martin van Zijl
3452a08de3 Added more detail to unit tests.
Added another accessor method.
2019-09-20 16:27:32 +12:00
Liam Newman
425ea0579e Merge branch 'master' into label-description 2019-09-17 13:33:50 -07:00
Arngrimur Bjarnason
22afb769af Adding wiremocks 2019-09-17 14:56:43 +02:00
Arngrimur Bjarnason
884eae269e Adding possiblity to get ssh keys 2019-09-17 14:39:46 +02:00
PauloMigAlmeida
59a973970e Remove duplicated wiremock dependency
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-09-15 10:57:22 +12:00
PauloMigAlmeida
225383464a Merge remote-tracking branch 'origin/master' 2019-09-15 10:52:53 +12:00
PauloMigAlmeida
3d82731325 Update tests using the new wiremock structure as per requested
Signed-off-by: PauloMigAlmeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-09-15 10:52:22 +12:00
PauloMigAlmeida
dacdf08309 Merge branch 'master' of https://github.com/kohsuke/github-api 2019-09-14 17:00:24 +12:00
Martin van Zijl
ad281adc97 Unit tests and fixes.
Fixed issue with getCodeFrequency() where it would occasionally throw
an exception when the statistics were still being generated.

Added comment about throwing an exception as a possibility when
202 is returned.
2019-09-14 10:39:59 +12:00
Liam Newman
80741c7773 Use CacheControl and only check for cache in constructor 2019-09-12 13:57:28 -07:00
Liam Newman
532f7a4b17 Merge branch 'master' into cache-fix 2019-09-11 22:48:26 -07:00
Liam Newman
5e87d582e4 Add tests showing cache performance 2019-09-11 22:05:02 -07:00
Liam Newman
b9bf47aaca Merge pull request #543 from jsoref/grammar
Grammar
2019-09-11 20:48:28 -07:00
Josh Soref
0dba882817 spelling: create a 2019-09-11 19:28:32 -04:00
Josh Soref
c419883814 spelling: single 2019-09-11 19:28:24 -04:00
Josh Soref
6f0ccbf2b5 grammar: agreement: returns...organizations 2019-09-11 19:28:14 -04:00
Josh Soref
54332c0bd1 this api is no longer a preview... 2019-09-11 19:27:40 -04:00
Josh Soref
5f80674e89 finish thought... 2019-09-11 19:27:04 -04:00
Josh Soref
c4d0d8ff06 grammar: operations-require 2019-09-11 19:26:47 -04:00
Josh Soref
8ac1b7082a brand: GitHub Enterprise 2019-09-11 19:26:14 -04:00
Josh Soref
f146ae8be4 spelling: user 2019-09-11 19:25:55 -04:00
Josh Soref
e7728fdc94 spelling: log-in 2019-09-11 19:25:44 -04:00
Josh Soref
052122e4d0 spelling: abuse 2019-09-11 19:25:29 -04:00
Josh Soref
38827d2b3d grammar: period at end of sentence (not inside parenthetical) 2019-09-11 19:25:19 -04:00
Liam Newman
9e1f16be27 Fix OkHttpConnector caching 2019-09-10 23:01:50 -07:00
Liam Newman
c845846317 Do not rerun tests
If they failed once, they will fail again.
2019-09-10 23:00:44 -07:00
Liam Newman
9276556f19 Mockito 3.0.0 2019-09-10 22:59:07 -07:00
Liam Newman
c796d18948 Merge pull request #541 from bitwiseman/wiremock-github-rule
Add GitHubApiWireMockRule
2019-09-10 22:54:27 -07:00
Liam Newman
8dee5520cf Add GitHubApiWireMockRule
Separates the WireMock and GitHub API info from project specific code.
2019-09-10 22:42:28 -07:00
Liam Newman
440e13714e Merge branch 'master' into issue_466_edit_gists 2019-09-09 22:04:11 -07:00
Liam Newman
44a70b372d Merge pull request #502 from CodeAndChoke/hashcode_equals
Added equals and hashcode
2019-09-09 22:02:22 -07:00
Liam Newman
504286e96e Merge pull request #540 from bitwiseman/test-run
Working CI Build
2019-09-09 22:01:33 -07:00
Liam Newman
ffdd54d2fa Merge branch 'master' into get-user-orgs 2019-09-09 19:40:00 -07:00
Liam Newman
32804b81c0 Merge pull request #527 from WouterG/patch-1
Remove unnessesairy "throws"
2019-09-09 19:38:09 -07:00
Liam Newman
403b22ade0 Working CI Build
This change automatically turns off tests where we haven't had a chance to implement wiremocking.
They can still be run locally by setting test.github.useProxy (even though most of them do actually use the proxy).
2019-09-09 19:34:09 -07:00
Liam Newman
a4e74abcca Merge branch 'master' into master 2019-09-09 17:19:58 -07:00
Liam Newman
8dcef5bac0 Merge branch 'master' into draft-pr 2019-09-09 16:57:14 -07:00
Liam Newman
49878bc4e3 Merge branch 'master' into patch-1 2019-09-09 16:56:34 -07:00
Liam Newman
3f1a71c8a4 Merge branch 'master' into request-log 2019-09-09 16:54:24 -07:00
Liam Newman
bf9b2c0da3 Merge branch 'master' into team-pr-review-requests 2019-09-09 16:40:00 -07:00
Liam Newman
909a274709 Merge pull request #538 from ewiegs4/pr-query-head
Namespace PR head queries with repo's owner by default
2019-09-09 16:31:21 -07:00
Liam Newman
fc529b8083 Merge remote-tracking branch 'kohsuke/master' into pr-query-head 2019-09-09 16:16:36 -07:00
Liam Newman
f1386f26fb maven-build.yml
Trying to get actions to trigger
2019-09-09 16:15:35 -07:00
Liam Newman
cccd09d329 Delete maven.yml 2019-09-09 16:13:51 -07:00
Liam Newman
0fccf7effe Update maven.yml 2019-09-09 16:06:21 -07:00
Liam Newman
4b91a47c8b Merge branch 'master' into issue_460_team_description_field 2019-09-09 16:01:27 -07:00
Liam Newman
bd40499bbe Improve behavior and documentation for WireMock testing 2019-09-09 15:55:03 -07:00
Liam Newman
c7c8cd76c6 Merge branch 'master' into label-description 2019-09-08 23:58:18 -07:00
Liam Newman
0bb9f0ce41 Merge branch 'master' into pr-query-head 2019-09-08 23:55:34 -07:00
Liam Newman
7136afce8e Update all WireMock data files 2019-09-08 23:33:44 -07:00
Liam Newman
ec17c1de6a Update PullRequestTest for WireMocking 2019-09-08 23:33:30 -07:00
Liam Newman
8d6daef354 Rewrite wiremock rule to snapshot on a per-method basis 2019-09-08 23:33:30 -07:00
Liam Newman
3a09d2de4a Rename README to README.md 2019-09-06 17:07:13 -07:00
Liam Newman
c78e10f92e Merge remote-tracking branch 'kohsuke/master' into pr-query-head 2019-09-06 16:18:49 -07:00
Liam Newman
b113ff35ac Merge pull request #537 from bitwiseman/wiremock
Add WireMock testing facility
2019-09-06 16:17:37 -07:00
Eddie Wiegers
6360024d20 Add test for qualified case. 2019-09-06 16:43:19 -05:00
Martin van Zijl
a7683f6bd7 Added setter and unit tests for GHTeam description field. 2019-09-05 16:23:38 +12:00
Liam Newman
e46a9f3f2a Java 8 required for testing, not for package 2019-09-03 13:16:28 -07:00
Eddie Wiegers
a8d711d4c8 Qualify PR head queries with repo's owner by default 2019-09-03 11:40:33 -05:00
Liam Newman
df74fc67bd Add WireMock tests to CI 2019-08-31 21:55:09 -07:00
Liam Newman
450261abbf Move scenario to json files 2019-08-31 19:52:50 -07:00
Liam Newman
12230edc54 Add UserTest to WireMock 2019-08-31 01:35:21 -07:00
Liam Newman
d1cfcf561b Converted GistTest to WireMock 2019-08-31 01:25:25 -07:00
Liam Newman
d143f5af8b Start of WireMock 2019-08-30 17:07:17 -07:00
Liam Newman
0f7ae3cda7 Merge pull request #534 from res0nance/https
Swap to HTTPs
2019-08-28 13:24:52 -07:00
Raihaan Shouhell
baf94e56c8 Swap to HTTPs 2019-08-27 10:45:02 +08:00
Paulo Miguel Almeida
905bd1a4c9 Fix typo
Signed-off-by: Paulo Almeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-08-26 12:37:28 +12:00
Paulo Almeida
96bcf24047 Merge branch 'master' of https://github.com/kohsuke/github-api
# Conflicts:
#	pom.xml
2019-08-26 12:31:23 +12:00
Liam Newman
dfe47235cf Update maven.yml 2019-08-23 19:11:16 -07:00
Liam Newman
b82ea8eaa8 Merge pull request #533 from sullis/jackson-2.9.9.3
jackson-databind 2.9.9.3
2019-08-23 19:06:25 -07:00
Liam Newman
b1b830c268 Switch to spotbugs 2019-08-23 19:02:14 -07:00
Liam Newman
e654d4a6df Fix pom warnings 2019-08-23 18:48:49 -07:00
Liam Newman
ac30b17ecb Do no run GMaven on this project 2019-08-23 18:45:03 -07:00
Liam Newman
95efdb3a51 Use newer dependency plugin 2019-08-23 18:35:38 -07:00
Liam Newman
49c165e203 Update maven.yml 2019-08-23 18:24:52 -07:00
Liam Newman
a4be351d9f Update maven.yml 2019-08-23 18:20:36 -07:00
Liam Newman
3d0401aecd Update maven.yml 2019-08-23 18:17:34 -07:00
Liam Newman
7c27572a53 Split out dependency downloading to new step
For visualization, it helps to not have to search through all the dependency downloads
2019-08-23 18:17:17 -07:00
Liam Newman
1e7760012e Merge pull request #476 from turbanoff/patch-1
Provide more exception details
2019-08-23 18:12:34 -07:00
Liam Newman
24d464b6e5 Add github build action
This ensures that PR's at least build
Currently runs no tests, since they all depend on having user level access to github
2019-08-23 18:10:38 -07:00
Sean Sullivan
499d91f9f8 jackson-databind 2.9.9.3 2019-08-15 15:23:42 -04:00
Matt Farmer
8e0ceaa06b Add a test for requesting reviewers 2019-08-10 20:52:55 -04:00
Matt Farmer
4e62641f7e Add ability to get requested teams 2019-08-10 20:46:34 -04:00
Matt Farmer
688644f5a4 Add support for requesting teams review prs 2019-08-10 20:31:15 -04:00
Paulo Miguel Almeida
4703f2d1f5 Add tests for GithubApp integration;
Add wiremock-standalone library;

Signed-off-by: Paulo Almeida <paulo.miguel.almeida.rodenas@gmail.com>
2019-08-10 19:01:12 +12:00
Artem V. Navrotskiy
14149ae949 Add GitHub API requests logging 2019-07-19 12:00:48 +03:00
Wouter Gerarts
a0fb0d170c Remove unnessesairy "throws"
All IOExceptions are already caught within the method itself.
2019-07-12 17:46:34 +02:00
Vincent Behar
e133afec86 Add support for draft pull requests
See https://developer.github.com/v3/pulls/#input
and https://help.github.com/en/articles/about-pull-requests#draft-pull-requests

Note that it requires the use of a github api preview: https://developer.github.com/v3/previews/#draft-pull-requests
2019-07-11 17:12:20 +02:00
Liam Newman
3ae8ee8ddb Merge pull request #498 from rmetzger/fix-450
Add GHPullRequestReview.submitted_at field
2019-07-01 10:32:01 -07:00
Liam Newman
012643a231 Merge pull request #413 from ThomasCookOnline/fix_version
fix issues
2019-06-19 17:11:59 -07:00
Liam Newman
dccb43f4dc Merge pull request #517 from jamesatha/repo-by-id
Adds the ability to get a repository by ID
2019-06-19 17:11:03 -07:00
Paulo Almeida
15b3bc6a63 Remove JWT dependencies used for testing purposes 2019-06-18 13:36:00 +12:00
Paulo Almeida
2d15bef76d Add missing CHECK_SUITE github event 2019-06-18 11:24:59 +12:00
Paulo Almeida
756d298f04 Add missing INTEGRATION_INSTALLATION_REPOSITORIES github event 2019-06-18 10:50:08 +12:00
Paulo Almeida
9f35eb1a85 Add @Preview and @Deprecated annotations to methods in which the API is still in preview 2019-06-12 11:32:03 +12:00
Paulo Almeida
c905bb4b6c Implement GitHub App API methods 2019-06-11 17:27:07 +12:00
Austin Witt
c78af01c8f Added two getUserPublicOrganizations(...) methods to get public Org memberships of any user, not just the currently-authenticated one. 2019-05-23 09:08:18 -05:00
Austin Witt
084855645a Due-diligence & hygiene updates to GitHub.java 2019-05-23 09:03:47 -05:00
Liam Newman
afce9ece89 Merge pull request #507 from ingwarsw/add_get_team_by_id
Add getTeam by id function
2019-05-22 15:22:25 -07:00
Liam Newman
154e50e36d Merge pull request #499 from anatolyD/feature/let-create-pr-to-org-fork
Create PR from original repo to private org fork
2019-05-22 14:55:52 -07:00
Liam Newman
80a129102b Merge pull request #492 from arykov/fix_add_team_member_role_capital
fixed membership role problem with case
2019-05-17 14:03:43 -07:00
Liam Newman
93672a074e Merge pull request #508 from blacelle/mindthecode-2019-03-24
Update maven dependency
2019-05-16 19:32:04 -07:00
Liam Newman
c7f6f6233c Merge pull request #485 from scotty-g/remove-console-logging
remove system.out from listOrgs
2019-05-16 18:56:45 -07:00
Liam Newman
68915a9daf Added tests for createLabel() method 2019-05-16 18:51:44 -07:00
Liam Newman
13eb91f8dd Preserve api compatibility for createLabel() 2019-05-16 18:44:39 -07:00
Liam Newman
1a8355e6fb Merge branch 'master' into fix_version 2019-05-16 18:23:59 -07:00
James Athappilly
aa2b7ae60a Adds the ability to get a repository by ID
Fixes: https://github.com/kohsuke/github-api/issues/515
2019-04-26 00:29:26 -07:00
Benoit Lacelle
acd36b7ea5 Update maven dependency versions 2019-03-24 12:55:40 +00:00
Karol Lassak
87245ab79f Add getTeam by id function 2019-03-18 14:15:29 +01:00
Long Nguyen
13b6a17827 Added equals and hashcode 2019-03-07 01:08:56 +01:00
Anatoly Danilov
615e4cf24e Create PR is possible without the owner of the repo to modify PR.
Use case: when fork is done into private organization then the original repo maintainer can't have any access there hence this field has to be set to `false` explicitly
2019-02-20 09:25:35 +03:00
Robert Metzger
0e6d08f027 Add GHPullRequestReview.submitted_at field 2019-02-19 10:13:21 +01:00
Alex Rykov
d593e584dd fixed membership role problem with case 2019-02-01 12:19:28 -05:00
sg012265
e046b97160 remove system.out from listOrgs 2018-12-22 21:31:33 -06:00
Martin van Zijl
567d3dac55 Add support for editing Gists.
Fixes issue #466

NOTE: I could not get the deleteFile() method to work.
2018-12-20 08:16:25 +13:00
Martin van Zijl
a67a0aa924 Add method to invite user to organization.
Fixes issue #467
2018-12-14 07:18:29 +13:00
Турбанов Андрей
1b1e3e88fe Provide more exception details
For now if invalid credentials used to search github-api throws following exception

    Exception in thread "main" org.kohsuke.github.GHException: Failed to retrieve https://api.github.com/search/repositories?q=vk+language%3Ajava+created%3A2015-11-26..2016-11-26
	at org.kohsuke.github.Requester$PagingIterator.fetch(Requester.java:529)
	at org.kohsuke.github.Requester$PagingIterator.hasNext(Requester.java:494)
	at org.kohsuke.github.PagedSearchIterable$1.hasNext(PagedSearchIterable.java:55)
	at org.kohsuke.github.PagedIterator.fetch(PagedIterator.java:44)
	at org.kohsuke.github.PagedIterator.hasNext(PagedIterator.java:32)

There is no mentions if credentials at all. Better to propagate exception to user to be able to deal with it.
2018-11-26 01:21:28 +03:00
Immanuel Washington
ec99636ef0 Adding Label description property
Label in the GitHub API has an optional field description which had not been implemented.
2018-11-25 02:10:06 -05:00
Martin van Zijl
9d955d252a Add statistics API.
Fixes issue #330
2018-11-16 18:24:30 +13:00
Martin van Zijl
f136f6837a Added description field to GHTeam class.
Fixes issue #460.
2018-11-13 07:37:07 +13:00
Martin van Zijl
6fc1fb0966 Added a method to list authorizations.
Fixes issue #459
2018-11-12 17:50:49 +13:00
Kohsuke Kawaguchi
fad203a66d [maven-release-plugin] prepare for next development iteration 2018-11-06 08:42:28 -08:00
Kohsuke Kawaguchi
c1bab63ebd [maven-release-plugin] prepare release github-api-1.95 2018-11-06 08:42:18 -08:00
Kohsuke Kawaguchi
40f012b03c rtyler no longer has 50 people he follows 2018-11-06 08:35:48 -08:00
Kohsuke Kawaguchi
a380059389 Merge branch 'master' of github.com:kohsuke/github-api 2018-11-06 08:16:06 -08:00
Kohsuke Kawaguchi
24b998ba2d Merge pull request #461 2018-11-06 08:15:11 -08:00
Kohsuke Kawaguchi
9a1bb09c9f Massaging the changes.
In particular, avoid the kind of addLabel() method that has lots of side
effect and do multiple things.
2018-11-06 08:14:12 -08:00
Kohsuke Kawaguchi
3ad66f8937 Merge pull request #468 from KostyaSha/fixMemLeak
Fix memory leak.
2018-11-06 07:56:15 -08:00
Kohsuke Kawaguchi
a6f3e7df55 Merge pull request #464 2018-11-06 07:49:17 -08:00
Kohsuke Kawaguchi
9345d3be31 Follow the convention in this library 2018-11-06 07:49:02 -08:00
Kohsuke Kawaguchi
8e85bf8839 Merge pull request #470 from recena/archived-attr
Added archived attribute in GHRepository
2018-10-29 08:28:00 -07:00
Manuel Recena
1012dcd194 Added archived attribute in GHRepository. Updated the parent POM 2018-10-25 11:24:46 +02:00
Kanstantsin Shautsou
70251ea11e Fix memory leak.
While repository object is active and code requests commits they are stored in Map.
GHCommit.files contains huge String[]/char[]  amount of data.
The same could be applied to Milestones.
2018-10-20 19:13:47 +03:00
I329802 (Xeric)
9381471fbd add request reviewers as attribute of GHPullRequest 2018-10-11 17:30:25 +08:00
Even Holthe
1c4b716f1a Add methods for adding/removing labels to GHIssue
Fixes #456
2018-10-01 23:29:15 +02:00
Kohsuke Kawaguchi
c8b0584127 [maven-release-plugin] prepare for next development iteration 2018-08-29 21:05:31 -07:00
Kohsuke Kawaguchi
5194a361f4 [maven-release-plugin] prepare release github-api-1.94 2018-08-29 21:05:21 -07:00
Kohsuke Kawaguchi
c44e5d2a87 findbugs fix 2018-08-29 21:00:24 -07:00
Kohsuke Kawaguchi
ee4d514b66 close an opened stream 2018-08-29 20:48:44 -07:00
Kohsuke Kawaguchi
863995cb50 findbugs warning fix 2018-08-29 20:48:36 -07:00
Kohsuke Kawaguchi
cbfe72a76e Fixed a broken test 2018-08-29 20:31:44 -07:00
Kohsuke Kawaguchi
4f17d3519c Merge pull request #411 from tadfisher/master
Add GHRepository.getRelease and GHRepository.getReleaseByTagName
2018-08-30 05:22:26 +02:00
Kohsuke Kawaguchi
3cfcad76ac Merge pull request #417 from twcurrie/tcurrie/revisions
Added release payload.
2018-08-30 05:21:24 +02:00
Kohsuke Kawaguchi
1ca6535811 Merge pull request #449 from martinvanzijl/issue_426_fix_nullptr_when_deleting_refs
Fix for issue #426. Fix null pointer when deleting refs.
2018-08-30 05:21:09 +02:00
Kohsuke Kawaguchi
53612ad2e4 Merge pull request #446 from daniel-beck/fix-page-size
Fix pagination for APIs that supported it ad hoc
2018-08-30 05:20:53 +02:00
Kohsuke Kawaguchi
4b799d264c Merge pull request #443 from Arrow768/GHEventPayload_Issue
Adds the GHEventPayload.Issue class
2018-08-30 05:20:26 +02:00
Kohsuke Kawaguchi
ca5594703a Merge pull request #439 from l3ender/master
Add support for repository searching by "topic"
2018-08-30 05:20:03 +02:00
Kohsuke Kawaguchi
7fc2d9dcca Merge remote-tracking branch 'origin/master' 2018-08-29 20:19:14 -07:00
Kohsuke Kawaguchi
c413fc1e30 Merge pull request #438 from jgangemi/jae/issue-434
- added overloaded 'uploadAsset' method
2018-08-30 05:18:51 +02:00
Kohsuke Kawaguchi
b5086c7759 Merge pull request #437 2018-08-29 20:18:21 -07:00
Kohsuke Kawaguchi
92a015ca4d Clear up import statements 2018-08-29 20:18:10 -07:00
Kohsuke Kawaguchi
3b2802e36d minor doc improvement 2018-08-29 20:18:00 -07:00
Kohsuke Kawaguchi
7bf23eaa15 Merge pull request #436 from jgangemi/jae/rm-exception
- remove unthrown IOException
2018-08-30 05:16:28 +02:00
Kohsuke Kawaguchi
9afd1c5ee8 Merge pull request #435 2018-08-29 20:15:08 -07:00
Kohsuke Kawaguchi
5e36377b36 It appears LOKI preview is done and all those methods are now final 2018-08-29 20:15:01 -07:00
Kohsuke Kawaguchi
c988df13a8 Use a short form 2018-08-29 20:15:01 -07:00
Kohsuke Kawaguchi
29a40d31b7 TAB -> space 2018-08-29 20:15:01 -07:00
Kohsuke Kawaguchi
ddc27e818b Let's not yet expose this new class because it's not final 2018-08-29 20:15:01 -07:00
Kohsuke Kawaguchi
3fa70ac841 doc improvement 2018-08-29 19:05:56 -07:00
Kohsuke Kawaguchi
b2b7dfaf37 Massaged the change to match the existing API design convention 2018-08-29 19:05:19 -07:00
Martin van Zijl
c309c2cf13 Fix for issue #426. Fix null pointer when deleting refs. 2018-08-13 12:36:15 +12:00
Martin van Zijl
71304b114a Fix for issue #376. Added issue events API. 2018-08-13 11:44:21 +12:00
Daniel Beck
0ffcbdbd38 Fix pagination for APIs that supported it ad hoc 2018-07-17 11:27:54 +02:00
Werner
e368a17420 Adds the GHEventPayload.Issue class 2018-07-01 12:23:13 +02:00
Sharath
2fcfb2f67d address review comments in supporting updating content with sha 2018-06-12 18:26:20 -07:00
onoguera-ob
f68a85056e Update integration test. 2018-06-12 18:26:20 -07:00
Oliver Noguera
943f47d29d Add sha1 to updateFiles see
https://developer.github.com/v3/repos/contents/#update-a-file
2018-06-12 18:26:20 -07:00
l3ender
fd37a2c466 Add support for repository searching by "topic"
See https://help.github.com/articles/searching-repositories/#search-by-topic
2018-06-06 11:44:46 -05:00
Jae Gangemi
eacdd7afe8 - added overloaded 'uploadAsset' method 2018-05-30 08:18:25 -06:00
Rechi
fe5ea52cdf [feature] implement Repository Invitations API
fixes #374
2018-05-29 22:00:00 +02:00
Jae Gangemi
ca6d77cbb3 - remove unthrown IOException 2018-05-28 17:49:21 -06:00
Jae Gangemi
1145941d11 - add support for signed commits
- add support for required number of reviews
2018-05-27 15:33:58 -06:00
Kohsuke Kawaguchi
d61697a152 [maven-release-plugin] prepare for next development iteration 2018-05-01 07:56:38 -07:00
Kohsuke Kawaguchi
38b77a9c79 [maven-release-plugin] prepare release github-api-1.93 2018-05-01 07:56:27 -07:00
Kohsuke Kawaguchi
7d294ee8c2 Looks like release rollback didn't quite complete 2018-05-01 07:26:09 -07:00
Kohsuke Kawaguchi
33d9422d03 Merge pull request #422 from ggrell/fix-421-enum-case-issue
Fixes #421 - Enum case doesn't match for Pull Request Reviews
2018-05-01 07:19:42 -07:00
Kohsuke Kawaguchi
bb7302c23a Merge branch 'master' of github.com:kohsuke/github-api 2018-05-01 07:18:57 -07:00
Kohsuke Kawaguchi
d50ae63a5a Merge pull request #431 from Rechi/fixPRLabels
[fix] fetch labels with HTTP GET method
2018-05-01 07:18:43 -07:00
Kohsuke Kawaguchi
1961836e19 Merge pull request #427 from itepikin-smartling/master
Add support for previous_filename for file details in PR.
2018-05-01 07:17:32 -07:00
Kohsuke Kawaguchi
f2ed7c15ce Looks like the permission scheme changed on jenkinsci/violations-plugin 2018-05-01 07:12:30 -07:00
Kohsuke Kawaguchi
4dce173630 Extracted the List<GHUser>->List<String> out to Requester for reuse 2018-05-01 07:03:53 -07:00
Kohsuke Kawaguchi
86f868b2d4 Fixed compilation errors introduced by 8b38a20c18 2018-05-01 06:59:03 -07:00
Kohsuke Kawaguchi
363064f5c0 Merge branch 'master' of github.com:kohsuke/github-api 2018-04-30 19:58:33 -07:00
Kohsuke Kawaguchi
9d99ee9cfc Merge pull request #430 from twcurrie/tcurrie/requestReviewer
Added request reviewers function within GHPullRequest.
2018-04-30 19:58:19 -07:00
Rechi
db8969707d [fix] fetch labels with HTTP GET method 2018-04-06 10:00:00 +02:00
Trevor Currie
a24ac37dfd Added request reviewers function within GHPullRequest. 2018-03-28 23:33:08 -07:00
itepikin
1b04d471b3 Added support for previous_filename for file details in PR. 2018-03-22 11:16:09 +03:00
Gyuri Grell
9cc400a081 Fixes #421 - Enum case doesn't match for Pull Request Reviews
* Set Jackson to ignore case differences in enums.
2018-03-01 20:50:00 -05:00
Kohsuke Kawaguchi
e233aeec0c Merge pull request #410 from Limess/409/update-commons-lang
Update commons-lang to 3.7
2018-03-01 09:45:15 -08:00
Kohsuke Kawaguchi
5dfd621900 Merge pull request #420 from randomvariable/fix/tlsv12
OkHttpConnector: Enforce use of TLSv1.2 to match current Github and Github Enterprise TLS support.
2018-03-01 09:43:24 -08:00
Naadir Jeewa
f0f6a9988f OkHttpConnector: Enforce use of TLSv1.2 to match current Github
and Github Enterprise TLS support.
2018-02-28 09:36:15 +00:00
Trevor Currie
587438938c Added release payload. 2018-02-22 09:38:25 -08:00
Edem Osmanov
2497ac68d1 fix issues 2018-02-14 12:16:01 +02:00
Tad Fisher
75918c59cc Add GHRepository.getRelease and GHRepository.getReleaseByTagName
These implement the API endpoints for:

- GET /repos/:owner/:repo/releases/:id
- GET /repos/:owner/:repo/releases/tags/:tag
2018-02-05 14:30:24 -08:00
Charlie Briggs
8b38a20c18 Update commons-lang to 3.7
This fixes the vulnerabilities:
* https://issues.apache.org/jira/browse/LANG-1373
* https://issues.apache.org/jira/browse/LANG-805.
2018-01-23 11:00:58 +00:00
Kohsuke Kawaguchi
e7b76bfdc5 Doc improvements 2018-01-21 11:51:04 -08:00
Kohsuke Kawaguchi
3503ff6d36 Additional methods for issue comment 2018-01-21 11:50:22 -08:00
Kohsuke Kawaguchi
192e21a9fc [maven-release-plugin] prepare for next development iteration 2018-01-13 11:52:05 -08:00
Kohsuke Kawaguchi
24e288d584 [maven-release-plugin] prepare release github-api-1.92 2018-01-13 11:51:56 -08:00
Kohsuke Kawaguchi
0e5ffda5e5 Release failed due to javadoc errors 2018-01-13 11:45:57 -08:00
Kohsuke Kawaguchi
cdf6f18ec0 [maven-release-plugin] prepare for next development iteration 2018-01-13 10:36:53 -08:00
Kohsuke Kawaguchi
188245fa7f [maven-release-plugin] prepare release github-api-1.91 2018-01-13 10:36:45 -08:00
Kohsuke Kawaguchi
e10b747d6a Re-retried the object.
It looks like the format has changed a bit since this payload was
retrieved originally?
2018-01-13 10:30:48 -08:00
Kohsuke Kawaguchi
f2bb6a05a5 Merge pull request #384 2018-01-13 10:19:12 -08:00
Kohsuke Kawaguchi
f41da19db5 Further restoration of the compatibility 2018-01-13 09:54:14 -08:00
Kohsuke Kawaguchi
d0a56dbb21 Merge pull request #406
... with some further changes
2018-01-13 09:47:37 -08:00
Kohsuke Kawaguchi
acbf286e59 Massaged the changes
- Restored binary compatibility. The draft API has changed in some
  significant way when it became public, and the PR took the liberty to
  delete removed constants and method signatures. I brought them back so
  that older clients can keep functioning.

- Introduced a builder pattern to create PR review

- replying to a review comment should be an instance method, not a
  static method.

- GHPullRequestReview and GHPullRequestReviewDraft was not making sense
  to me, since GitHub API doesn't differentiate them. It creates a
  practical problem of not being able to submit a review comment unless
  you created the review comment in the same JVM session. That said, I
  don't understand the point of this two phase approach in the GitHub
  API to begin with!
2018-01-13 09:43:44 -08:00
Kohsuke Kawaguchi
0f7c160409 Based on issue #399, adjusting the behaviour.
This ends up changing the behaviour cloes to that of #394.
2018-01-12 21:33:03 -08:00
Kohsuke Kawaguchi
5113aacb89 Issue #403: Typo in method name 2018-01-12 21:28:37 -08:00
Kohsuke Kawaguchi
4e31636181 Allow the caller to wait for the mergeable state to change.
This approaches #394 differently. The problem with the original #394 is
that the supposed behaviour is only useful for people waiting for
`getMergeable()` to return non-null in a busy loop, yet it impacts all
the other methods of this object.
2018-01-12 21:25:30 -08:00
Kohsuke Kawaguchi
1e497d2c44 Merge branch 'master' into bridge-method-annotation 2018-01-12 21:13:49 -08:00
Kohsuke Kawaguchi
70bd4fa161 Merge pull request #379 2018-01-12 21:12:48 -08:00
Kohsuke Kawaguchi
65996050d5 Massaged changes to follow the convention 2018-01-12 21:12:40 -08:00
Kohsuke Kawaguchi
7f52031199 Merge branch 'master' of github.com:kohsuke/github-api 2018-01-12 21:07:11 -08:00
Kohsuke Kawaguchi
5430f3d33c Merge pull request #391 2018-01-12 21:06:55 -08:00
Kohsuke Kawaguchi
43075faaf8 By convention we use "listXyz" method names 2018-01-12 21:06:47 -08:00
Kohsuke Kawaguchi
f3a1272e31 Merge pull request #397 from mizoguche/set-milestone
Add GHIssue#setMilestone
2018-01-12 21:04:18 -08:00
Kohsuke Kawaguchi
41c028d4d9 Merge pull request #401 2018-01-12 21:00:56 -08:00
Kohsuke Kawaguchi
a17ce04552 Adjustment to compensate 2018-01-12 21:00:25 -08:00
Björn Häuser
d0b4652dcd Replace "new Error" with GHException
(rolled back some of the hunks from the original PR)
2018-01-12 19:44:25 -08:00
Kohsuke Kawaguchi
e66f71c76e Merge pull request #407 from notsudo/GHCreateRepositoryBuilder_Add_Merge_Settings
Adding merge settings to GHCreateRepositoryBuilder
2018-01-12 19:39:03 -08:00
Kohsuke Kawaguchi
6effd4b846 Merge pull request #396 from Rechi/fixGHPersonNullPointer
[fix] GHPerson: check if root is null
2018-01-12 08:45:02 -08:00
Timothy McNally
df861f5403 Adding methods to GHCreateRepositoryBuilder to allow setting the allowed merge methods for pull requests. 2018-01-09 17:32:54 -08:00
Sébastien Lesaint
e74346fed6 support create PR review in single API call & remove @Preview 2018-01-09 14:13:25 +01:00
Sébastien Lesaint
6961c467a6 create review comment reply from GHPullRequest 2018-01-09 14:13:25 +01:00
Sébastien Lesaint
892d305165 add Requester#with override for long value 2018-01-09 14:13:25 +01:00
Sébastien Lesaint
fa16261d7a position of pr comment can be null and original_position is not parsed
position of pr comment is null when comment is outdated (ie. not located in diff patch anymore)
2018-01-09 14:13:25 +01:00
Sébastien Lesaint
15991fd2f7 PullRequest review state and event do not have same values
this fixes parsing of response of WS call submitting a review to fail
when event of new review is REQUEST_CHANGES
also, specifying event when creating a pending PR review is useless and
providing it when submitting the review is enough
2018-01-09 14:13:25 +01:00
Michiaki Mizoguchi
c80b8f60f8 Add GHIssue#setMilestone 2017-11-16 12:42:52 +09:00
Rechi
ab6253cbd0 [fix] GHPerson: check if root is null 2017-11-09 22:41:49 +01:00
sg012265
35ba267115 Revert wildcard usage for imports 2017-10-30 15:38:19 -05:00
sg012265
ab24e6e1c1 Add get for all orgs 2017-10-30 15:32:25 -05:00
Kohsuke Kawaguchi
e25ae27a15 [maven-release-plugin] prepare for next development iteration 2017-10-28 15:54:44 -07:00
Kohsuke Kawaguchi
2b7c524908 [maven-release-plugin] prepare release github-api-1.90 2017-10-28 15:54:33 -07:00
Kohsuke Kawaguchi
0b069df9ce Pick up the version that fixes int->long adaption 2017-10-28 15:48:26 -07:00
Kohsuke Kawaguchi
60c9ba88ae Updated tests 2017-10-28 15:27:38 -07:00
Kohsuke Kawaguchi
cc2e60c84a Merge pull request #388 2017-10-28 09:01:01 -07:00
Kohsuke Kawaguchi
83c2c4e92e Fixed the broken design of how GHDeploymentStatus get exposed. 2017-10-28 08:59:41 -07:00
Kohsuke Kawaguchi
ab3d9e82ef A little better version of the bridge method 2017-10-28 08:43:48 -07:00
Kohsuke Kawaguchi
b6063dd534 Restored binary compatibility 2017-10-28 08:42:27 -07:00
Kohsuke Kawaguchi
e6754354e4 Merge pull request #389 2017-10-28 07:54:47 -07:00
Kohsuke Kawaguchi
4849619d67 None of the connectToEnterprise methods are preferrable so document accordingly 2017-10-28 07:54:41 -07:00
Kohsuke Kawaguchi
9b0ace242a Merge pull request #390 2017-10-28 07:45:14 -07:00
Kohsuke Kawaguchi
e94ba74058 Convention is to call these methods setXyz. Plus doc 2017-10-28 07:44:23 -07:00
Baptiste Mathus
569fa06d2d Labels: add method to update color 2017-10-25 14:06:28 +02:00
iraleigh
46dce17abc Fixed Typo 2017-10-24 14:53:23 -07:00
iraleigh
40d8f4a352 Fixed OAuth connection to enterprise API 2017-10-24 14:24:25 -07:00
Arne Burmeister
6415785220 boyscout: updated dependencies 2017-10-23 17:05:31 +02:00
Arne Burmeister
7735edeae8 extend id from int to long 2017-10-23 17:05:02 +02:00
Matt Nelson
0f81d1dbb3 Add support for pr review/review comment events 2017-10-05 18:14:15 -05:00
Anton Zagorskii
ae1ec8b558 Roles for team members 2017-09-20 13:22:30 +01:00
Jesse Glick
09c2b39530 bridge-method-annotation should be an optional dep. 2017-09-13 15:14:42 -04:00
Kohsuke Kawaguchi
b443e866f9 Added lock/unlock op and additional properties
Issue #355
2017-09-09 20:38:40 -07:00
Kohsuke Kawaguchi
d4404713a8 [maven-release-plugin] prepare for next development iteration 2017-09-09 13:28:40 -07:00
Kohsuke Kawaguchi
47409a9a99 [maven-release-plugin] prepare release github-api-1.89 2017-09-09 13:28:31 -07:00
Kohsuke Kawaguchi
60bfea2d3b Bug fix 2017-09-09 13:22:16 -07:00
Kohsuke Kawaguchi
d3ed8eaed5 Merge pull request #339 2017-09-09 13:07:18 -07:00
Kohsuke Kawaguchi
692dccf110 Massaging the change a bit 2017-09-09 13:03:18 -07:00
Kohsuke Kawaguchi
92caf98683 Reverting java1.6 change which I assume is accidental.
Not that I really care about Java5 but I think that change should
be done separatel & intentionally
2017-09-09 12:57:52 -07:00
Kohsuke Kawaguchi
6178d38895 connector usage is unsynchronized 2017-09-09 12:47:18 -07:00
Kohsuke Kawaguchi
40fb38a9ba Window focus problem 2017-09-09 12:45:58 -07:00
Kohsuke Kawaguchi
20e68d53fd Merge pull request #283 2017-09-09 12:45:02 -07:00
Kohsuke Kawaguchi
2d3557e049 Improved the intern logic
if the user record does not exist yet, there's no need to fetch that
eagerly, as they are fetched on demand via the populate() method.
2017-09-09 12:44:12 -07:00
Kohsuke Kawaguchi
d8f4bc7395 Added updater
This solves #331 differently
2017-09-09 12:31:10 -07:00
Kohsuke Kawaguchi
353f9bb809 pointless null check since the with method already does it 2017-09-09 12:23:40 -07:00
Kohsuke Kawaguchi
ccfe3ad4f7 Merge pull request #333 2017-09-09 12:17:39 -07:00
Kohsuke Kawaguchi
9012820c03 Massage the signature a bit.
AFAICT sha and merge_method are not mutually exclusive.
2017-09-09 12:17:21 -07:00
Kohsuke Kawaguchi
fe2af19e42 Unused constant 2017-09-09 12:15:21 -07:00
Kohsuke Kawaguchi
f721e053f1 Added convenience connector for OkHttp3
Note that the existing one needs to be kept for compatibility with OkHttp2
2017-09-09 12:11:36 -07:00
Kohsuke Kawaguchi
e6ad9feb84 Keeping Findbugs happy 2017-09-09 12:05:39 -07:00
Kohsuke Kawaguchi
635350c40e Additional naming consistency change 2017-09-09 12:02:44 -07:00
Kohsuke Kawaguchi
17edd33703 Reorganized imports following #337 2017-09-09 12:00:23 -07:00
Kohsuke Kawaguchi
b0f2a871c6 Merge pull request #337 2017-09-09 11:58:13 -07:00
Kohsuke Kawaguchi
8928a8a1dc Content type should be JSON by default when sending JSON.
This solves #350 a little differently.
2017-09-09 11:51:55 -07:00
Kohsuke Kawaguchi
2b6f37a6cc Merge pull request #361 2017-09-09 11:48:33 -07:00
Kohsuke Kawaguchi
f3a3b87861 Defined entry points 2017-09-09 11:48:25 -07:00
Kohsuke Kawaguchi
9cf6ee78d4 Pointless string conversion 2017-09-09 11:44:09 -07:00
Kohsuke Kawaguchi
bbc2f3962f Proper access control modifier 2017-09-09 11:44:02 -07:00
Kohsuke Kawaguchi
be49eb22d2 Merge pull request #368 2017-09-09 11:40:41 -07:00
Kohsuke Kawaguchi
fb47067215 Naming changes to emphasize that these are just traffic info 2017-09-09 11:40:28 -07:00
Kohsuke Kawaguchi
2c80ef178d Capture commonality between total and daily 2017-09-09 11:39:12 -07:00
Kohsuke Kawaguchi
9af8112148 Tightening up access control and use primitive type 2017-09-09 11:37:18 -07:00
Kohsuke Kawaguchi
57c36f437a [maven-release-plugin] prepare for next development iteration 2017-09-09 08:19:29 -07:00
Kohsuke Kawaguchi
5ed8a34566 [maven-release-plugin] prepare release github-api-1.88 2017-09-09 08:19:20 -07:00
Kohsuke Kawaguchi
ea8df9bd61 javadoc fix 2017-09-09 08:13:51 -07:00
Kohsuke Kawaguchi
b0c51e03b7 [maven-release-plugin] prepare for next development iteration 2017-09-09 08:06:27 -07:00
Kohsuke Kawaguchi
336924ef23 [maven-release-plugin] prepare release github-api-1.87 2017-09-09 08:06:18 -07:00
Kohsuke Kawaguchi
ad28ca4a90 Use string constant like other previews 2017-09-09 07:59:31 -07:00
Kohsuke Kawaguchi
aebbe86cfc Keeping findbugs happy 2017-09-09 07:57:49 -07:00
Kohsuke Kawaguchi
df9faf4943 Auto-retry flaky tests 2017-09-08 16:09:41 -07:00
Kohsuke Kawaguchi
3e295b6be4 Merge branch 'master' of github.com:kohsuke/github-api 2017-09-08 15:52:31 -07:00
Kohsuke Kawaguchi
8dd6dbf995 getRef never returns null 2017-09-08 15:52:11 -07:00
Kohsuke Kawaguchi
612139f2ff Merge pull request #375 from stephenc/tag-object-support
Add basic support for tag objects
2017-09-08 15:49:33 -07:00
Kohsuke Kawaguchi
240bcabb76 Merge pull request #351 2017-09-08 14:16:45 -07:00
Kohsuke Kawaguchi
cda27d5963 This field should be still final 2017-09-08 14:16:09 -07:00
Kohsuke Kawaguchi
2f8c3997f7 Restored signature of the previous enableProtection() method 2017-09-08 14:13:21 -07:00
Kohsuke Kawaguchi
46b89a48db Merge Pull request #369 2017-09-08 14:06:22 -07:00
Kohsuke Kawaguchi
5c9cbee2f9 Merge pull request #332 from sebkur/fix_javadoc
Fix a bug in the Javadocs (due to copy and paste)
2017-09-08 10:39:58 -07:00
Kohsuke Kawaguchi
ee8973c239 Merge pull request #338 from sebkur/ignore-eclipse-files
Ignore eclipse files
2017-09-08 10:39:39 -07:00
Kohsuke Kawaguchi
2e2813f363 Merge pull request #343 from kamontat/feature/latest-release
add latest release
2017-09-08 10:39:13 -07:00
Kohsuke Kawaguchi
7ceca0769f Merge pull request #363 from PauloMigAlmeida/master
Add missing event types used by repository webhooks
2017-09-08 10:36:33 -07:00
Kohsuke Kawaguchi
4d277cc61f Merge pull request #352 from stephenc/pr-reviews
Add support for PR reviews preview
2017-09-08 10:35:58 -07:00
Kohsuke Kawaguchi
e67fbb4621 Merge pull request #362 from KostyaSha/pingHook
Add ping hook method
2017-09-08 10:34:45 -07:00
Kohsuke Kawaguchi
29b5357ceb Merge pull request #358 from jglick/no-preview-JENKINS-36240
[JENKINS-36240] /repos/:owner/:repo/collaborators/:username/permission no longer requires korra preview
2017-09-08 10:33:31 -07:00
Stephen Connolly
9dabec107b Add basic support for tag objects 2017-09-01 12:52:15 +01:00
Matt Mitchell
f2a2ad90b7 Switch to a concurrent hash map 2017-08-29 11:30:25 -07:00
Matt Mitchell
cfe4c0c510 Merge remote-tracking branch 'upstream/master' into synchro-api 2017-08-29 10:38:54 -07:00
Jae Gangemi
23cd51a6da - improved branch protection support 2017-08-08 16:17:58 -06:00
Jae Gangemi
7396395f90 - updated ignore entries for eclipse/moc os 2017-08-08 14:31:11 -06:00
adw1n
a1819bf232 Added getClones method to GHRepository (https://developer.github.com/v3/repos/traffic/#clones). 2017-08-01 06:38:28 +02:00
adw1n
8accf07d46 Changed timestamp (GHRepositoryViews.DayViews.timestamp) field type from String to Date. 2017-08-01 04:02:10 +02:00
adw1n
6dcbace572 Added getViews method to GHRepository.
getViews implements https://developer.github.com/v3/repos/traffic/#views
2017-08-01 03:38:46 +02:00
Greg Gianforcaro
e90c86ec2f Remove Preview status, merge_method is now out of preview 2017-07-18 11:36:38 -04:00
Greg Gianforcaro
971ae1fa4d Merge branch 'master' into pr-merge-method 2017-07-18 11:33:20 -04:00
Paulo Miguel Almeida
4abe87036c Add missing event types used by repository webhooks 2017-07-14 04:23:08 +00:00
Kanstantsin Shautsou
8d1b44db97 Add ping hook method 2017-07-10 02:39:03 +03:00
Serban Iordache
b537f9925b issue #360: Add support for committing multiple files 2017-07-07 16:21:11 +02:00
Kohsuke Kawaguchi
f2fe8eaf86 [maven-release-plugin] prepare for next development iteration 2017-07-02 17:08:35 -07:00
Kohsuke Kawaguchi
46715cac08 [maven-release-plugin] prepare release github-api-1.86 2017-07-02 17:08:24 -07:00
Kohsuke Kawaguchi
0f21eba57f Merge pull request #359 from jglick/SocketTimeoutException-JENKINS-45142
[JENKINS-45142] Retry connections after getting SocketTimeoutException
2017-06-29 17:13:31 -04:00
Jesse Glick
cb7620395a [JENKINS-45142] Retry connections after getting SocketTimeoutException. 2017-06-28 17:09:54 -04:00
Jesse Glick
3a40af8871 [JENKINS-36240] /repos/:owner/:repo/collaborators/:username/permission no longer requires korra preview. 2017-06-12 10:28:25 -04:00
mdeverdelhan
c9b5074bc4 Fix the wrapping of retrieved commits (owner/repository) 2017-05-11 12:32:34 +02:00
Stephen Connolly
44d4d0d767 Add support for PR reviews preview 2017-03-30 12:17:06 +01:00
mdeverdelhan
64af13f40d Add the Commit search API (still in preview) 2017-03-30 12:55:55 +02:00
Kohsuke Kawaguchi
e9b59c6bef [maven-release-plugin] prepare for next development iteration 2017-02-28 21:06:14 -08:00
Kohsuke Kawaguchi
3d03659508 [maven-release-plugin] prepare release github-api-1.85 2017-02-28 21:06:08 -08:00
Kohsuke Kawaguchi
0374d2de48 Merge pull request #346 from stephenc/close-the-connections
Ensure that connections are closed for error responses
2017-02-27 12:33:18 -08:00
Stephen Connolly
2627dc5ee4 Ensure that connections are closed for error responses
- This was endless fun to trace, but I found it at last. This should
stop the `WARNING: A connection to https://api.github.com/ was leaked.
Did you forget to close a response body?` messages in the logs when
using the OkHttpConnector.
2017-02-23 12:52:29 +00:00
kamontat
5554332b5b add return null if latest release not found 2017-02-20 10:20:53 +07:00
kamontat
1cffea892b add test 2017-02-20 10:20:08 +07:00
kamontat
fd859815b0 fixed indent, rename to getLastestRelease 2017-02-20 09:36:28 +07:00
kamontat
166e26d101 add latest release 2017-02-19 23:57:44 +07:00
Kanstantsin Shautsou
be081eec3f Inject responce headers in GHObject and Exceptions.
GH has specific to GET/POST headers required for analysing in case of error.

Signed-off-by: Kanstantsin Shautsou <kanstantsin.sha@gmail.com>
2017-02-10 04:11:20 +03:00
Kanstantsin Shautsou
55b00a87f6 Set 1.6 level. I'm not so old.
Signed-off-by: Kanstantsin Shautsou <kanstantsin.sha@gmail.com>
2017-02-10 03:28:06 +03:00
Sebastian Kürten
429b26cee8 Ignore eclipse files 2017-02-09 18:18:08 +01:00
Sebastian Kürten
fafe6b0ff7 Remove unused imports
Especially also remove the unsued import of
javax.xml.bind.DatatypeConverter from GHContent which is non-public API
as of Java 8
2017-02-09 18:15:20 +01:00
Greg Gianforcaro
5b156006fb Add 'Preview' support for MergeMethod on GHPullRequest
- Add 'polaris' preview
- Add MergeMethod Enum
- Add merge method to GHPullRequest which takes a MergeMethod
2017-01-27 23:36:54 -05:00
Sebastian Kürten
75f0c08ca4 Fix a bug in the Javadocs (due to copy and paste) 2017-01-23 12:21:13 +01:00
Kohsuke Kawaguchi
1f4325e7db Merge pull request #329 from stephenc/patch-1
Correct algebra in #327
2017-01-16 18:31:33 -08:00
Stephen Connolly
f2e7b40425 Correct algebra in #327 2017-01-10 10:15:04 +00:00
Kohsuke Kawaguchi
4ee3086b6d [maven-release-plugin] prepare for next development iteration 2017-01-09 16:50:15 -08:00
Kohsuke Kawaguchi
a3a715c3ba [maven-release-plugin] prepare release github-api-1.84 2017-01-09 16:50:08 -08:00
Kohsuke Kawaguchi
6cad4a3c33 static import for conciseness 2017-01-09 16:43:03 -08:00
Kohsuke Kawaguchi
b9b6f4fd44 INFO level logging is harmful as it's reported to stdout by default 2017-01-09 16:42:03 -08:00
Kohsuke Kawaguchi
17d1994a53 [maven-release-plugin] prepare for next development iteration 2017-01-09 16:38:02 -08:00
Kohsuke Kawaguchi
13184e72e1 [maven-release-plugin] prepare release github-api-1.83 2017-01-09 16:37:56 -08:00
Kohsuke Kawaguchi
911e8d21a7 Made the test case runnable, at least for me 2017-01-09 16:26:58 -08:00
Kohsuke Kawaguchi
5b69a2925f Merge pull request #324 2017-01-09 16:18:48 -08:00
Kohsuke Kawaguchi
d1c900a620 Marking the fact that these APIs are still in preview and subject to change 2017-01-09 16:18:40 -08:00
Kohsuke Kawaguchi
6bfeb54f3c Just exposing permission type enum until there's more to this relation than one property 2017-01-09 16:14:30 -08:00
Kohsuke Kawaguchi
198fede915 Merge pull request #325 2017-01-09 16:06:14 -08:00
Kohsuke Kawaguchi
1212ae3eb3 Touch up for uniformity
- Prefer typed 'URL' over 'String' that is URL
- Mark API as @Preview to communicate that this is subject to change

More branch protection stuff needs to be added. See https://developer.github.com/v3/repos/branches/
2017-01-09 16:06:05 -08:00
Kohsuke Kawaguchi
1266dcc0c7 Merge pull request #327 from stephenc/expose-rate-limit-headers
Expose Rate Limit Headers
2017-01-10 08:57:07 +09:00
Stephen Connolly
6fcddf4a47 Some usage patterns require more pro-active rate limit queries 2017-01-05 10:25:40 +00:00
Stephen Connolly
dfea424b94 Expose the API url used by the GitHub 2017-01-05 09:36:58 +00:00
Stephen Connolly
9d03435aa1 Expose Rate Limit Headers
Exposes the rate limit header responses so that consumers of the API can proactively tune their usage
2017-01-05 09:21:32 +00:00
Jeffrey.Nelson
26c20a7a22 add branch protection attributes 2016-12-22 11:55:01 -06:00
Kohsuke Kawaguchi
470da06ecf Cleaning up javadoc warnings 2016-12-17 08:17:20 -08:00
Kohsuke Kawaguchi
a746a310bc [maven-release-plugin] prepare for next development iteration 2016-12-17 07:50:55 -08:00
Kohsuke Kawaguchi
3dbb516084 [maven-release-plugin] prepare release github-api-1.82 2016-12-17 07:50:48 -08:00
Kohsuke Kawaguchi
32177283b3 Fixed issue #317
There's no need for the library to replicate a logic when GitHub does
that (and does that correctly.)

Looking at the commit history, I couldn't see why this was added in the
first place.
2016-12-17 07:30:14 -08:00
Kohsuke Kawaguchi
3a66e90b7a Fixed issue #319
getApiUrl() is unreliable given that we collapse issue & PR into one
object.
2016-12-17 07:28:28 -08:00
Kohsuke Kawaguchi
a454fb10ec Tree traversal from commit & its associated tests 2016-12-17 07:21:31 -08:00
Kohsuke Kawaguchi
b5386a35ee Defining better traversal methods for apps that walk trees 2016-12-17 07:09:29 -08:00
Kohsuke Kawaguchi
11651da411 not always a blob, for example it could be a tree. 2016-12-17 07:04:31 -08:00
Kohsuke Kawaguchi
88d52c44ad Recording parent GHRepository 2016-12-17 07:03:40 -08:00
Kohsuke Kawaguchi
2d7d4bbd4e Merge pull request #320 with some additional changes 2016-12-17 06:56:41 -08:00
Kohsuke Kawaguchi
e6ee278fde Another version that directly reads BLOB without going through an intermediate object. 2016-12-17 06:55:44 -08:00
Kohsuke Kawaguchi
6380cf9ed0 Added a method to retrieve the actual bytes of BLOB
... which is probably more useful than the getContent() method
2016-12-17 06:47:24 -08:00
Kohsuke Kawaguchi
2e78dc52c7 Merge pull request #323 from jglick/bad-json
Fix syntactically malformed test JSON
2016-12-17 06:24:43 -08:00
Jesse Glick
ccb42d3249 [JENKINS-36240] Added GHRepository.getPermission(String). 2016-12-16 18:02:28 -05:00
Jesse Glick
c5009ab44b Fix syntactically malformed test JSON. 2016-12-16 15:04:10 -05:00
Jeff Nelson
9d15cd43a3 Merge pull request #1 from kohsuke/master
catchup
2016-12-14 12:12:57 -06:00
Kanstantsin Shautsou
0780e10fa2 Added ghRepo.getBlob(String) method
Signed-off-by: Kanstantsin Shautsou <kanstantsin.sha@gmail.com>
2016-12-13 15:28:08 +03:00
Kohsuke Kawaguchi
0731f63237 Added order parameter 2016-11-26 14:45:03 -08:00
Kohsuke Kawaguchi
a29896042b Merge pull request #315 from davidxia/dxia/patch1
Fix typos in javadocs
2016-11-26 14:38:45 -08:00
David Xia
68ebc08c9d Fix typos in javadocs
Replace "pagenated" with "paginated".
2016-11-26 00:44:52 -05:00
Kohsuke Kawaguchi
a1df526f93 [maven-release-plugin] prepare for next development iteration 2016-11-21 08:53:42 -08:00
Kohsuke Kawaguchi
0023ecefa4 [maven-release-plugin] prepare release github-api-1.81 2016-11-21 08:53:38 -08:00
Kohsuke Kawaguchi
511f156603 Added the membership API for the authenticated user. 2016-11-19 15:26:04 -08:00
Kohsuke Kawaguchi
3f223b1ba0 Support assignees when creating a new issue 2016-11-19 14:50:47 -08:00
Kohsuke Kawaguchi
a1528a1a63 API to add/set/remove assignees from an issue 2016-11-19 14:48:43 -08:00
Kohsuke Kawaguchi
b8bfddbf3a Code simplification 2016-11-19 14:30:35 -08:00
Kohsuke Kawaguchi
47fc813027 Assignees of the repository.
(Personally this concept makes no sense for me, so I don't know what this API really does. I'm just following their API docs)
2016-11-19 14:29:27 -08:00
Kohsuke Kawaguchi
c7f2228a44 [maven-release-plugin] prepare for next development iteration 2016-11-16 22:52:14 -08:00
Kohsuke Kawaguchi
b0e0f045f8 [maven-release-plugin] prepare release github-api-1.80 2016-11-16 22:52:10 -08:00
Kohsuke Kawaguchi
1296514794 this field is not yet used 2016-11-16 22:49:13 -08:00
Kohsuke Kawaguchi
18e797095f rewrote assert with JUnit ones 2016-11-16 22:36:16 -08:00
Kohsuke Kawaguchi
85aa2ad4e6 Added reaction API 2016-11-16 19:10:37 -08:00
Kohsuke Kawaguchi
818f6dc045 Issue #309: Added user listing 2016-11-16 18:26:49 -08:00
Kohsuke Kawaguchi
1c162c6390 Merge pull request #304 2016-11-16 18:19:26 -08:00
Kohsuke Kawaguchi
def3a28fb5 Restoring backward compatibility of names 2016-11-16 18:18:45 -08:00
Kohsuke Kawaguchi
d1378a0236 Merge pull request #306 from stephenc/offline-support
Add offline support to the API to make parsing events easier
2016-11-16 18:12:39 -08:00
Stephen Connolly
e544c7a65a Fix the push event payload 2016-11-14 12:52:22 +00:00
Kanstantsin Shautsou
24f48f668c Add portion of auth/application API. (#307)
* Add portion of auth/application API.

Signed-off-by: Kanstantsin Shautsou <kanstantsin.sha@gmail.com>

* fixup
2016-11-11 15:56:03 +01:00
Stephen Connolly
9988a090ac Add some more tests 2016-11-11 14:27:09 +00:00
Stephen Connolly
d36e145d06 Need to be able to tell if this is a creation / deletion of a ref for multibranch projects 2016-11-11 14:18:47 +00:00
Stephen Connolly
498d63ea00 Typos spotted by Jesse 2016-11-08 15:48:39 +00:00
Stephen Connolly
7dc620a3ba More details emerge on the PingEvent payload 2016-11-08 15:29:27 +00:00
Stephen Connolly
66145e1d23 Seems there is an undocumented but important PING event used by github-plugin 2016-11-08 15:26:33 +00:00
Stephen Connolly
7bf8621afe Need the pusher details for github-plugin 2016-11-08 15:14:42 +00:00
Stephen Connolly
ce3f74232e Ensure a use case required by github-plugin is valid 2016-11-08 15:11:35 +00:00
Stephen Connolly
5b92d4b88c Fix findbugs false alarms 2016-11-08 15:04:02 +00:00
Stephen Connolly
4daf6ba057 Add offline support to the API to make parsing events easier
- When we receive events from a webhook, it is non-trivial to determine which GitHub instance the event came from
  or for that matter even if the event actually came from GitHub or GitHub Enterprise.
- In order to ensure that the logic for parsing events does not get replicated in clients, we need to be
  able to call GitHub.parseEventPayload(Reader,Class) without knowing which GitHub the event originates from
  and without the resulting objects triggering API calls back to a GitHub
- Thus we add GitHub.offline() to provide an off-line connection
- Thus we modify some of the object classes to return best-effort objects when off-line
- Add support for more of the event types into GHEventPayload
- Add tests of the event payload and accessing critical fields when using GitHub.offline()
2016-11-08 12:56:52 +00:00
Jason Song
955e9899af Fix fields of GHRepository 2016-11-04 00:09:59 +08:00
Kohsuke Kawaguchi
fa3d0887ef [maven-release-plugin] prepare for next development iteration 2016-10-24 19:23:18 -07:00
Kohsuke Kawaguchi
5d5c6cf71c [maven-release-plugin] prepare release github-api-1.79 2016-10-24 19:23:14 -07:00
Kohsuke Kawaguchi
89aac45f41 Merge pull request #299 2016-10-24 19:15:46 -07:00
Kohsuke Kawaguchi
4965fd5f4c Noting possible TODO for the future 2016-10-24 19:15:38 -07:00
Kohsuke Kawaguchi
87fbb8ec98 Copy/paste error 2016-10-24 19:07:32 -07:00
Kohsuke Kawaguchi
0d92d4ba61 [maven-release-plugin] prepare for next development iteration 2016-10-24 14:10:35 -07:00
Kohsuke Kawaguchi
b0df93bbcb [maven-release-plugin] prepare release github-api-1.78 2016-10-24 14:10:30 -07:00
Kohsuke Kawaguchi
290d0b226a Merge pull request #295 from jglick/pageSize
Use maximum permitted page size
2016-10-24 14:04:05 -07:00
Kohsuke Kawaguchi
8b3469610c Merge pull request #300 from stephenc/commit-dates
Expose the commit dates
2016-10-24 14:03:14 -07:00
Stephen Connolly
50b47fb73b Expose the commit dates 2016-10-24 21:12:56 +01:00
Ben Sheats
5334cb8688 url encode hashes in ref names 2016-10-21 11:40:01 -04:00
Jesse Glick
38983df42d If we are a returning a collection of all things, we might as well use the maximum page size to minimize HTTP requests. 2016-09-19 09:48:23 -07:00
Kohsuke Kawaguchi
df963cb71c [maven-release-plugin] prepare for next development iteration 2016-08-05 21:32:15 -07:00
Kohsuke Kawaguchi
e9368fb04e [maven-release-plugin] prepare release github-api-1.77 2016-08-05 21:32:10 -07:00
Kohsuke Kawaguchi
e2a1630cf4 findbug taming 2016-08-05 21:28:54 -07:00
Kohsuke Kawaguchi
4f15b7c9fa NPE fix. type can be null 2016-08-05 21:19:32 -07:00
Kohsuke Kawaguchi
63f500ad7f Fixed issue #286
List commit API (https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository) already populates short info, and so populate() call could be excessive.

 It's possible that the short info is always available and therefore there's never a need to call populate(), but that assumption is hard to test, so I'm leaving that in
2016-08-05 21:11:00 -07:00
Kohsuke Kawaguchi
a9fb4546e1 Constants for preview media types 2016-08-05 20:56:11 -07:00
Kohsuke Kawaguchi
cabbbf7f02 Handle 404 that represents "no license" 2016-08-05 20:50:39 -07:00
Kohsuke Kawaguchi
59324b0082 Add preview media type header explicitly 2016-08-05 20:47:08 -07:00
Kohsuke Kawaguchi
6a356c82a5 Fixed up tests 2016-08-05 20:44:45 -07:00
Kohsuke Kawaguchi
70f0f5714a While a use of custom HttpConnector is clever, it doesn't fit the current idiom of this library. 2016-08-05 20:44:10 -07:00
Kohsuke Kawaguchi
07b527a0f2 Enumeration in GitHub should be PagedIterable 2016-08-05 20:40:34 -07:00
Kohsuke Kawaguchi
80aa75aab1 Added the wrap() method for a backpointer 2016-08-05 20:40:23 -07:00
Kohsuke Kawaguchi
0cf4211aa5 Merged GHLicense & GHLicenseBase
Elsewhere in this library, whenever there are multiple forms of the same
object, we map that to the same class and use lazy data retrieval to
fill missing fields.
2016-08-05 20:36:46 -07:00
Kohsuke Kawaguchi
1de02a5099 Added a marker for preview APIs 2016-08-05 20:19:36 -07:00
Duncan Dickinson
bb1cecb95b PR-284: license API support
Had to do git-diff | git-apply to avoid whitespe changes to GHRepository
2016-08-05 20:11:33 -07:00
Kohsuke Kawaguchi
d82397a173 doc fix 2016-08-05 20:00:05 -07:00
Kohsuke Kawaguchi
856cf5e568 Better type safety by splitting RateLimitHandler and AbuseLimitHandler
While the signature is the same, headers that they expect are different,
so any non-trivial logic cannot be reused.
2016-08-05 19:58:04 -07:00
Matt Mitchell
9f5a6ee549 Implement an abuse handler
If too many requests are made within X amount of time (not the traditional hourly rate limit), github may begin returning 403.  Then we should wait for a bit to attempt to access the API again.  In this case, we parse out the Retry-After field returned and sleep until that (it's usually 60 seconds)
2016-07-22 13:16:12 -07:00
Matt Mitchell
9f3f644b83 Add some level of synchronization to the root of the API
This adds some synchronization to the maps at the root of the API to avoid duplicated calls to the actual GH REST API.  Specifically this is targeted around the two maps, orgs and users.  This fix makes the GHPRB jenkins plugin behave much better when there are lots of projects that could build for a specific repo (even if only a few are actually triggered)

There are also a few fixes around GHUser and GHPullRequest
* GHPullRequest was checking a field that may be null (merged_by) when determining whether to fetch details.  An unmerged PR would make a bunch of Github API calls for each property accessed.
* Where GHUser was returned in various objects, we weren't going through the caching mechanism at the root, so calls to APIs on GHUSer often resulted in new REST calls.  Instead, return from the cache wherever possible.
2016-06-08 10:43:40 -07:00
Kohsuke Kawaguchi
a2f0837d14 Issue #279: added another overload that takes permission 2016-06-03 20:56:17 -07:00
Kohsuke Kawaguchi
c7f6889534 Issue #258: updated OkHttp that handles Cache control headers better 2016-06-03 20:31:12 -07:00
Kohsuke Kawaguchi
0415326d09 Issue #261: handle 204 no content correctly 2016-06-03 20:27:29 -07:00
Kohsuke Kawaguchi
16a0f8ece0 [maven-release-plugin] prepare for next development iteration 2016-06-03 00:19:15 -07:00
Kohsuke Kawaguchi
5d1ef296b3 [maven-release-plugin] prepare release github-api-1.76 2016-06-03 00:19:09 -07:00
Kohsuke Kawaguchi
16dbcde90b Shut up FindBugs! 2016-06-03 00:16:20 -07:00
Kohsuke Kawaguchi
50cbf25c72 Shut up FindBugs 2016-06-03 00:09:25 -07:00
Kohsuke Kawaguchi
7b87de2b4c Giving it a bit of delay in the hope that it removes flakiness of tests 2016-06-03 00:04:36 -07:00
Kohsuke Kawaguchi
1ce54a7925 Bug fix in toString() 2016-06-02 23:55:55 -07:00
Kohsuke Kawaguchi
1bfe7dd99b Issue #264: wait for the repo to finish forking 2016-06-02 23:50:18 -07:00
Kohsuke Kawaguchi
27e855ddbd Issue 262: added support for branch protection API 2016-06-02 23:40:37 -07:00
Kohsuke Kawaguchi
3d1bed0f8f In JDK I'm using (Java8), I get a delegating HttpURLConnection that breaks the hack to set the method.
This change makes this hack even worse, but this is the only way I can think of, since I cannot update HttpURLConnection.methods that is static final.
2016-06-02 23:40:14 -07:00
Kohsuke Kawaguchi
5c9ea9b63a Added a fluent version 2016-06-02 23:27:52 -07:00
Kohsuke Kawaguchi
7c034f5670 Doc improvement 2016-06-02 22:43:58 -07:00
Kohsuke Kawaguchi
3b9f5a417a Formatting changes 2016-06-02 22:43:06 -07:00
Kohsuke Kawaguchi
cde501af8d More meaningful toString() method
Produce toString without dilligently adding it to every single class.
Rely on heuristics to cut down the number of fields to show.
2016-06-02 22:38:38 -07:00
Kohsuke Kawaguchi
3c5592c1c8 Following the convention with GHMyself.getEmails2()
This way the method is more discoverable with IDE auto-completion
2016-06-02 22:05:24 -07:00
Kohsuke Kawaguchi
2508e022bb Merge pull request #272 from noctarius/master
Added support for the extended stargazers API in Github V3 API
2016-06-03 14:04:24 +09:00
Kohsuke Kawaguchi
01fcbc24e8 Merge pull request #282 from apemberton/org-fix
related to JENKINS-34834. updating test for similar condition
2016-06-03 13:52:26 +09:00
Kohsuke Kawaguchi
204e639679 Merge pull request #281 from apemberton/master
Add Slug to GHTeam per v3 API: https://developer.github.com/v3/orgs/t…
2016-06-03 13:51:47 +09:00
Kohsuke Kawaguchi
3d301ec730 Merge pull request #278 from jglick/javadoc
Fixed broken link
2016-06-03 13:50:37 +09:00
Kohsuke Kawaguchi
9ab6d57019 Merge pull request #277 from rhels/patch-1
Updated Date was wrong
2016-06-03 13:50:22 +09:00
Kohsuke Kawaguchi
37c473130f Merge pull request #276 from thug-gamer/patch-1
Add support to delete a team
2016-06-03 13:50:11 +09:00
Andy Pemberton
5f95987a48 related to JENKINS-34834. updating test for similar condition 2016-05-14 20:07:04 -04:00
Andy Pemberton
d530b34073 Add Slug to GHTeam per v3 API: https://developer.github.com/v3/orgs/teams/ 2016-05-14 08:58:42 -04:00
Jesse Glick
35dec7a5ec Fixed broken link. 2016-05-03 18:19:57 -04:00
Konda Reddy
baedad8124 Updated Date was wrong 2016-04-30 13:20:44 -05:00
thug-gamer
007378c3a6 Add support to delete a team
Add a method to delete a team.
2016-04-29 11:41:14 +02:00
noctarius
beae9fd6ec Added support for the extended stargazers API in Github V3 API 2016-04-14 07:22:17 +02:00
Kohsuke Kawaguchi
b7507076c6 Merge pull request #270 from szpak/issue/269-reopenMilestone
[#269] Add reopen method on GHMilestone
2016-04-13 16:15:39 -07:00
Kohsuke Kawaguchi
6b5ade3ca0 [maven-release-plugin] prepare for next development iteration 2016-04-13 13:08:02 -07:00
Kohsuke Kawaguchi
715192d26c [maven-release-plugin] prepare release github-api-1.75 2016-04-13 13:07:58 -07:00
Marcin Zajaczkowski
ce140460af [#269] Add reopen method on GHMilestone 2016-04-04 17:54:55 +02:00
Kohsuke Kawaguchi
d30b0403ce [maven-release-plugin] prepare for next development iteration 2016-03-18 19:22:37 -07:00
Kohsuke Kawaguchi
255c993548 [maven-release-plugin] prepare release github-api-1.74 2016-03-18 19:22:34 -07:00
Kohsuke Kawaguchi
557ae4165c Not important 2016-03-18 19:19:51 -07:00
Kohsuke Kawaguchi
a31395ed80 Signature fix for Java5 2016-03-18 19:15:52 -07:00
Kohsuke Kawaguchi
397886d289 Excluding a flaky test 2016-03-18 19:08:51 -07:00
Kohsuke Kawaguchi
7307bec2ae Merge pull request #259 from Shredder121/animal-sniffer
Animal sniffer
2016-03-18 18:27:22 -07:00
Ruben Dijkstra
0cd5147e1a Java 5 doesn't have TimeUnit.HOURS
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/TimeUnit.html
2016-03-12 22:01:25 +01:00
Ruben Dijkstra
36d5b092d7 Java 5 doesn't have new String(byte[], Charset)
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html
2016-03-12 21:59:51 +01:00
Ruben Dijkstra
f9014dbab3 Convert to legacy Throwable.initCause() 2016-03-12 21:58:27 +01:00
Ruben Dijkstra
755d5f77ea Java 5 doesn't have Arrays.copyOf()
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html
2016-03-12 21:56:56 +01:00
Ruben Dijkstra
906d9af7b7 Include the animal sniffer plugin
7a78f9f5aa set the compiler level back to 5, but there are no guarantees that we don't accidentally use any features from newer class libraries.
2016-03-12 21:48:50 +01:00
Kohsuke Kawaguchi
14dcb37ee1 Not all caller wants GET 2016-03-11 23:29:58 -08:00
Kohsuke Kawaguchi
c1c2a27358 Doc improvement 2016-03-11 23:21:07 -08:00
Kohsuke Kawaguchi
5ab9657f9c Merge branch 'master' of github.com:kohsuke/github-api 2016-03-11 23:16:37 -08:00
Kohsuke Kawaguchi
7a78f9f5aa No need to require 1.6 2016-03-11 23:16:24 -08:00
Kohsuke Kawaguchi
ac8c65f062 Merge pull request #251
Conflicts:
	src/main/java/org/kohsuke/github/GitHub.java
2016-03-11 23:14:01 -08:00
Kohsuke Kawaguchi
1954a9f3f8 This isn't just about API URL but it also checks the valid credential 2016-03-11 23:12:50 -08:00
Kohsuke Kawaguchi
3b764f9c90 Don't lose the original problem 2016-03-11 23:11:22 -08:00
Kohsuke Kawaguchi
10f55cc549 Checking another header
I think it's better to pick a header that's unique to GitHub.
2016-03-11 23:10:41 -08:00
Kohsuke Kawaguchi
cd8d955646 Documenting what one gets 2016-03-11 23:06:21 -08:00
Kohsuke Kawaguchi
bba07c9080 Merge pull request #253 from cyrille-leclerc/fix-infinite-loop
Fix #252: infinite loop because the "hypertext engine" generates invalid URLs
2016-03-11 22:59:00 -08:00
Kohsuke Kawaguchi
dba84a33b9 Logger should be static 2016-03-11 22:55:58 -08:00
Kohsuke Kawaguchi
ae49166aa2 No such parameter exists on this method 2016-03-11 22:55:44 -08:00
Kohsuke Kawaguchi
e09185fd0e Logger should be static 2016-03-11 22:51:48 -08:00
Cyrille Le Clerc
56379bb3b9 Fix broken log message in GitHub.java and cleanup code as recommended by @jglick 2016-03-07 19:25:42 +01:00
Cyrille Le Clerc
027e4b4f25 Better error message: introduce HttpException, subclass of IOException with url, http responseCode and http responseMessage to help exception handling. 2016-03-06 18:34:27 +01:00
Cyrille Le Clerc
ba951cb6e3 Fix #252: infinite loop because the "hypertext engine" may duplicate '?' generating invalid "https://api.github.com/notifications?all=true&page=2?all=true" instead of "https://api.github.com/notifications?all=true&page=2&all=true". A better fix will be to prevent duplication of parameters ("all=true" in this case). 2016-03-06 18:27:05 +01:00
Manuel Recena
ae85cf4b6c Improve checkApiUrlValidity() method to support the private mode in GitHub Enterprise servers 2016-03-05 17:42:25 +01:00
Kohsuke Kawaguchi
dbc79f8c42 Fixing issue raised in https://github.com/kohsuke/github-api/pull/247
From Shredder121,
--------------------
Only the HttpURLConnection.method was set by that change. Not the
Requester.method.

This means that Requester.method is still set to POST, isMethodWithBody
will return true, and uc.setDoOutput(true) will be called.

I use Okhttp, and their HttpURLConnectionImpl's method changes to POST
if you tell it to open a stream to write to.
2016-03-01 19:46:50 -08:00
Kohsuke Kawaguchi
54c3070607 [maven-release-plugin] prepare for next development iteration 2016-02-29 21:03:34 -08:00
Kohsuke Kawaguchi
013eaa30b6 [maven-release-plugin] prepare release github-api-1.73 2016-02-29 21:03:31 -08:00
Kohsuke Kawaguchi
751043bf81 change in the markup generated 2016-02-29 21:01:18 -08:00
Kohsuke Kawaguchi
14f7198a07 Handle "all" webhook correctly
This fixes #250
2016-02-29 20:56:47 -08:00
Kohsuke Kawaguchi
94af819ae5 Merge pull request #249 from zapelin/master
Added getHtmlUrl() to GHCommit
2016-02-29 20:48:19 -08:00
Kohsuke Kawaguchi
dbcc9afbc7 Merge pull request #248 from daniel-beck/populate-commit
Populate commit with data for getCommitShortInfo
2016-02-29 20:47:52 -08:00
Kohsuke Kawaguchi
8556033ae6 Merge pull request #245 from daniel-beck/email-hook-error
Fix error when creating email service hook
2016-02-29 20:45:40 -08:00
Kohsuke Kawaguchi
650493f863 Merge pull request #244 from benbek/patch-1
Minor amendment to the documentation
2016-02-29 19:57:47 -08:00
Kohsuke Kawaguchi
d80ad77871 Use builder pattern to support all the other options 2016-02-29 19:57:16 -08:00
Artem Gubanov
f4b129b9f1 Added getHtmlUrl() to GHCommit 2016-02-25 10:46:17 +02:00
Daniel Beck
c0a05e0650 Populate commit with data for getCommitShortInfo 2016-02-21 01:26:43 +01:00
Daniel Beck
33d95d3e3a Fix error when creating email service hook 2016-01-20 23:30:10 +01:00
benbek
f573f83fb9 Amendment to the documentation
The status reported by GitHub for deleting a file is actually "removed", not "deleted".
2016-01-19 00:05:01 +02:00
Daniel Lovera
e94c36b7e6 clean: remove unused import 2015-12-13 21:05:36 +01:00
Daniel Lovera
c879e9e34d Support for auto_init parameter in organization
The GitHub api auto_init parameter allows to initialize created repository with a readme file.
Add createRepository methods in GHOrganization using auto_init parameter. Already existing createRepository methods use auto_init parameter as false for retro-compatibility.
2015-12-13 21:00:40 +01:00
Daniel Lovera
ac39b564a8 Support for auto_init parameter
The GitHub api auto_init parameter allows to initialize created repository with a readme file.
Add a createRepository method using auto_init parameter. Already existing createRepository method uses auto_init parameter as false for retro-compatibility.
2015-12-13 20:59:49 +01:00
Kohsuke Kawaguchi
d91388aba4 [maven-release-plugin] prepare for next development iteration 2015-12-10 07:00:06 -08:00
Kohsuke Kawaguchi
733d78abdd [maven-release-plugin] prepare release github-api-1.72 2015-12-10 06:59:37 -08:00
Kohsuke Kawaguchi
d5809e375c Simplification via enum handling in 'req.with' 2015-12-10 06:33:49 -08:00
Kohsuke Kawaguchi
2440a676bd Added more comprehensive API to list pull requests
This fixes issue #234
2015-12-10 06:26:04 -08:00
Kohsuke Kawaguchi
03ac6c72e7 Formatting change 2015-12-10 06:01:34 -08:00
Kohsuke Kawaguchi
1bbbcabae0 Making API flow better 2015-12-10 05:56:08 -08:00
Kohsuke Kawaguchi
9149b6b998 GHCommit might be only partially populated.
This fixes issue #230
2015-12-10 05:53:55 -08:00
Kohsuke Kawaguchi
2603b5a402 Added stargazers and stars 2015-12-03 17:55:06 +01:00
Kohsuke Kawaguchi
dbddf5b9eb Implemented pagenation size support. 2015-12-03 17:41:43 +01:00
Kohsuke Kawaguchi
841f77bac2 Naming anonymous iterator.
... in anticipation of the page size support.
2015-12-03 16:33:39 +01:00
Kohsuke Kawaguchi
83ffe75baa Fixed rate handling limit handling
Issue #220. If RateLimitHandler returns normally, it should retry.
2015-12-02 12:03:39 +01:00
Kohsuke Kawaguchi
8cb7094803 Added pagination for following & follower 2015-12-02 08:35:56 +01:00
Kohsuke Kawaguchi
ed8cd0ad19 Added getter for ID
And the actual value has already gone past 'int'

This fixes issue #199
2015-12-01 17:02:53 +01:00
Kohsuke Kawaguchi
90d8e65a3b [maven-release-plugin] prepare for next development iteration 2015-12-01 16:27:29 +01:00
Kohsuke Kawaguchi
b24fcb18af [maven-release-plugin] prepare release github-api-1.71 2015-12-01 16:27:24 +01:00
Kohsuke Kawaguchi
c2f2d0f8af Making FindBugs happy 2015-12-01 16:23:51 +01:00
Kohsuke Kawaguchi
e33bdd7e62 Two teams now.
I assume this is because 'owner' is now a team.
2015-12-01 16:17:03 +01:00
Kohsuke Kawaguchi
402adc3559 Merge pull request #232 2015-12-01 16:05:25 +01:00
Kohsuke Kawaguchi
0f45d03c51 Reworked this change a bit.
- GHApiInfo need not be public because it's not publicly exposed.
- Throwing an exception is better IMO as it allows richer error message,
  including the differentiation between unreachable host name vs wrong
  URL, and reporting the API endpoint URL that was actually tried.
2015-12-01 16:01:01 +01:00
Kohsuke Kawaguchi
0397d7ab53 Fixing a test problem 2015-12-01 15:39:19 +01:00
Kohsuke Kawaguchi
79f86b82e4 Merge pull request #237 2015-12-01 15:18:15 +01:00
Kohsuke Kawaguchi
261a7a34e3 Consolidated timeout handling 2015-12-01 15:17:54 +01:00
Kohsuke Kawaguchi
723bb89e10 Merge pull request #219 from if6was9/cross-fork-compare
#218 enable cross fork compare
2015-12-01 15:04:50 +01:00
Oliver Gondža
832e4f3c37 Use default timeouts for URLConnections 2015-12-01 14:58:46 +01:00
Kohsuke Kawaguchi
75a4081549 Follow up to PR #216 2015-12-01 14:57:30 +01:00
Kohsuke Kawaguchi
f9291f9fd1 Merge pull request #216 from if6was9/issue-215-download-failure
#215 fix read() failure with private repos
2015-12-01 14:56:49 +01:00
Kohsuke Kawaguchi
c3b4ee9321 Merge pull request #226 from Shredder121/oauth-credentials
Check builder result to either be a token or a user
2015-12-01 14:54:35 +01:00
Kohsuke Kawaguchi
f86896943d Merge pull request #224 from Shredder121/directory-content-trailing-slash
Remove trailing slash when requesting directory content
2015-12-01 14:53:56 +01:00
Kohsuke Kawaguchi
c33f05e8ca Merge pull request #225 from Shredder121/findbugs-changes
Overzealous FindBugs changes.
2015-12-01 14:51:53 +01:00
Oleg Nenashev
52727ded03 Merge pull request #233 from vparfonov/master
Add information about mirror url if it exist.
2015-11-30 18:18:44 +03:00
Manuel Recena
f7d132758e Merge pull request #231 from recena/MergeCommitSha
Support for merge_commit_sha
2015-11-25 23:22:10 +01:00
Manuel Recena
bb17ca9a53 Merge pull request #236 from recena/findbugs
Findbugs plugin has been upgraded
2015-11-25 23:06:57 +01:00
Manuel Recena
aab21c5b17 findbugs plugin has been upgraded 2015-11-23 10:29:04 +01:00
Manuel Recena
acbafee02a Removed unrelated changes. @KostyaSha's suggestion 2015-11-23 10:25:41 +01:00
Manuel Recena
c6d2b1a222 @deprecated annotations were removed 2015-11-23 09:33:32 +01:00
Vitaly Parfonov
b037f75fb0 Add information about mirror url if it exist. Like https://github.com/apache/tomee 2015-11-19 12:09:34 +02:00
Ruben Dijkstra
a1e79d3050 Add unit test to cover the truncation of ?ref 2015-11-16 18:33:51 +01:00
Manuel Recena
354969d5fa Javadoc comment reviewed 2015-11-16 11:16:58 +01:00
Manuel Recena
a371892409 Added a new method to validate the GitHub API URL 2015-11-15 16:36:27 +01:00
Manuel Recena
b0789a7ce7 Set merge_commit_sha as deprecated 2015-11-15 11:50:13 +01:00
Manuel Recena
08be8eb4f8 Added a new test testMergeCommitSHA() 2015-11-15 11:46:18 +01:00
Manuel Recena
bafddf4baf Initial source code modifications 2015-11-14 12:11:24 +01:00
Ruben Dijkstra
75b9184a00 Check builder result to either be a token or a user
Currently, a `user` property is always required (it not having content is also fine).

This adds support for only having the `oauth` key in the property file/environment.
2015-10-09 17:20:11 +02:00
Ruben Dijkstra
5dc83cf2bf Overzealous FindBugs changes.
Charsets that are standard on the JRE are try-lookuped,
bridge methods were removed and a stream that would be closed later is closed explicitly
2015-10-08 19:31:55 +02:00
Ruben Dijkstra
092e9062c8 Remove trailing slash when requesting directory content 2015-10-06 18:23:51 +02:00
Rob Schoening
512c921a81 enable cross fork compare 2015-09-27 07:50:11 -07:00
Kohsuke Kawaguchi
defcd6fe26 Merge pull request #217 from dblevins/closed_at
Support Milestone closed_at date
2015-09-17 19:23:00 -07:00
dblevins
025b6cbfb7 Support Milestone closed_at date 2015-09-14 10:53:07 -07:00
Rob Schoening
b0687dbeb5 Fix compilation errror: The constructor ArrayList<GHHook>(List<capture#1-of ? extends GHHook[]>) is undefined 2015-09-06 08:45:42 -07:00
Rob Schoening
e0b109cba6 fix read() failure with private repos
reorder buildRequest()
2015-09-06 08:28:20 -07:00
Kohsuke Kawaguchi
adaa8ece89 [maven-release-plugin] prepare for next development iteration 2015-08-15 07:19:25 -07:00
Kohsuke Kawaguchi
6516b20e16 [maven-release-plugin] prepare release github-api-1.70 2015-08-15 07:19:22 -07:00
Kohsuke Kawaguchi
839cb03690 Overzealous FindBugs changes.
String given without the encoding mandated by a protocol/design/etc should be converted with the platform default encoding. After all it exists for a reason!
2015-08-15 07:17:15 -07:00
Kohsuke Kawaguchi
2bcd99b14f Overzealous findbugs fix.
This method should rely on platform specific encoding
2015-08-14 11:59:55 -07:00
Kohsuke Kawaguchi
e3ebf6e8a1 Merge pull request #212 from umajeric/master
Added option to edit GitHub release once it is created
2015-08-11 09:24:30 +02:00
Uros Majeric
76d28314b0 Added option to edit GitHub release once it is created 2015-08-06 15:40:26 +02:00
Oleg Nenashev
ec450b8fd8 Merge pull request #210 from oleg-nenashev/findbugs-cleanup
Cleanup issues discovered by FindBugs
2015-07-24 15:57:31 +03:00
Oleg Nenashev
79c5b2edd5 FindBugs: Fix over 100 issues and enforce FindBugs 2015-07-20 12:28:41 +03:00
Kohsuke Kawaguchi
2d45ac51ef [maven-release-plugin] prepare for next development iteration 2015-07-17 05:09:28 -07:00
Kohsuke Kawaguchi
505bb8f06d [maven-release-plugin] prepare release github-api-1.69 2015-07-17 05:09:25 -07:00
Kohsuke Kawaguchi
f8408bd29f This method can return null.
I think what's going on is that GitHub takes some non-zero amount of time to compute this value, and our test runs too fast sometimes and try to fetch a PR before its mergeability is computed
2015-07-17 15:06:39 +03:00
Kohsuke Kawaguchi
5f2c84a913 Tests should use test repositories for mutating tests.
Picking up the first random repository you are an owner of and making a change to it is too dangerous.
2015-07-17 14:33:18 +03:00
Kohsuke Kawaguchi
3011c99e3f Merge pull request #208 from oleg-nenashev/master
Fix potential NPE in the code
2015-07-17 14:24:14 +03:00
Oleg Nenashev
ebc97f42ad Fix potential NPE in the code 2015-07-17 14:21:46 +03:00
Kohsuke Kawaguchi
4660c6d363 Merge pull request #192
Changing GHHook to abstract is a binary incompatible change in theory,
but given the way this class is designed it is difficult to imagine
any client code instantiating this class.

So I think it is OK.
2015-07-17 14:06:47 +03:00
Kohsuke Kawaguchi
e239ef50ba Consistent name with other classes 2015-07-17 14:06:35 +03:00
Kohsuke Kawaguchi
8b4312a880 Merge pull request #203 2015-07-17 13:52:35 +03:00
Kohsuke Kawaguchi
90daf8087e Turning this into javadoc so that users can see them in IDE. 2015-07-17 13:52:16 +03:00
Kohsuke Kawaguchi
dd21bcb34c I think this is a better name 2015-07-17 13:51:31 +03:00
Kohsuke Kawaguchi
c4113f1ac7 Merge pull request #182 from henryju/master
Fix invalid URL for pull request comments update/delete
2015-07-17 13:47:43 +03:00
Kohsuke Kawaguchi
efa48acd1d Merge pull request #185 from marc-guenther/master
Fixes #183: added a method listForks() to GHRepository
2015-07-17 13:47:17 +03:00
Kohsuke Kawaguchi
15e4d07a6d Merge pull request #187 from yegorius/master
Recognize previous_file field in GHCommit.File
2015-07-17 13:46:21 +03:00
Kohsuke Kawaguchi
cb2248809c Merge pull request #190 2015-07-17 13:43:01 +03:00
Kohsuke Kawaguchi
eb9551d81b Renamed getMasterBranch to getDefaultBranch
The new set method can be simply renamed without the backward
compatibility version since it's new
2015-07-17 13:42:20 +03:00
Kohsuke Kawaguchi
87d1256a1b Merge pull request #189 from if6was9/fix-post-body-regression
fixed regression that caused POST operations to be sent as GET
2015-07-17 13:39:52 +03:00
Kohsuke Kawaguchi
dd6179cf25 Merge pull request #197 from treeduck/patch-1
added Page Build
2015-07-17 13:35:20 +03:00
Marc Guenther
23c56ff887 remove unused import 2015-07-17 12:30:49 +02:00
Kohsuke Kawaguchi
c4eefa6917 Merge branch 'master' of github.com:kohsuke/github-api 2015-07-17 13:29:40 +03:00
Kohsuke Kawaguchi
202cff58f2 Merge pull request #201 2015-07-17 13:29:22 +03:00
Kohsuke Kawaguchi
025806f0fd Consistent name with other classes 2015-07-17 13:29:07 +03:00
Kohsuke Kawaguchi
b0c54ef0f1 Restored backward compatibility with the former signature 2015-07-17 13:27:20 +03:00
Kohsuke Kawaguchi
4d7681b1a4 Merge pull request #206 from torodev/master
Specified the GET
2015-07-17 13:24:48 +03:00
Kohsuke Kawaguchi
340fb3f624 Merge pull request #207 from oleg-nenashev/findbugs-enable
Enable FindBugs in the repo
2015-07-17 13:13:23 +03:00
Marc Guenther
a83aad22ca renamed Sort enum, some cleanup, better javadoc 2015-07-17 09:33:48 +02:00
Oleg Nenashev
5a418dcce6 Enable FindBugs 2015-07-16 16:56:09 +03:00
torodev
ec5392708f Specified the GET
Previously doesn't specify the HTTP method to perform
2015-07-14 09:47:04 +08:00
Oleg Nenashev
901db92b11 Merge pull request #205 from stephenc/fix-npe
Fix NPE found when resolving issues from search api
2015-07-07 00:22:46 +03:00
Stephen Connolly
01b8b10344 Fix NPE found when resolving issues from search api 2015-07-06 11:07:05 +01:00
Oleg Nenashev
698d642ec8 Merge pull request #204 from lanwen/ping_event
add ping event to GH events enum
2015-07-05 19:57:20 +03:00
MerkushevKirill
90d1047fb2 add ping event to GH events enum 2015-07-05 19:37:56 +03:00
Luca Milanesio
b0d1eac477 GitHub API have changed the semantics of /user/repos API
It seems that since a couple of days (or weeks?) the /user/repos is returning
ALL the repositories that the user has access or collaborates to whilst previously
were only the ones that belong to him.

JavaDoc updated in order to avoid getting unwanted results and introduced as well
the possibility to filter a specific type of repository to be returned:
- All (the GitHub's default)
- Owner (the user's repos)
- Public / Private (public or private repos)
- Member (the user collaborates to)
2015-06-26 13:42:43 +01:00
Julien HENRY
cce02aec3d Add delete and update for GHIssueComment 2015-06-16 09:27:55 +02:00
Julien HENRY
492ff58aa8 Fix invalid URL for pull request comments update/delete 2015-06-16 09:16:49 +02:00
Kohsuke Kawaguchi
dd3e73996b Merge pull request #200 from lanwen/lost_body_write
fix for unused json map when method with body, but body is null
2015-06-15 10:38:14 -07:00
MerkushevKirill
931ed7adac don't ignore args when method without body
in case of GET or DELETE request
2015-06-15 18:14:58 +03:00
MerkushevKirill
861fd55d06 fix for unused json map when method with body, but body is null
fixes regression from b976e0ef4e
2015-06-15 17:57:16 +03:00
Kohsuke Kawaguchi
9a4eee4e7d Merge pull request #198 from lanwen/rate-reset
fix for GH Enterprise which does not have rate limit reset field
2015-06-11 10:53:11 -07:00
MerkushevKirill
ed76cdbddf fix for GH Enterprise which does not have rate limit reset field
Fixes regression from a4c1c8de24
2015-06-11 14:52:50 +03:00
Koji Habu
9d91549803 added Page Build 2015-06-10 15:43:57 -07:00
Marc Guenther
a5425a3c71 improved javadoc for listForks() 2015-05-28 22:18:02 +02:00
Chris Hut
f4b105b10f Enable creation and retrieval of org webhooks
made GHHook abstract and created two concrete subclasses for org
and repo hooks. Created utility class GHHooks to manage creation
and retrieval of org/repo hooks with minimal code duplication. These
are invoked by GHOrganization and GHRepository respectively.
2015-05-15 13:29:18 -07:00
Rob Schoening
e4de09c55b allow default branch to be set 2015-05-09 01:05:04 -07:00
Rob Schoening
d77be9d382 fixed regression that caused POST operations to be sent as GET 2015-05-09 01:01:04 -07:00
yegorius
626909addb recognize previous_file field in GHCommit.File 2015-05-01 17:59:01 +03:00
Marc Guenther
9b750bedef Fixes #183: added a method listForks() to GHRepository
listForks() will list all forks of a repository.
An optional sort argument is also supported.
2015-05-01 14:06:20 +02:00
Kohsuke Kawaguchi
b976e0ef4e Issue #180: don't write body if HTTP method is DELETE. 2015-04-26 10:52:43 -07:00
Kohsuke Kawaguchi
fd434292ad [maven-release-plugin] prepare for next development iteration 2015-04-19 17:40:39 -07:00
Kohsuke Kawaguchi
7b4d3a869b [maven-release-plugin] prepare release github-api-1.68 2015-04-19 17:40:35 -07:00
Kohsuke Kawaguchi
eeebb1b59f Added the 'sha' parameter.
Fixes issue #176
2015-04-19 17:25:13 -07:00
Julien HENRY
63136f64b7 Merge pull request #174
The merge was done manually because the original commit contains lots of
whitespace only changes.
2015-04-19 17:22:04 -07:00
Kohsuke Kawaguchi
1d2fbf2d92 Merge pull request #179 from lskillen/master
Fix NullPointerException on RateLimitHandler when handling API errors.
2015-04-19 17:03:50 -07:00
Kohsuke Kawaguchi
1e52dded14 Added a helper method 2015-04-15 08:33:18 -07:00
Lee Skillen
cfc7005275 Fix NullPointerException on RateLimiter when handling API errors. 2015-04-14 14:45:47 +01:00
Kohsuke Kawaguchi
f23afcd5aa [maven-release-plugin] prepare for next development iteration 2015-04-13 18:30:43 -07:00
Kohsuke Kawaguchi
4e88a0c91b [maven-release-plugin] prepare release github-api-1.67 2015-04-13 18:30:40 -07:00
Kohsuke Kawaguchi
d070f9deb0 TAB -> WS 2015-04-13 18:25:44 -07:00
Kohsuke Kawaguchi
b736e20a74 Added more getHtmlUrl() methods 2015-04-13 18:17:37 -07:00
Kohsuke Kawaguchi
aad20d0a03 Merge pull request #169 from KostyaSha/fixAuthLoop
Throw error for bad creds
2015-04-13 16:55:58 -07:00
Kohsuke Kawaguchi
7ff97348d9 Merge pull request #170 from KostyaSha/coverity
Improvements
2015-04-13 16:55:24 -07:00
Kohsuke Kawaguchi
68dda3a46d Merge pull request #175 2015-04-13 16:47:32 -07:00
Kohsuke Kawaguchi
2cd44f8c33 Added the pair method 2015-04-13 16:47:25 -07:00
Kohsuke Kawaguchi
9775954aff Massaging the PR.
- need to retrieve the object in full to have all the fields properly populated
- documentation fix, as this method points to the root of the forking chain, not just an upstream.
2015-04-13 16:45:38 -07:00
Kohsuke Kawaguchi
1a071b0b54 Returning null instead of throwing an exception (as a matter of taste) 2015-04-13 16:39:20 -07:00
Kohsuke Kawaguchi
8dcea59c74 Fixed javadoc errors 2015-04-13 16:36:14 -07:00
Kohsuke Kawaguchi
f482f77871 Merge pull request #177 from infm/feat/notif
Added getters for the objects notifications refer to
2015-04-13 16:38:22 -07:00
infm
b058c39ee1 Added getters for the objects notifications refer to 2015-04-09 01:21:38 +03:00
Jason Nichols
b926b6c67f Added the source attribute to GHRepository 2015-04-02 14:54:13 -04:00
Kohsuke Kawaguchi
3fb8e5f799 [maven-release-plugin] prepare for next development iteration 2015-03-24 10:26:48 -07:00
Kohsuke Kawaguchi
277ccb5188 [maven-release-plugin] prepare release github-api-1.66 2015-03-24 10:26:44 -07:00
Kanstantsin Shautsou
9ebc9c0867 Use FAIL rate-limit handler for tests
Should avoid possible Thread.sleep() for tests execution.
2015-03-23 21:14:42 +03:00
Kanstantsin Shautsou
f1f96713a4 [CID-107552] Unintended regular expression
regex_expected: The . character(s) in the pattern ".md" can match any character, because calls to replaceAll treat the pattern as a regular expression, which might be unexpected.
2015-03-23 02:35:55 +03:00
Kanstantsin Shautsou
fc3b6d2c2e [CID-107535] Missing call to superclass
Similar to other events
2015-03-23 02:23:44 +03:00
Kanstantsin Shautsou
d0d0716b3b Throw error for bad creds 2015-03-23 02:09:23 +03:00
Kohsuke Kawaguchi
73119afeff [maven-release-plugin] prepare for next development iteration 2015-03-22 15:57:32 -07:00
Kohsuke Kawaguchi
8939179be8 [maven-release-plugin] prepare release github-api-1.65 2015-03-22 15:57:29 -07:00
Kohsuke Kawaguchi
adba2e68db Renamed for consistency with other methods 2015-03-22 15:54:53 -07:00
Kohsuke Kawaguchi
0ef8b471a3 Added subscription related methods 2015-03-22 15:54:10 -07:00
Kohsuke Kawaguchi
205950fc5f Method to mark the thread as read 2015-03-22 15:50:32 -07:00
Kohsuke Kawaguchi
8835b2c745 added a method to mark all the notifications as read 2015-03-22 15:45:36 -07:00
Kohsuke Kawaguchi
74fda40764 Implemented initial notification API support.
Fixes issue #119
2015-03-22 15:40:53 -07:00
Kohsuke Kawaguchi
687a36937e Keep HttpURLConnection() in the field.
The primary motivation was to expose response headers, but this also made the code most concise by reducing the # of parameters that are passed around.
2015-03-22 14:52:34 -07:00
Kohsuke Kawaguchi
2c7b8bd6e8 report error stream even for 404 2015-03-22 14:46:38 -07:00
Kohsuke Kawaguchi
e9417f5fa1 Described how to set up persistent disk cache
This is good enough "fix" for issue #168.
2015-03-22 12:13:30 -07:00
Kohsuke Kawaguchi
5e08b34c43 added code search 2015-03-22 12:08:53 -07:00
Kohsuke Kawaguchi
7b436ffb3b support on-demand data population for the use in code search API. 2015-03-22 12:02:08 -07:00
Kohsuke Kawaguchi
1ee2ec3728 Added repository search 2015-03-22 11:48:56 -07:00
Kohsuke Kawaguchi
ed28768146 implemented user search 2015-03-22 11:41:25 -07:00
Kohsuke Kawaguchi
f931835176 refactored to introduce other search builders 2015-03-22 11:32:48 -07:00
Kohsuke Kawaguchi
0cf9bc2814 [maven-release-plugin] prepare for next development iteration 2015-03-22 11:16:03 -07:00
Kohsuke Kawaguchi
8b428f2c93 whitespace only changes for consistent indentation 2015-03-22 11:14:19 -07:00
Kohsuke Kawaguchi
10238dbcd3 Explaining why this code is the way it is. 2015-03-22 11:13:40 -07:00
Kohsuke Kawaguchi
6229e0928d Revert "Set credentials file according to documentation"
This reverts commit 0bf81f4fb9.

The point of this is to allow me to use a separate account to avoid
corrupting my event stream. GitHub.connect() does the standard handling
for those who are not me.
2015-03-22 11:11:03 -07:00
Kohsuke Kawaguchi
5c7b259fe9 Using the latest 2015-03-22 11:02:17 -07:00
Kohsuke Kawaguchi
cc84c867c0 I think our coverage is pretty good now 2015-03-22 11:01:02 -07:00
Kohsuke Kawaguchi
5bf252e12d Added markdown support
Fixes issue #165
2015-03-22 11:00:57 -07:00
Kohsuke Kawaguchi
75512ff66a Turns out the interning of GHUser wasn't working at all!
Fixes issue #166.
2015-03-22 10:38:57 -07:00
Kohsuke Kawaguchi
6f4832476a test case for #162 2015-03-22 10:21:16 -07:00
Kohsuke Kawaguchi
86b0d27299 added a method to read content.
This also fixes #162.
2015-03-22 10:21:09 -07:00
Kohsuke Kawaguchi
5a8845f7f6 added a method to return the raw unprocessed body 2015-03-22 09:17:49 -07:00
Kohsuke Kawaguchi
709e47f32f Added getDownloadUrl() method 2015-03-22 09:10:34 -07:00
Kohsuke Kawaguchi
77590b4eb3 eliminate the need for path manipulation and consolidate them to 'with' 2015-03-21 16:52:49 -07:00
Kohsuke Kawaguchi
72fc313135 improved error handling 2015-03-21 16:43:11 -07:00
Kohsuke Kawaguchi
39b32cee2e Implemented /repositories
Fixed issue #157
2015-03-21 16:35:34 -07:00
Kohsuke Kawaguchi
bdcee7c052 Merge pull request #160 with some modifications
Strategy pattern is better for API rate limit handling as the current
behavior is quite valid for batch applications.

I'm not taking OkHttp version change so as not to introduce any unneeded
version requirement.
2015-03-17 07:44:36 -07:00
Kohsuke Kawaguchi
4093e53b5b Implemented a strategy pattern to let the client determine API rate limit behavior.
The default is set to the backward compatible behaviour.
2015-03-17 07:43:51 -07:00
Kanstantsin Shautsou
a4c1c8de24 Provide reset date info for rate limit 2015-03-17 07:31:05 -07:00
Kohsuke Kawaguchi
7ed234c875 Standardize environment variable names
... that are more like typical environment variables. Reasonably unique and upper case.

Deprecate other methods. The point of a connector method is to make sure all clients of the same library uses the same environments, thereby eliminating the pain of setting credentials per app.

Allowing the app to specify the environment variable names defeat this purpose.
2015-03-15 13:17:57 -07:00
Kohsuke Kawaguchi
0359160ac6 Avoided using JDK6 method 2015-03-15 13:07:21 -07:00
Kohsuke Kawaguchi
2478dad9b5 Simplification 2015-03-15 13:04:50 -07:00
Kohsuke Kawaguchi
690292352b Simplification
But this method is insane!
2015-03-15 13:02:28 -07:00
Kohsuke Kawaguchi
271d18cddc simplification 2015-03-15 13:01:35 -07:00
Kohsuke Kawaguchi
e1465639e7 Merge pull request #156 from ashwanthkumar/endpoint-from-properties
Picking endpoint from the properties file and environment variables
2015-03-15 19:55:32 +00:00
Kohsuke Kawaguchi
ce7ca59339 Merge pull request #155 2015-03-15 12:49:30 -07:00
Kohsuke Kawaguchi
76610b25d7 Promoted GHTreeEntry to the top-level 2015-03-15 12:49:14 -07:00
Kohsuke Kawaguchi
dfce0bda7c prefer list over raw array 2015-03-15 12:48:27 -07:00
Ashwanth Kumar
41c0dd9727 Fixing the indentation for enpointVariableName 2015-03-13 21:26:49 +05:30
Ashwanth Kumar
232c0389d3 Adding fromEnvironment to maintain backword compatibility 2015-03-13 21:26:19 +05:30
Oleg Nenashev
d95c8a4ab0 Merge pull request #161 from khoa-nd/master
Add method to get the list of languages using in repository
2015-03-13 17:58:01 +03:00
khoa-nd
374fdb37e1 Change type of language bytes from Integer to Long 2015-03-06 09:11:03 +07:00
khoa-nd
f78530636e Add method to get the list of languages using in repository 2015-03-05 15:53:02 +07:00
Kanstantsin Shautsou
0bf81f4fb9 Set credentials file according to documentation 2015-03-03 19:23:06 +03:00
Kohsuke Kawaguchi
dcc3b7f36b [maven-release-plugin] prepare for next development iteration 2015-03-02 09:10:52 -08:00
Kohsuke Kawaguchi
d6722266f5 [maven-release-plugin] prepare release github-api-1.63 2015-03-02 09:10:49 -08:00
Kohsuke Kawaguchi
11566891dc Restored backward compatibility
The signature of the method can change for the future, but it still has
to return Label instances for older binaries
2015-03-02 08:33:00 -08:00
Kohsuke Kawaguchi
9aaf69cc9a Added maling list 2015-03-02 08:14:15 -08:00
Ashwanth Kumar
a716a59489 Picking endpoint from the properties file and environment variables
Helps seemless switching between public github and enterprise without any code changes
2015-02-22 09:41:58 +05:30
Daniel
bad0d1bbcf implementing github trees as described https://developer.github.com/v3/git/trees/#get-a-tree-recursively 2015-02-18 14:58:27 +01:00
Kohsuke Kawaguchi
aa43e265b7 [maven-release-plugin] prepare for next development iteration 2015-02-15 09:12:26 -08:00
Kohsuke Kawaguchi
67280951ff [maven-release-plugin] prepare release github-api-1.62 2015-02-15 09:12:23 -08:00
Kohsuke Kawaguchi
c3a9f6f9f5 Fixed NPE.
issue #152
2015-02-15 09:06:04 -08:00
Kohsuke Kawaguchi
e631e46dd1 Exposed this method.
I'm generally against having these inter-object short cut methods
(in this case it's getOwner().getName() but oh well.)

Fixes issue #149
2015-02-15 08:57:36 -08:00
Kohsuke Kawaguchi
15163ffde0 Avoid multiple concurrent population 2015-02-15 08:56:57 -08:00
Kohsuke Kawaguchi
b898284821 Mentions thread-safety and state the goal.
Most of the objects are effectively immutable, so this should be an easy goal

Fixes issue #148.
2015-02-15 08:56:29 -08:00
Kohsuke Kawaguchi
3bb7eb2e03 Added API to list contributors 2015-02-15 08:50:55 -08:00
Kohsuke Kawaguchi
11fcb9d456 Report the repository the push happened to
Fixes issue #144.
2015-02-15 08:42:32 -08:00
Kohsuke Kawaguchi
29f826448a Added a convenience method.
See: issue #134
2015-02-15 08:35:31 -08:00
Kohsuke Kawaguchi
a8cf4a7120 Added watch API support.
Fixes issue #130
2015-02-15 08:31:57 -08:00
Kohsuke Kawaguchi
60dce94a47 renamed to created RepositoryTest 2015-02-15 08:25:49 -08:00
Kohsuke Kawaguchi
c965b9cc24 follow up fix to the GHRepository.getApiTailUrl() change 2015-02-15 08:20:28 -08:00
Kohsuke Kawaguchi
762a32eb6d Added repository watch listing 2015-02-15 07:45:11 -08:00
Kohsuke Kawaguchi
541dac1aee Use getApiTailUrl for consistency 2015-02-15 07:35:02 -08:00
Kohsuke Kawaguchi
e2e2329301 Noting issue #60 that this method can return null 2015-02-15 07:16:18 -08:00
Kohsuke Kawaguchi
9afad71b0f Newly created user object resets root to null.
Fixes issue #111.
Test case from KostyaSha
2015-02-15 07:13:33 -08:00
Kohsuke Kawaguchi
7bbe0f7e8a Allow the client to explicitly control proxy
Fixes issue #109.
2015-02-15 07:02:50 -08:00
Kohsuke Kawaguchi
d90adfa98e Implemented label CRUD operations on GHRepository
Fixes issue #105
2015-02-15 06:55:35 -08:00
Kohsuke Kawaguchi
1dbcc4b776 Fixed the getReadme() method.
It was calling the wrong endpoint.
Fixed issue #99.
2015-02-15 06:31:22 -08:00
Kohsuke Kawaguchi
18696fca2d [maven-release-plugin] prepare for next development iteration 2015-02-14 10:28:55 -08:00
Kohsuke Kawaguchi
c40100b6da [maven-release-plugin] prepare release github-api-1.61 2015-02-14 10:28:51 -08:00
Kohsuke Kawaguchi
6396818740 MRELEASE-812 botched 1.60 2015-02-14 10:27:13 -08:00
Kohsuke Kawaguchi
6df5a0d47b Added a test 2015-02-14 10:13:25 -08:00
Kohsuke Kawaguchi
15c18c5547 Improved the search API 2015-02-14 10:08:46 -08:00
Kohsuke Kawaguchi
4b6981c2e7 Added issue-search capability 2015-02-14 09:53:29 -08:00
Kohsuke Kawaguchi
1b4025300c Merge remote-tracking branch 'origin/master' 2015-02-14 09:32:53 -08:00
Kohsuke Kawaguchi
983c871bff More compilation error fix 2015-02-14 09:30:50 -08:00
Kohsuke Kawaguchi
609f532f8c Merge pull request #143 2015-02-14 08:29:09 -08:00
Kohsuke Kawaguchi
c6fc03c73a In this library domain objects should be immutable. 2015-02-14 08:28:55 -08:00
Kohsuke Kawaguchi
b6e48cc4f9 Use GHObject as much as we can 2015-02-14 08:27:20 -08:00
Kohsuke Kawaguchi
50f43cc178 Inserted backward compatibility methods 2015-02-14 08:26:49 -08:00
Kohsuke Kawaguchi
f421067a0d Looks like Windows line ends have crept in. 2015-02-14 07:01:32 -08:00
Kohsuke Kawaguchi
edd9a2d5b6 Using newly added GHObject in more places. 2015-02-14 06:59:46 -08:00
Kohsuke Kawaguchi
41e0329f55 doc improvement 2015-02-14 06:52:48 -08:00
Kohsuke Kawaguchi
21ea916e0d Pull request #143 introduced wrong file permissions 2015-02-14 06:48:56 -08:00
Kohsuke Kawaguchi
3b6ca3020e Pull request #143 introduced wrong file permissions 2015-02-14 06:47:52 -08:00
Kohsuke Kawaguchi
3737845b78 Merge pull request #143 2015-02-14 06:47:26 -08:00
Kohsuke Kawaguchi
a30c78cd12 restored backward compatibility in the public API 2015-02-14 06:46:27 -08:00
Kohsuke Kawaguchi
f8fba41a30 Merge pull request #141 from alvaro1728/master
Trivial change to enable creating/updating binary content (files).
2015-02-14 09:42:55 -05:00
Kohsuke Kawaguchi
052902fb49 Merge pull request #146 2015-02-14 06:41:06 -08:00
Surya Gaddipati
58143c26bc Use GHCommitState for deployment status state 2015-01-12 10:04:01 -06:00
Surya Gaddipati
5d83894056 Add method for listing deployments 2015-01-02 16:46:56 -06:00
Rob Schoening
e35667525f fix #145 GHTeam.getMembers() does not page properly 2014-12-28 15:47:57 -08:00
Surya Gaddipati
2f318152d8 Complete api implementation for setting/retriving deployment status on a deployment 2014-12-20 17:09:59 -06:00
Surya Gaddipati
bc518a9ae8 Complete implementation of create deployment api 2014-12-20 11:52:49 -06:00
Kohsuke Kawaguchi
425ae2d536 Merge pull request #142 from suryagaddipati/master
Add code for creating deployments for a repo
2014-12-19 11:45:15 -08:00
Kohsuke Kawaguchi
a6cacd4aba Merge pull request #137 from simonecarriero/master
added 'diverged' constant to GHCompare.Status enum
2014-12-19 11:44:10 -08:00
Kohsuke Kawaguchi
5a7083537c Merge pull request #136 from rtyley/page-team-repositories
Add paging support for Team's Repositories
2014-12-19 11:43:56 -08:00
Surya Gaddipati
e15f7a59fd Merge pull request #139 from farmdawgnation/mocking-scope
Put mockito in the test scope.
2014-12-19 12:53:15 -06:00
Surya Gaddipati
a2fa526aa0 Add code for creating deployments for a repo 2014-12-19 12:47:00 -06:00
mendeza
7e959d6a87 Added binary content support - without tabs. 2014-12-18 21:15:29 -08:00
mendeza
5121fe1cbf Added binary content support. 2014-12-18 21:03:28 -08:00
Matt Farmer
3c3d4fc151 Put mockito in the test scope. 2014-11-16 15:31:04 -05:00
Simone Carriero
a7f75c9a6c added 'diverged' constant to GHCompare.Status enum 2014-11-06 12:18:16 +01:00
Roberto Tyley
e7262b8fbe Add paging support for Team's Repositories
The team repositories endpoint does do paging, so gotta support that.
2014-11-06 09:40:37 +00:00
Kohsuke Kawaguchi
af3099c526 [maven-release-plugin] prepare for next development iteration 2014-10-08 12:17:53 -07:00
Kohsuke Kawaguchi
2b9d47cea8 [maven-release-plugin] prepare release github-api-1.59 2014-10-08 12:17:49 -07:00
Kohsuke Kawaguchi
5db90d3fc4 This test is invalid if ~/.github file exists, which is quite common 2014-10-08 12:15:32 -07:00
Kohsuke Kawaguchi
372d5ff758 Fixed a test regression
Presumably due to the behaviour change on GitHub API?
2014-10-08 12:07:09 -07:00
Kohsuke Kawaguchi
ebf39eaea1 [INFRA-142]
Reworked version of https://github.com/kohsuke/github-api/pull/133/files
2014-10-08 11:29:17 -07:00
Michael O'Cleirigh
556786f2e1 Merge pull request #131 from mocleiri/resolve-credentials-from-environment
Modify GitHubBuilder to resolve user credentials from the system environ...
2014-09-30 14:07:35 -04:00
Michael O'Cleirigh
0f64994537 Make Github.connect() fail if no credentials are setup
With the previous change if no credentials were defined Github.connect() would
fall back on an anonymous connection.

This commit changes the behaviour back to what it was before so that if there
are no credentials defined in the ~/.github file and no credentials defined
in the environment an IOException is thrown to alert the method caller.

The caller can call Github.connectAnonymously() if that scenario is allowed.

This should handle most cases unless callers are depending on the
FileNotFoundException being specifically thrown instead of an IOException.
2014-09-30 13:58:06 -04:00
Michael O'Cleirigh
ac64c2022b Merge pull request #132 from mocleiri/add-getFiles-method-to-GHCompare
Add GHCompare.getFiles() method to be able to see the precise files chan...
2014-09-30 12:03:54 -04:00
Michael O'Cleirigh
9802132b6f Add GHCompare.getFiles() method to be able to see the precise files changed.
There is a file field inside of GHCompare but no getter to extract the values
for analysis.

There are contents in that field so I've added a new get method so that they
can be extracted.
2014-09-30 11:51:57 -04:00
Michael O'Cleirigh
4d6c5c14f1 Modify GitHubBuilder to resolve user credentials from the system environment
Using the Jenkins EnvInject or Credentials Binding Plugins its possible to
pass credentials as Environment Variables.

Its useful for Github.connect() to be able to directly read the values of the
'login', 'password' and 'oauth' properties directly from the environment.

This commit modifies the base Github.connect() method to resolve credentials
in two steps:

1. ~/.github credentials file if it exists.
2. login, password or oauth variables from the environment

A further fromEnvironment() method is provided to support
loading from non-standard variable names.

The old Github.connect() method would throw an IOException if the ~/.github file
did not exist.  Now it will fail silently instead dropping back to the anonymous
users access level.

Added new unit tests into GitHubTest.
2014-09-29 13:42:28 -04:00
Kohsuke Kawaguchi
d228a5fb93 Merge pull request #128 from ndeloof/patch-1
Update github scopes according to https://developer.github.com/v3/oauth/#scopes
2014-09-26 18:10:15 -07:00
Michael O'Cleirigh
7b46ef10c8 Merge pull request #129 from mocleiri/fix-pull-request-remote-repo-get-commit
Allow pullRequest.getHead().getRepository().getCommit(headSha1) to work
2014-09-26 15:14:25 -04:00
Michael O'Cleirigh
8eb9fba051 Allow pullRequest.getHead().getRepository().getCommit(headSha1) to work
The wrong .wrap method was used for pull requests initialized by state
(GHRepository.getPullReqests).

The wrong wrap call was introduced in 9fd34aec7f

This commit sets it back to the .wrapUp method which makes sure the pull request
substructure has the repo object set properly.

Without this change a NullPointerException is thrown on the last line of this
code because the repo object inside of the remoteRepository object is null:

GHRepository repo = github.getRepository(targetRepository);

List<GHPullRequest> openPullRequests = repo.getPullRequests(GHIssueState.OPEN);

for (GHPullRequest pullRequest : openPullRequests) {

    GHCommitPointer head = pullRequest.getHead();

	GHRepository remoteRepository = head.getRepository();

	String commitId = head.getSha();

	GHCommit headCommit = remoteRepository.getCommit(commitId);
2014-09-22 10:53:13 -04:00
Nicolas De loof
7b58182683 Update github scopes according to https://developer.github.com/v3/oauth/#scopes 2014-09-12 23:16:43 +02:00
Kohsuke Kawaguchi
95fbf9274b Merge pull request #124 from ohtake/connector
Allow to use custom HttpConnector when only OAuth token is given
2014-09-04 10:32:11 -07:00
Kohsuke Kawaguchi
09557dfa0f Merge pull request #123 from rtyley/use-issues-endpoints-for-pull-requests
Use issues endpoints for pull requests
2014-09-04 10:31:25 -07:00
Kohsuke Kawaguchi
4029fcc1ca Merge pull request #122 from tbruyelle/browserDownloadUrl
Add missing field browser_download_url in GHAsset
2014-09-04 10:29:23 -07:00
OHTAKE Tomohiro
d6627b1e34 Use custom HttpConnector when only OAuth token is given 2014-09-04 13:18:35 +09:00
OHTAKE Tomohiro
86d75fd767 Introduce GitHubBuilder for flexible GitHub instance creation 2014-09-04 13:17:43 +09:00
Roberto Tyley
e2220bb3b3 Fix setting labels and assignee on PullRequests
Setting labels and assignee on Pull requests failed silently, because
the API endpoint being hit contained '/pulls/' rather than '/issues/'.

"Every pull request is an issue, but not every issue is a pull request.
For this reason, “shared” actions for both features, like manipulating
assignees, labels and milestones, are provided within the Issues API."

https://developer.github.com/v3/pulls/#labels-assignees-and-milestones
2014-09-03 23:34:58 +01:00
Roberto Tyley
1a9b8bd1da Separate out clean-up of Pull requests created during test
If the test assertion fails, we want the pull-request to be closed anyway.
You can't have more than one pull-request merging a given branch into
another, so leaving the PR hanging will cause subsequent test runs to fail
in setup.
2014-09-03 23:18:22 +01:00
Thomas Bruyelle
9eda2d3f77 Add missing field browser_download_url in GHAsset 2014-09-03 22:01:43 +02:00
Kohsuke Kawaguchi
e6d59df705 [maven-release-plugin] prepare for next development iteration 2014-08-30 14:15:29 -07:00
Kohsuke Kawaguchi
db845850b2 [maven-release-plugin] prepare release github-api-1.58 2014-08-30 14:15:25 -07:00
Kohsuke Kawaguchi
d516597659 See if this will get me release with Maven 3.1 2014-08-30 14:13:45 -07:00
Kohsuke Kawaguchi
3af5a8145a Merge branch 'pull-117' 2014-08-30 14:03:58 -07:00
Kohsuke Kawaguchi
31bebd4a7a Design pattern in this library demands that these methods be on GHRef 2014-08-30 14:03:34 -07:00
Kohsuke Kawaguchi
ccb87258b0 Merge pull request #116 from DavidTanner/patch-1
Remove getPath()
2014-08-30 13:54:05 -07:00
Kohsuke Kawaguchi
2ab71e88bd Merge pull request #115 from bernd/add-missing-event-types
Add missing GitHub event types.
2014-08-30 13:53:23 -07:00
Kohsuke Kawaguchi
78bd7585bb Merge pull request #114 from ndeloof/master
get repository full name (including owner)
2014-08-30 13:53:02 -07:00
Kohsuke Kawaguchi
92cc81d9b8 Merge pull request #107 from msperisen/general-pagination
General pagination
2014-08-30 13:52:35 -07:00
Matt Farmer
97a1c741de Implement support for deleting a ref using the GitHub API. 2014-08-22 23:33:04 -04:00
Matt Farmer
077d693959 Add support for updating a ref using the API. 2014-08-22 23:30:22 -04:00
David Tanner
94831fc10a Remove getPath()
When getting the path and providing an enterprise url for the apiUrl, the /api/v3 portion gets duplicated.  Since they will be combined on line 231 of GitHub.java there is no point just grabbing the path.  See https://github.com/janinko/ghprb/issues/178, and https://issues.jenkins-ci.org/browse/JENKINS-24145?focusedCommentId=208270#comment-208270
2014-08-19 13:22:25 -06:00
Surya Gaddipati
1f298a88b0 [maven-release-plugin] prepare for next development iteration 2014-08-19 13:29:40 -05:00
Surya Gaddipati
7e49946bed [maven-release-plugin] prepare release github-api-1.57 2014-08-19 13:29:37 -05:00
Surya Gaddipati
1e81ab1017 Merge pull request #112 from lucamilanesio/master
Get all orgs/teams/permissions in a single GitHub API call
2014-08-19 12:57:39 -05:00
Bernd Ahlers
311180d12e Add missing DEPLOYMENT, DEPLOYMENT_STATUS, RELEASE and STATUS events. 2014-08-18 16:54:17 +02:00
Nicolas De Loof
0efb206881 get repository full name (including owner) 2014-08-06 04:48:46 +02:00
Luca Milanesio
0b92fa5615 Get all orgs/teams/permissions in a single GitHub API call
Exposes a new API call at GitHub root level to build the complete
set of organisations and teams that current user belongs to.

This change allows to massively reduce the number of calls to GitHub 
especially for people that belongs to multiple organisations with 
lots of teams and members.

Signed-off-by: Luca Milanesio <luca.milanesio@gmail.com>
2014-07-24 23:42:37 +01:00
t865095
a58a5b56b2 Merge branch 'master' of https://github.com/kohsuke/github-api 2014-07-08 14:14:59 +02:00
t865095
b9764c0a44 introduce pagination for all paged api calls and introduce cache invalidation 2014-07-08 13:52:53 +02:00
Kohsuke Kawaguchi
590f7ba511 Merge pull request #106 from lucamilanesio/master
Implement pagination on list of private+public repos of a user.
2014-07-04 19:13:04 -07:00
Luca Milanesio
449909b0e8 Implement pagination on list of private+public repos of a user.
The paginated version of listRepositories() was 
missing at GHMyself: as side-effect of this bug
when requesting a paginated list of repositories
the ones privately owned by a user were not shown.

This was caused by the missing override of the 
listRepositories(final int pageSize) at GHMyself
that caused the GHPerson implementation to invoked.

The GHPerson version uses the /users/:org/repos?per_page=x
URL which *works fine* for organisations but unfortunately
*does not return* private repositories for users.

IMHO GitHub API are quite inconsistent form this 
point of view, but they are documented in this way
so that work (inconsistently) as designed.
2014-07-03 10:05:17 +01:00
Kohsuke Kawaguchi
40780525f8 Bumping up the version in the hope of fixing site plugin problem 2014-07-02 21:39:13 -07:00
Kohsuke Kawaguchi
0e3707d1c3 [maven-release-plugin] prepare for next development iteration 2014-07-02 21:28:38 -07:00
Kohsuke Kawaguchi
8ddbef093b [maven-release-plugin] prepare release github-api-1.56 2014-07-02 21:28:34 -07:00
Kohsuke Kawaguchi
4ccdfccdf0 Oops forgot to commit this change 2014-07-02 21:27:11 -07:00
Kohsuke Kawaguchi
3c8aa0c630 Convention dictates that the method name be "listXyz"
getCollaborators() only fetching the first page is a bug, so we should fix that too.
2014-07-02 21:24:17 -07:00
Kohsuke Kawaguchi
ba519f996a Extracted non-formatting changes from pull request #98
The original commit has too many whitespace noise changes.

Reference: https://github.com/kohsuke/github-api/pull/98
2014-07-02 21:22:17 -07:00
Kohsuke Kawaguchi
62d9b92e6e Merge pull request #103 from rtyley/okhttp-2.0.0
Update to OkHttp 2.0.0, which has a new OkUrlFactory
2014-07-02 21:13:37 -07:00
Kohsuke Kawaguchi
d2c909584d Merge pull request #102 from jglick/clearer-FNFE
Better FNFE from delete()
2014-07-02 21:13:16 -07:00
Kohsuke Kawaguchi
219916eb14 Merge pull request #101 from farmdawgnation/final-answer
Un-finalize a handful of classes.
2014-07-02 21:12:59 -07:00
Roberto Tyley
0a37ac901f Update to OkHttp 2.0.0, which has a new OkUrlFactory
OkHttp changed API with v2.0.0, and the `client.open(url)` method no
longer exists:

"URLConnection support has moved to the okhttp-urlconnection module.
If you're upgrading from 1.x, this change will impact you. You will
need to add the okhttp-urlconnection module to your project and use
the OkUrlFactory to create new instances of HttpURLConnection"

https://github.com/square/okhttp/blob/master/CHANGELOG.md#version-200-rc1
2014-06-28 11:12:25 +01:00
Jesse Glick
4586baea27 Explain what a FNFE from delete() may just mean your token is lacking delete_repo. 2014-06-24 10:38:13 -04:00
Matt Farmer
d83961e85b Un-finalize a handful of classes. 2014-06-14 19:34:42 -04:00
Kohsuke Kawaguchi
7e35716ff0 [maven-release-plugin] prepare for next development iteration 2014-06-08 10:37:21 -07:00
Kohsuke Kawaguchi
d0cf1ac605 [maven-release-plugin] prepare release github-api-1.55 2014-06-08 10:37:17 -07:00
Kohsuke Kawaguchi
9a19d07ab8 I'm getting "the key is already in use" error.
Creating a new thro-away key
2014-06-08 10:36:05 -07:00
Kohsuke Kawaguchi
922be0b164 make sure the key gets deleted no matter what 2014-06-08 10:31:15 -07:00
Kohsuke Kawaguchi
d0b8e2e37e Merge pull request #97 from suryagaddipati/add_context_to_commit_status
Add support for adding context to commit status.
2014-06-08 10:21:43 -07:00
Surya Gaddipati
e3d6e08b6a Preserve api compatablity with previous version.
Support adding commitstatus without context.
2014-06-07 14:43:09 -05:00
Surya Gaddipati
16a6623095 Add support for adding context to commit status.
This groups statuses from multiple contexts to return single combined
status. More information here:
https://developer.github.com/changes/2014-03-27-combined-status-api/
2014-06-07 14:29:25 -05:00
Kohsuke Kawaguchi
7bf31ca149 [maven-release-plugin] prepare for next development iteration 2014-06-05 10:30:01 -07:00
Kohsuke Kawaguchi
030f2360ca [maven-release-plugin] prepare release github-api-1.54 2014-06-05 10:29:56 -07:00
Kohsuke Kawaguchi
08eafc4214 Merge pull request #94 from suryagaddipati/master
Add support for adding deploykeys to repo
2014-06-05 10:28:19 -07:00
Kohsuke Kawaguchi
134ece9385 Merge pull request #95 from suryagaddipati/ghref
Add support for retriving a single ref
2014-06-05 10:27:42 -07:00
Surya Gaddipati
3e4b06e959 Add support for retriving a single ref
Implements the following api method
https://developer.github.com/v3/git/refs/#get-a-reference
2014-06-04 15:11:27 -05:00
Surya Gaddipati
3e3c6f70ba Add support for adding deploykeys to repo
Implements https://developer.github.com/v3/repos/keys/
2014-06-03 15:26:04 -05:00
Kohsuke Kawaguchi
3097378a10 Merge pull request #93 from vr100/master
Upgrading to 1.12 version for bridge-method-annotation and bridge-method-injector - fix for #91
2014-05-28 20:52:07 -07:00
vr100
53f7a0f78a Upgrading to 1.12 version for bridge-method-annotation and bridge-method-injector - fix for #91 2014-05-28 12:41:19 +05:30
Kohsuke Kawaguchi
45a6841772 added a method to visit sub-directory 2014-05-27 20:57:42 -07:00
Kohsuke Kawaguchi
80b93a6e33 doc improvement 2014-05-27 20:44:44 -07:00
Kohsuke Kawaguchi
6aaab641be Using the latest 2014-05-10 15:57:56 -07:00
Kohsuke Kawaguchi
4999490c06 [maven-release-plugin] prepare for next development iteration 2014-05-10 15:52:17 -07:00
Kohsuke Kawaguchi
c7c1cd8bb3 [maven-release-plugin] prepare release github-api-1.53 2014-05-10 15:52:12 -07:00
Kohsuke Kawaguchi
8a1f116305 Renamed to avoid colliding with LifecycleTest 2014-05-10 15:49:31 -07:00
Kohsuke Kawaguchi
f8fe1dda6d Presence check needs to run on the same repo 2014-05-10 15:46:14 -07:00
Kohsuke Kawaguchi
bf44232d5c Updated test case 2014-05-10 15:43:15 -07:00
Kohsuke Kawaguchi
8c8ba47ef9 Fork into an org to simplify access control 2014-05-10 15:38:13 -07:00
Kohsuke Kawaguchi
b3580002d0 doc improvement 2014-05-10 15:37:21 -07:00
Kohsuke Kawaguchi
1249199b22 push fails with HTTPS 2014-05-10 15:34:57 -07:00
Kohsuke Kawaguchi
f39a47f354 This test seems to fail randomly 2014-05-10 15:32:58 -07:00
Kohsuke Kawaguchi
f58f15925f Fake a big rate limit
This fixes issue #78
2014-05-10 15:30:33 -07:00
Kohsuke Kawaguchi
a071f8bb86 Exposed more endpoints.
This fixes issue #64.
2014-05-10 15:21:59 -07:00
Kohsuke Kawaguchi
d33609ee57 Make sure getRepositories() for the user himself returns private repositories
This fixes issue #88
2014-05-10 15:16:12 -07:00
Kohsuke Kawaguchi
f2c08bc1e8 Added ability to create a pull request.
This fixes issue #79.
2014-05-10 15:05:48 -07:00
Kohsuke Kawaguchi
688d8ed7bc Added databinding for files 2014-05-10 14:11:41 -07:00
Kohsuke Kawaguchi
2ddb4018b8 added data binding for a file in gist 2014-05-10 14:07:53 -07:00
Kohsuke Kawaguchi
3ec25683f7 doc improvement 2014-05-10 14:03:49 -07:00
Kohsuke Kawaguchi
25d426f483 Bug fix based on tests 2014-05-10 14:03:12 -07:00
Kohsuke Kawaguchi
9d91ebc47a Not sure why tests weren't in the right package 2014-05-10 13:53:13 -07:00
Kohsuke Kawaguchi
c784ab6632 Added Gist support 2014-05-10 13:52:36 -07:00
Kohsuke Kawaguchi
ed5e3f13a1 exposed via getter.
This fixes issue #52.
2014-05-10 13:25:33 -07:00
Kohsuke Kawaguchi
3dcd82745e Resolved issue #54 2014-05-10 12:52:00 -07:00
Kohsuke Kawaguchi
c564dc5f29 All tests should use the secondary account 2014-05-10 12:47:28 -07:00
Kohsuke Kawaguchi
d64453b661 Fixing tests 2014-05-10 12:44:52 -07:00
Kohsuke Kawaguchi
834ed7db0e Merge branch 'pull-84' 2014-05-10 12:42:34 -07:00
Kohsuke Kawaguchi
db1dde533f Updated tests to use a separate account 2014-05-10 12:42:19 -07:00
Kohsuke Kawaguchi
9c66d9465e Added removal of release 2014-05-10 12:27:18 -07:00
Kohsuke Kawaguchi
8c193d004e Updated test cases to reflect my changes 2014-05-10 12:11:20 -07:00
Kohsuke Kawaguchi
7cbd7f999a Pointless to define a builder that doesn't take parameters 2014-05-10 12:08:17 -07:00
Kohsuke Kawaguchi
4340c8cb00 Support pagination in releases just like tags 2014-05-10 12:00:44 -07:00
Kohsuke Kawaguchi
6f6583772d Should support pagination 2014-05-10 11:59:46 -07:00
Kohsuke Kawaguchi
c62bc8d5da subsumed by GHRepository.queryCommits() 2014-05-10 11:58:22 -07:00
Kohsuke Kawaguchi
f68bfcb3e2 [maven-release-plugin] prepare for next development iteration 2014-05-09 18:39:33 -07:00
Kohsuke Kawaguchi
a37ade13cd [maven-release-plugin] prepare release github-api-1.52 2014-05-09 18:39:29 -07:00
Kohsuke Kawaguchi
1e0129f2d8 A few more properties while we are at it 2014-05-09 18:36:46 -07:00
Kohsuke Kawaguchi
2e1d4381b0 looks like this property was renamed 2014-05-09 18:34:51 -07:00
Kohsuke Kawaguchi
a409b4f49c Merge branch 'pull-86'
Conflicts:
	src/main/java/org/kohsuke/github/GHOrganization.java
	src/main/java/org/kohsuke/github/Requester.java
	src/test/java/org/kohsuke/AppTest.java
2014-05-09 18:30:59 -07:00
Kohsuke Kawaguchi
926776204b Implemented the builder pattern to my liking 2014-05-09 18:28:34 -07:00
Kohsuke Kawaguchi
bba490127d Merge branch 'pull-87' 2014-05-09 17:59:30 -07:00
Kohsuke Kawaguchi
80672c43c0 Restored backward compatibility 2014-05-09 17:59:22 -07:00
Kohsuke Kawaguchi
926e0ea0e5 added more tests.
Looks like org APIs only work for owners of the org
2014-05-09 17:55:53 -07:00
Kohsuke Kawaguchi
6da169cd56 a convenience method 2014-05-09 17:54:24 -07:00
Kohsuke Kawaguchi
aaf10aa118 added a test 2014-05-09 17:53:08 -07:00
Kohsuke Kawaguchi
145bdacf13 Added a method to list up teams 2014-05-09 17:50:19 -07:00
Kohsuke Kawaguchi
51309efd46 Graceful error handling 2014-05-09 17:43:27 -07:00
Kohsuke Kawaguchi
60fe143b07 detect the common problem
If the caller tries to parse a pull event into a pull_request event, we'd choke with NPE. This change avoids that.
2014-04-30 13:27:37 -07:00
Kelly Campbell
3f921b69f6 Fix bug in GHMyself.getEmails due to API change 2014-04-25 22:55:45 -04:00
vr100
d2ac81d7ba Using builder pattern to list commits in a repo 2014-04-23 09:45:11 +05:30
Francois Berthault
2e5a9479a8 create a Release & Branch 2014-04-21 10:45:10 +02:00
Kohsuke Kawaguchi
ec664ab6a2 Merge pull request #83 from antonkrasov/master
add tarball_url and zipball_url to GHRelease
2014-04-19 11:50:39 -07:00
Anton Krasov
8818bf8cf0 add tarball_url and zipball_url to GHRelease 2014-04-18 17:28:51 +03:00
Kohsuke Kawaguchi
cc53e0c8ff [maven-release-plugin] prepare for next development iteration 2014-04-13 08:58:53 -07:00
Kohsuke Kawaguchi
8353499d18 [maven-release-plugin] prepare release github-api-1.51 2014-04-13 08:58:49 -07:00
Kohsuke Kawaguchi
d2c5994616 I always get this confused 2014-04-13 08:57:48 -07:00
Kohsuke Kawaguchi
500b9097f7 doc improvement 2014-04-13 08:53:00 -07:00
Kohsuke Kawaguchi
7993266e6e This is also useful for setting timeout 2014-04-13 08:51:58 -07:00
Kohsuke Kawaguchi
74090103a9 doc improvement 2014-04-13 08:48:16 -07:00
Kohsuke Kawaguchi
a18cde2340 Abstracted away HTTP connector and added OkHttp implementation for convenience 2014-04-13 08:46:21 -07:00
Kohsuke Kawaguchi
ee98e97876 Merge pull request #80 from rtyley/remove-member-of-org
Add support for removing a user from an Organisation
2014-04-13 08:22:23 -07:00
Kohsuke Kawaguchi
ff63bafd72 Merge pull request #82 from prazanna/master
Cast url.openConnection() to HttpURLConnection instead of HttpsURLConnec...
2014-04-13 08:22:00 -07:00
Prasanna Rajaperumal
3f8c8be77a Cast url.openConnection() to HttpURLConnection instead of HttpsURLConnection. Useful for enterprise githubs which does not have https set up. 2014-04-09 18:13:10 -07:00
Roberto Tyley
769cdc73e7 Add support for removing a user from an Organisation 2014-04-02 18:47:50 +01:00
Kohsuke Kawaguchi
cef8f74c00 Added LICENSE 2014-04-02 09:31:02 -07:00
Kohsuke Kawaguchi
9f5ab709de [maven-release-plugin] prepare for next development iteration 2014-03-28 10:59:51 -07:00
Kohsuke Kawaguchi
c6fdae3b3c [maven-release-plugin] prepare release github-api-1.50 2014-03-28 10:59:47 -07:00
Kohsuke Kawaguchi
320cf0fea2 Seeing a failure to create 2014-03-28 10:58:41 -07:00
Kohsuke Kawaguchi
0261f1262f fixed a test case 2014-03-28 10:58:41 -07:00
Kohsuke Kawaguchi
5278ae3662 Merge pull request #75 from rtyley/check-team-membership
Support the check-user-team-membership API call
2014-03-28 10:24:18 -07:00
Kohsuke Kawaguchi
2941c44de2 Merge pull request #73 from rtyley/fix-issue-labels-setter
Fix GHIssue.setLabels()
2014-03-28 10:23:15 -07:00
Kohsuke Kawaguchi
627222602e Merge pull request #72 from farmdawgnation/patch-1
Un-finalize GHContent.
2014-03-28 10:23:03 -07:00
Kohsuke Kawaguchi
e13b1ffc48 looks like the 'tire' repository is gone 2014-03-28 10:11:15 -07:00
Kohsuke Kawaguchi
10bafce217 fixed a test 2014-03-28 10:08:08 -07:00
Kohsuke Kawaguchi
4817969495 fixed a broken test 2014-03-28 10:06:50 -07:00
Kohsuke Kawaguchi
2feda55eb7 looks like we need to pick another user here 2014-03-28 10:01:59 -07:00
Kohsuke Kawaguchi
a74cfd453a Added support for getting issues by milestone and state.
rework AppTest to work better for people other than kohsuke

This patch was originally from @evanchooly. Reworked to avoid whitespace
changes.
2014-03-28 09:57:04 -07:00
Kohsuke Kawaguchi
a360f65133 merging a portion of pull request #70 2014-03-28 09:49:38 -07:00
Kohsuke Kawaguchi
6a903d65a7 Fixed a bug in the databinding of the 'private' field.
Luca pointed out this bug in
ae7a616e92
2014-03-28 09:47:27 -07:00
Kohsuke Kawaguchi
d4b3166036 Merge branch 'pull-69' 2014-03-28 09:42:00 -07:00
Kohsuke Kawaguchi
21a54e2333 The parent commit appears to be totally untested.
The placement of the method makes no sense, and the API route is wrong.
The parameter is missing, and the expected response type is wrong.
2014-03-28 09:40:55 -07:00
Kohsuke Kawaguchi
37c58bffba indentation fix 2014-03-28 09:37:11 -07:00
Kohsuke Kawaguchi
4a42b7277c Merge branch 'pull-76' 2014-03-28 09:35:43 -07:00
Kohsuke Kawaguchi
071aea397b Keep the original signature intact for backward compatibility 2014-03-28 09:35:37 -07:00
vr100
9c02f918c1 In order to handle http based github enterprise vm url, changing https to http 2014-03-26 09:23:26 +05:30
vr100
15c5c9615e Added pagesize parameter to 'Get commits by author and branch' api 2014-03-20 15:00:34 +05:30
vr100
0b74692d62 change in comment 2014-03-19 11:38:03 +05:30
vr100
8f24f55eb7 Added apis to list commits by author and list the repos of an organization (including the private ones) 2014-03-19 11:06:11 +05:30
Kohsuke Kawaguchi
cd5ab1ae9b need to populate enum 2014-03-18 11:52:00 -07:00
Roberto Tyley
d29ea97948 Fix org.getMembers() to 'wrap' returned users for post-populating
This fixes an issue introduced with PR #66 in commit fee02a3d16 - the
`getMembers()` method switched to using paging, but lost the code that
populated the users with a full set of values.

This commit just applies 'wrapping' to all users returned, so that methods
like `user.getCreatedAt()` can be called on returned users without throwing
a NullPointerException - the reference to 'root' allows the user objects to
populate themselves.
2014-03-14 09:22:15 +00:00
Roberto Tyley
9930e7bb93 Add org public-members call, to complement the full members list
http://developer.github.com/v3/orgs/members/#public-members-list
2014-03-13 22:04:45 +00:00
Roberto Tyley
b1d37e4848 Support the check-user-team-membership API call
http://developer.github.com/v3/orgs/teams/#get-team-member
2014-03-12 21:46:14 +00:00
Roberto Tyley
893152cdf3 Fix GHIssue.setLabels() - *don't* set 'assignee' instead! 2014-03-08 16:05:33 +00:00
Matt Farmer
efbf98751d Un-finalize GHContent.
GHContent was declared as a final class, which makes it impossible to mock with libraries like Mockito.
2014-03-07 22:14:21 -05:00
Luca Milanesio
caac294e79 BugFix when listing repositories of a GitHub Organisation
Repositories of a GitHub Organisation are under 
/orgs/:org/repos as documented at:
http://developer.github.com/v3/repos/#list-organization-repositories

We need then to override the GHPerson implementation
which would have just returned the user's repositories.
2014-02-28 17:45:36 +00:00
vanjikumaran
d145ad8f47 Created new method to automate the merge 2014-02-24 17:00:11 +05:30
lindseydew
628034ae8c add a filter param to the get members method 2014-02-11 18:07:01 +00:00
Ryan Kennedy
fee02a3d16 Support paging when fetching organization members
Organization members are a paged list in the V3 GitHub API. Previously the code would fetch only the first page of ~30 members and return that. This change switches the return to a PagedIterable<GHUser> so clients can fetch the entire organization's member list.
2014-01-22 09:56:06 -08:00
Kohsuke Kawaguchi
ce5ae13bf6 [maven-release-plugin] prepare for next development iteration 2014-01-06 08:56:38 -08:00
Kohsuke Kawaguchi
26b6a94e32 [maven-release-plugin] prepare release github-api-1.49 2014-01-06 08:56:34 -08:00
Kohsuke Kawaguchi
be6ef475ba [maven-release-plugin] prepare for next development iteration 2014-01-06 08:52:00 -08:00
Kohsuke Kawaguchi
55e218ac37 [maven-release-plugin] prepare release github-api-1.48 2014-01-06 08:51:56 -08:00
Kohsuke Kawaguchi
7d1f636cdd Recover from earlier test failures 2014-01-01 21:12:17 -08:00
Kohsuke Kawaguchi
a4b8b9b09b Merge pull request #61 from lucamilanesio/master
Fetching of user's verified keys through standard OAuth scope.
2014-01-01 15:26:58 -08:00
Kohsuke Kawaguchi
4e8e28d27c Merge pull request #59 from farmdawgnation/contents-api
Contents API
2014-01-01 15:26:23 -08:00
Luca Milanesio
4b52414435 Fetching of user's verified keys through standard OAuth scope.
Allow the fetching of a user's verified key list without
requiring to have an OAuth user scope (which implies
user's profile READ/WRITE permissions).
This would relax the requirements of GitHub OAuth scope
when fetching public information such as their SSH
public keys.
2013-12-11 00:30:27 +00:00
Matt Farmer
811b96bcbe Implement the ability to retrieve content from a particular ref. 2013-11-28 10:02:37 -05:00
Matt Farmer
f3207855ca Implement a CRUD integration test for the content api. 2013-11-28 09:45:54 -05:00
Matt Farmer
9f3c5b93e3 Store encoded content in class level variable on update. 2013-11-28 09:45:21 -05:00
Matt Farmer
a56357f0c1 Implement the ability to retrieve conent if not populated.
The create and update API calls don't send back the content you just
sent, so that field is null. If this GHContent was instantiated from one
of those calls, we want to make sure we can retrieve the content (and
updated sha, etc) on the fly.
2013-11-28 09:44:27 -05:00
Matt Farmer
f8d14d2e56 Implement the ability to delete content. 2013-11-28 00:37:40 -05:00
Matt Farmer
b0c30759c8 Properly wrap content on directory listing retrieval. 2013-11-28 00:33:07 -05:00
Matt Farmer
54037e6e10 Add the ability to specify a branch name with GHContent updates. 2013-11-28 00:29:49 -05:00
Matt Farmer
fc260d4a37 Implement the ability to create content via content api. 2013-11-28 00:21:25 -05:00
Matt Farmer
387d4e5bc9 Return the new GHContentUpdateResponse from content changes. 2013-11-28 00:12:30 -05:00
Matt Farmer
4ffd46b391 Implement the ability to update existing content. 2013-11-28 00:03:43 -05:00
Matt Farmer
3b49370c06 Add the ability to retrieve the sha of the content. 2013-11-27 23:28:40 -05:00
Alexandre COLLIGNON
925d26e54c Add GitHub Contents API read methods 2013-11-27 22:35:41 -05:00
Kohsuke Kawaguchi
1283006b53 [maven-release-plugin] prepare for next development iteration 2013-11-27 11:57:40 -08:00
Kohsuke Kawaguchi
83a718c9db [maven-release-plugin] prepare release github-api-1.47 2013-11-27 11:57:35 -08:00
Kohsuke Kawaguchi
2abf03ccb7 Minor doc improvement 2013-11-27 11:52:47 -08:00
Kohsuke Kawaguchi
a59810a487 Merge pull request #56 from endeavor85/master
Use `PagedIterator<GHIssue>` to retrieve repository issues
2013-11-27 11:49:44 -08:00
Kohsuke Kawaguchi
9cc9e06ad1 Merge pull request #58 from rtholmes/master
Add support for PULL_REQUEST_REVIEW_COMMENT event types.
2013-11-27 11:49:17 -08:00
reid holmes
0108a0c146 Add support for PULL_REQUEST_REVIEW_COMMENT event types. 2013-11-26 15:13:36 -05:00
endeavor85
4188758d84 Use PagedIterator<GHIssue> to retrieve repository issues. Overcomes
default 30 item page size limit.
2013-11-24 02:54:18 -06:00
Kohsuke Kawaguchi
2144100f81 [maven-release-plugin] prepare for next development iteration 2013-11-13 13:05:29 -08:00
Kohsuke Kawaguchi
8a61e04be6 [maven-release-plugin] prepare release github-api-1.46 2013-11-13 13:05:24 -08:00
Kohsuke Kawaguchi
eaeb083891 Perhaps this will help resolve? 2013-11-12 13:13:18 -08:00
Kohsuke Kawaguchi
25e117b412 oops 2013-11-12 12:47:37 -08:00
Kohsuke Kawaguchi
6b7ceed1a5 Short cut 2013-11-12 12:45:39 -08:00
Kohsuke Kawaguchi
0533fc98a2 bumped up to a newer version 2013-11-12 12:21:17 -08:00
Kohsuke Kawaguchi
edde3ab2fb added one more field based on observations 2013-11-12 12:17:57 -08:00
Kohsuke Kawaguchi
ec20e518be adding a new payload implementation for PushEvent 2013-11-12 12:14:34 -08:00
Kohsuke Kawaguchi
930a582afa Unified various different instances of the "author" class 2013-11-12 12:10:33 -08:00
Kohsuke Kawaguchi
7536eeea54 V2 code no longer needed 2013-11-12 12:01:49 -08:00
Kohsuke Kawaguchi
d940d43907 added more event support 2013-11-12 11:52:40 -08:00
Kohsuke Kawaguchi
3ad3dd9493 [maven-release-plugin] prepare for next development iteration 2013-11-09 15:19:27 -08:00
Kohsuke Kawaguchi
553df7ac85 [maven-release-plugin] prepare release github-api-1.45 2013-11-09 15:19:23 -08:00
Kohsuke Kawaguchi
9648602252 Merge branch 'pull-51' 2013-11-09 15:17:21 -08:00
Kohsuke Kawaguchi
63d0d13330 Better and more secure to use OAuth. 2013-11-09 15:17:01 -08:00
Kohsuke Kawaguchi
ff9b538a49 doc touch up 2013-11-09 15:11:02 -08:00
Kohsuke Kawaguchi
6632da34c0 this dependency is for testing 2013-11-09 15:08:07 -08:00
evanchooly
178c9ff4d0 add support (most of) the release-related endpoints 2013-11-04 20:08:24 -05:00
Kohsuke Kawaguchi
bfefeae5c1 Merged pull request #45 with some changes 2013-11-02 18:15:31 -07:00
Kohsuke Kawaguchi
ebf953cbc4 Massaging the pull request.
- GHPerson really should be an abstract class
- static listPullRequests method does not fit the design of this
  library, although I'm very sympathetic as to why Luca wanted to do it.
  Nonetheless I'm removing this in favor of the lazy loading of the
  state to avoid unnecessary calls in the future.
2013-11-02 18:13:40 -07:00
Luca Milanesio
19ec3321ae Gets commit details of a pull request.
Retrieves the list of commits included in the pull request.
Commit object returned is not a full GHCommit and includes
just a small subset of information.
2013-10-09 16:59:18 +01:00
Kohsuke Kawaguchi
d82af9f1a0 Merge pull request #50 from pescuma/jackson
Updates Jackson to 2.2.3
2013-10-02 08:31:42 -07:00
Ricardo Pescuma Domenecci
4712d2c8ac Using version 2 of jackson 2013-09-28 14:25:23 -03:00
Ricardo Pescuma Domenecci
a2df4217fd Updated issue label with ifts fields 2013-09-28 12:43:01 -03:00
Luca Milanesio
096c96550b Allows fetching pull requests by knowing repo-name and owner. 2013-09-27 09:18:22 +01:00
Luca Milanesio
2fb3f31930 GHRepository owner is NOT a GHUser but more generically a GHPerson.
When GitHub repositories are associated to organisations,
the owner is NOT the user but the org itself.
2013-09-27 09:12:54 +01:00
Luca Milanesio
f52b4a2e11 Allows to define page size for repository lists.
Extension of the listRepositories() with the desired
pageSize. This allows to reduce the number of calls
to GitHub API for fetching the entire set of repositories
browsing all the pages.

Additionally allows to match the UX paging with the
underlying GitHub API paging, increasing performance
and reducing hourly API allowance.
2013-09-16 00:41:10 +01:00
Kohsuke Kawaguchi
bbc78ffec6 [maven-release-plugin] prepare for next development iteration 2013-09-07 13:32:24 +01:00
Kohsuke Kawaguchi
3606f412b3 [maven-release-plugin] prepare release github-api-1.44 2013-09-07 13:32:15 +01:00
Kohsuke Kawaguchi
6e0e94094b Massaging the changes 2013-09-07 13:29:23 +01:00
Kohsuke Kawaguchi
976960f495 Merge pull request #42 from paulbutenko/master
Commit's short info model
2013-09-07 05:25:58 -07:00
Kohsuke Kawaguchi
d2f2f3b2d3 Merge pull request #44 from stephenc/is-anonymous
Provide a way to determine if the connection is anonymous
2013-09-07 05:18:29 -07:00
Kohsuke Kawaguchi
2da7c45840 Merge pull request #43 from stephenc/master
GHMyself should allow accessing the private repos and orgs too
2013-09-07 05:18:00 -07:00
Stephen Connolly
fb078de627 Provide a way to determine if the connection is anonymous 2013-08-29 14:33:04 +01:00
Stephen Connolly
da46b7fddb GHMyself should allow accessing the private repos and orgs too 2013-08-29 14:29:58 +01:00
Paul Butenko
c4e0729b7d GHCOmpare reverted, getCommit changed to getCommitShortInfo 2013-08-17 01:09:55 +03:00
Paul Butenko
eee9f0ace5 Original formating restored 2013-08-17 00:48:42 +03:00
Paul Butenko
d0692458a3 New model for short info of the commit was added 2013-08-17 00:41:45 +03:00
Kohsuke Kawaguchi
c96e6c7c92 [maven-release-plugin] prepare for next development iteration 2013-07-06 22:26:45 -07:00
Kohsuke Kawaguchi
4956278f17 [maven-release-plugin] prepare release github-api-1.43 2013-07-06 22:26:39 -07:00
Kohsuke Kawaguchi
5858a86624 using the latest 2013-07-06 22:24:21 -07:00
Kohsuke Kawaguchi
c87d178a6a added a method that matches the convention elsewhere. 2013-07-06 17:49:56 -07:00
Kohsuke Kawaguchi
6fc872b1fd this is no longer efficient 2013-07-06 17:49:46 -07:00
Kohsuke Kawaguchi
589c5783a0 "myself" only makes sense when there's a credential 2013-05-24 12:01:56 -07:00
Kohsuke Kawaguchi
40165628d6 [maven-release-plugin] prepare for next development iteration 2013-05-07 11:09:20 -07:00
Kohsuke Kawaguchi
435be77249 [maven-release-plugin] prepare release github-api-1.42 2013-05-07 11:09:13 -07:00
Kohsuke Kawaguchi
b932ba856d fixed NPE 2013-05-07 11:07:12 -07:00
Kohsuke Kawaguchi
094514f617 Merge pull request #36 from spiffxp/require-credentials-fix
Allow oauthToken to be used without login
2013-05-06 14:34:06 -07:00
Kohsuke Kawaguchi
fab96879d0 Merge pull request #37 from spiffxp/pr-comments-fix
Force issues-based API route for PR comments
2013-05-06 14:33:29 -07:00
Kohsuke Kawaguchi
367a5f0c57 Merge pull request #38 from janinko/fixPullRequestPayload
add repository to Pull Request payload and wrap the PR with the repository
2013-05-06 14:32:11 -07:00
Honza Brázdil
0d2ecfbc67 add repository to Pull Request payload and wrap the PR with the repository 2013-05-02 18:11:40 +02:00
Aaron Crickenberger
5410ba3b1d Force issues-based API route for PR comments
pulls/:number/comments is used for review_comments
2013-05-01 13:59:45 -07:00
Aaron Crickenberger
716bfd4611 requireCredential should allow for oauthToken with no login 2013-04-30 15:41:08 -07:00
Kohsuke Kawaguchi
3830a58493 [maven-release-plugin] prepare for next development iteration 2013-04-23 10:30:54 -07:00
Kohsuke Kawaguchi
31d5cf6129 [maven-release-plugin] prepare release github-api-1.41 2013-04-23 10:30:48 -07:00
Kohsuke Kawaguchi
8c78d20e6e doc improvement 2013-04-23 10:25:57 -07:00
Kohsuke Kawaguchi
abe78cf0bb Formatting only changes 2013-04-23 10:20:07 -07:00
Kohsuke Kawaguchi
eeebfd5f04 added a little helper code that generates an OAuth token for ~/.github 2013-04-23 10:19:50 -07:00
Kohsuke Kawaguchi
5e3d3dd023 In fact there's no point in looking up the 'token' property since API token is no longer supported by GitHub 2013-04-23 10:05:45 -07:00
Kohsuke Kawaguchi
60175ebfad if the user name is available, pass that in and save a lookup 2013-04-23 10:05:06 -07:00
Kohsuke Kawaguchi
c6fafe453f Cleaned up the authentication part of the code 2013-04-23 10:04:20 -07:00
Kohsuke Kawaguchi
838ecd0dd8 Merge branch 'pull-33' 2013-04-23 09:40:37 -07:00
Kohsuke Kawaguchi
beec605e2c [FIXED issue #34] API route for pull requests uses 'pulls' 2013-04-23 09:28:00 -07:00
watsonian
da1405a060 Remove apiToken completely. 2013-04-20 11:58:52 -07:00
watsonian
e38eeae533 Update constructor to use OAuth tokens rather than API tokens. 2013-04-20 11:43:54 -07:00
watsonian
8442e7e326 Declare the exception type. 2013-04-19 17:10:29 -07:00
watsonian
e6c82e2003 Stop using deprecated API tokens for Enterprise.
Authentication by API token is deprecated and doesn't work anymore.
Instead, authentication should be done via OAuth token now.
2013-04-19 16:27:09 -07:00
Kohsuke Kawaguchi
c4de972c53 [maven-release-plugin] prepare for next development iteration 2013-04-16 12:30:34 -07:00
Kohsuke Kawaguchi
d2adbaec89 [maven-release-plugin] prepare release github-api-1.40 2013-04-16 12:30:28 -07:00
Kohsuke Kawaguchi
72736588c9 release botched because of the Nexus staging deployer. rolling back to the parent POM 4 2013-04-16 12:28:38 -07:00
Kohsuke Kawaguchi
46e726363a [maven-release-plugin] prepare for next development iteration 2013-04-16 12:22:26 -07:00
Kohsuke Kawaguchi
f7e5292b8c [maven-release-plugin] prepare release github-api-1.39 2013-04-16 12:22:20 -07:00
Kohsuke Kawaguchi
f67954fa3e Merge branch 'pull-32' 2013-04-16 12:19:33 -07:00
Kohsuke Kawaguchi
ba6c6a17ae doc improvement 2013-04-16 12:18:50 -07:00
Kohsuke Kawaguchi
c21d61a70d TAB -> WS 2013-04-16 12:17:30 -07:00
Kohsuke Kawaguchi
df857d3a84 doc improvement 2013-04-16 12:14:06 -07:00
Honza Brázdil
e9564f101b implement retrieving of access token 2013-04-14 05:50:11 +02:00
Honza Brázdil
e8a2a69649 Implement GHEventPayload.IssueComment 2013-04-13 17:09:03 +02:00
Kohsuke Kawaguchi
ba416b1294 [maven-release-plugin] prepare for next development iteration 2013-04-06 19:06:44 -07:00
Kohsuke Kawaguchi
3024b598ad [maven-release-plugin] prepare release github-api-1.38 2013-04-06 19:06:37 -07:00
Kohsuke Kawaguchi
5ac7a34a13 using a newer POM 2013-04-06 19:03:47 -07:00
Kohsuke Kawaguchi
b63181d9b5 need to finish the initialization 2013-04-06 13:56:04 -07:00
Kohsuke Kawaguchi
a3119e2cc7 [maven-release-plugin] prepare for next development iteration 2013-03-14 19:06:11 -07:00
Kohsuke Kawaguchi
e8b8971b72 [maven-release-plugin] prepare release github-api-1.37 2013-03-14 19:06:05 -07:00
Kohsuke Kawaguchi
d5f5fa0e0a doc improvement 2013-03-14 19:02:05 -07:00
Kohsuke Kawaguchi
c284f90a1a adding some more type-safe overloads 2013-03-14 18:56:37 -07:00
Michael Clarke
349df60ce8 Adding in support for the refs command and filters in the API 2013-02-15 23:55:04 +00:00
Michael Clarke
5ccc3f4ccd Adding in support for the compare command in the API 2013-02-15 09:43:27 +00:00
johnou
8ba61bb3a6 Revert 2ef5dec466 and add source encoding to deter build warnings. 2013-01-24 17:31:43 +01:00
Johno Crawford
cb3d413e5e [maven-release-plugin] prepare for next development iteration 2013-01-24 17:23:07 +01:00
Johno Crawford
1837699d8c [maven-release-plugin] prepare release github-api-1.36 2013-01-24 17:22:58 +01:00
johnou
2ef5dec466 Temporary change for release. 2013-01-24 17:20:16 +01:00
Johno Crawford
a46c7acbd2 Merge branch 'master' of github.com:kohsuke/github-api 2013-01-24 16:58:42 +01:00
johnou
769d645237 Normalize api url for oauth constructor. 2013-01-24 16:57:51 +01:00
Kohsuke Kawaguchi
389330df2e [maven-release-plugin] prepare for next development iteration 2013-01-06 16:47:29 -08:00
Kohsuke Kawaguchi
9d75913005 [maven-release-plugin] prepare release github-api-1.35 2013-01-06 16:47:24 -08:00
Kohsuke Kawaguchi
887ca772e0 switching to Markdown 2013-01-06 16:45:17 -08:00
Kohsuke Kawaguchi
45286598aa adding OAuth support in ~/.github 2013-01-06 16:43:43 -08:00
Kohsuke Kawaguchi
2e074b5bc4 follow up fix to the pull request #28 2013-01-06 16:25:02 -08:00
Johno Crawford
560e3c257a Refactored test. 2013-01-06 16:25:02 -08:00
Johno Crawford
6e0202fa0b Added membership checks. 2013-01-06 16:25:01 -08:00
Kohsuke Kawaguchi
ef241b1a07 Merge pull request #27 from johnou/deprecated-password
Password is no longer required for api usage and fix for broken base64 encoding.
2013-01-06 16:14:15 -08:00
Johno Crawford
f80cb541d5 Fix base64 encoding. 2013-01-06 21:11:19 +01:00
Johno Crawford
1fe61f72e2 Password is no longer required for api usage. 2013-01-06 13:08:41 +01:00
Jerome Lacoste
bf1b0edfd2 Merge pull request #26 from johnou/remove-webclient
Removed web client and proprietary api usage.
2013-01-06 00:34:15 -08:00
johnou
f0ab946b88 Removed proprietary api usage. 2013-01-06 04:27:18 +01:00
Johno Crawford
975ef1a43d Removed last traces of web client. 2013-01-06 04:06:55 +01:00
Kohsuke Kawaguchi
7064865157 [maven-release-plugin] prepare for next development iteration 2013-01-05 17:18:17 -08:00
Kohsuke Kawaguchi
3dd738b0db [maven-release-plugin] prepare release github-api-1.34 2013-01-05 17:18:11 -08:00
Kohsuke Kawaguchi
6480dde247 oops test failures 2013-01-05 17:15:46 -08:00
Kohsuke Kawaguchi
555dab7403 Merge branch 'pull-22' 2013-01-05 17:11:58 -08:00
Kohsuke Kawaguchi
13158a28e1 turns out we never exposed the ability to specify the custom URL.
So no backward compatibility provision is needed.
Also in this change, I stopped exposin the password. See the code comment for more details
2013-01-05 17:10:24 -08:00
Kohsuke Kawaguchi
cbaca87bbc massaging this a bit to accept the full URL 2013-01-05 16:08:42 -08:00
Kohsuke Kawaguchi
5166202f67 follow-up fix and documenting the expected value 2013-01-05 15:59:02 -08:00
johnou
35d45ca47d JENKINS-13726: Github plugin should work with Guthub enterprise by allowing for overriding the github URL. 2013-01-06 00:47:44 +01:00
Honza Brázdil
b66ede98c7 Retrieve repository directly. 2012-10-20 23:24:56 +02:00
Kohsuke Kawaguchi
1ba8f2ccbf Update pom.xml
Added <repository> definition
2012-10-17 07:45:15 -07:00
Kohsuke Kawaguchi
82133c117a [maven-release-plugin] prepare for next development iteration 2012-09-13 16:31:58 -07:00
Kohsuke Kawaguchi
f71afca828 [maven-release-plugin] prepare release github-api-1.33 2012-09-13 16:31:52 -07:00
Kohsuke Kawaguchi
87f5231c9a updated a test 2012-09-13 16:28:50 -07:00
Kohsuke Kawaguchi
b17f506c20 clean up 2012-09-13 16:23:57 -07:00
Kohsuke Kawaguchi
7f15f12668 completed code to create a new issue 2012-09-13 16:23:06 -07:00
Kohsuke Kawaguchi
e53e62bfa0 added code to create a new issue 2012-09-13 15:56:05 -07:00
Kohsuke Kawaguchi
2e74517a4a fixed issue #20
PagedIterator is updated to cope with the base iterator returning array of length 0
2012-09-13 15:46:25 -07:00
Kohsuke Kawaguchi
aed888051e added a method to retrieve a single issue 2012-09-13 15:36:32 -07:00
Kohsuke Kawaguchi
bd584124bb Merge pull request #19 from janinko/Issues-19-PagedIterable_dosnt_use_authentication
PagedIterable dosn't use authentication
2012-09-13 15:32:56 -07:00
Honza Brázdil
e658a7fa6b send authentication header on all requests 2012-09-12 18:04:59 +02:00
Kohsuke Kawaguchi
52108707bb Merge pull request #18 from janinko/patch-1
When using lazy population, this is not deprecated
2012-09-07 09:52:12 -07:00
Honza Brázdil
0e226a8f78 When using lazy population, this is not deprecated 2012-09-06 14:23:51 +03:00
Kohsuke Kawaguchi
1bf3e025b8 [maven-release-plugin] prepare for next development iteration 2012-09-05 19:30:18 -07:00
Kohsuke Kawaguchi
a0fdcca129 [maven-release-plugin] prepare release github-api-1.32 2012-09-05 19:30:04 -07:00
Kohsuke Kawaguchi
3e75e96718 adding an assertion 2012-09-05 19:26:25 -07:00
Kohsuke Kawaguchi
1dd875adac adding lazy population to GHUser and got rid of GHSmallUser 2012-09-05 19:25:56 -07:00
Kohsuke Kawaguchi
2341f789ab Merge branch 'master' into pull-17 2012-09-05 19:13:32 -07:00
Kohsuke Kawaguchi
8a95847b0a Renaming to better represent what it does. 2012-09-05 19:13:10 -07:00
Kohsuke Kawaguchi
ea9f3eacbc bug fix 2012-09-05 19:12:18 -07:00
Kohsuke Kawaguchi
435363a246 moved the pagenation API over to Poster 2012-09-05 19:08:29 -07:00
Kohsuke Kawaguchi
b6520cb6f9 got rid of all retrieveXYZ methods in favor of Poster 2012-09-05 18:55:44 -07:00
Kohsuke Kawaguchi
d6d73f5165 A step toward using Poster in place of the retrieve* methods.
I was trying to add  the flavor of the retrieve method that reads into an existing instance, when I realized that there are just too many orthogonal axes here to rely on overloaded methods.

That calls for a builder pattern, which we already have --- it's called Poster, but it can actually already handle GET and other HTTP requests.

So I'm retiring the retrieveXYZ methods and moving the code into Poster. This is the first step.
2012-09-05 18:53:06 -07:00
Kohsuke Kawaguchi
f58dbceec7 Massaging the pull request.
In various places of the GitHub API, there's often a full object and
then there's a shallow object. I think the client API would be a lot
easier to use if a single class represents both and retrieve additional
fields on the fly as needed.
2012-09-05 18:15:29 -07:00
Kohsuke Kawaguchi
3f1bb1a214 completed the commit status API 2012-09-05 18:00:50 -07:00
Kohsuke Kawaguchi
892d2acaa2 Added the commit status API, first cut. 2012-09-04 10:40:32 -07:00
Honza Brázdil
4e27d1b5a0 method names should by camelCase 2012-08-31 15:31:41 +02:00
Honza Brázdil
fff3272e42 make url methods return URL and add getApiUrl 2012-08-31 15:27:06 +02:00
Honza Brázdil
803198620d Nested GHIssue.PullRequest must be static 2012-08-31 15:24:14 +02:00
Honza Brázdil
9017fe70d5 We need to preserve api 2012-08-31 14:50:08 +02:00
Honza Brázdil
ce47762fbf Added milestone attribute to GHIssue 2012-08-31 14:37:02 +02:00
Honza Brázdil
b40677a3ca changed return value of GHRepository.getPullRequest()
I'm not sure whether this influence something or not, but I think it should be OK.
2012-08-31 14:30:00 +02:00
Honza Brázdil
c283c4e595 added method retrieving detailed pull request 2012-08-31 14:23:48 +02:00
Honza Brázdil
6aabaea96c Clean up GHIssue and GHPullRequest and make them relevant to api v3.
Added SmallUser representing reference to user.
Added DetailedPullRequest - when retrieving pull request by id, it has more attributes then pull requests obtained by GHRepository.getPullRequests()
2012-08-31 12:37:00 +02:00
Kohsuke Kawaguchi
65adb2f2b4 [maven-release-plugin] prepare for next development iteration 2012-08-28 11:03:11 -07:00
Kohsuke Kawaguchi
dcaf926a95 [maven-release-plugin] prepare release github-api-1.31 2012-08-28 11:02:59 -07:00
Honza Brázdil
587278f282 we need to maintain the binary compatibility, so I reverted getComments and added listComments that exposes PagedIterable.
inspired by 8f95c4f179
2012-08-28 19:09:18 +02:00
Honza Brázdil
cc3793cbcd Comments are paged 2012-08-28 18:59:09 +02:00
Honza Brázdil
c268a5dd07 removed unused throws statement 2012-08-28 18:59:09 +02:00
Honza Brázdil
58d10df5e3 Fix GHIssue.getState() No enum constant 2012-08-28 18:59:09 +02:00
Honza Brázdil
ae2d01a878 fix GHPullRequest.getLabels() NPE 2012-08-28 18:59:09 +02:00
Honza Brázdil
dbc5b0b742 user is not just username; added url 2012-08-28 18:59:09 +02:00
Kohsuke Kawaguchi
6af12c2335 [maven-release-plugin] prepare for next development iteration 2012-08-28 09:43:22 -07:00
Kohsuke Kawaguchi
dafb50d6a9 [maven-release-plugin] prepare release github-api-1.30 2012-08-28 09:43:14 -07:00
Kohsuke Kawaguchi
13c59b6618 Merge branch 'pull-15' 2012-08-28 09:41:59 -07:00
Kohsuke Kawaguchi
8f95c4f179 Massaging the pull request 15.
- we need to maintain the binary compatibility, so I reverted
  getPullRequests and added listPullRequests that exposes PagedIterable.

- Made PagedIterator expose asList.
2012-08-28 09:39:49 -07:00
Aurélien Thieriot
9fd34aec7f Paging GHPullRequests getter and allow to transform iterator to a list 2012-08-12 13:01:42 +02:00
Kohsuke Kawaguchi
17c7a3e7c5 [maven-release-plugin] prepare for next development iteration 2012-06-18 12:51:29 -07:00
Kohsuke Kawaguchi
40a8c110bf [maven-release-plugin] prepare release github-api-1.29 2012-06-18 12:51:25 -07:00
Kohsuke Kawaguchi
c9cd0a4d1f added a simple CRUD test 2012-06-18 12:50:47 -07:00
Kohsuke Kawaguchi
45eae77f8f added missing repository delete operation 2012-06-18 12:50:40 -07:00
Kohsuke Kawaguchi
926202900c fixed a bug in editing the repository definition 2012-06-18 12:37:27 -07:00
Kohsuke Kawaguchi
21aa669503 redundant test case 2012-06-18 12:24:30 -07:00
Kohsuke Kawaguchi
dee28e7a7a Doc says this is asynchronous 2012-06-18 12:23:48 -07:00
Kohsuke Kawaguchi
c8f46a3666 needs to wrap up 2012-06-18 12:23:34 -07:00
Kohsuke Kawaguchi
ba7fe10a08 bug fix 2012-06-18 12:23:20 -07:00
Kohsuke Kawaguchi
9e9db72878 [maven-release-plugin] prepare for next development iteration 2012-06-13 08:27:58 -07:00
Kohsuke Kawaguchi
69a87e2ab7 [maven-release-plugin] prepare release github-api-1.28 2012-06-13 08:27:53 -07:00
Kohsuke Kawaguchi
8ec2686e72 getName() is null with shallow retrieval 2012-06-13 08:12:18 -07:00
Kohsuke Kawaguchi
d034ca4d1f removed unused V3 API 2012-06-13 08:10:01 -07:00
Kohsuke Kawaguchi
61cf71fd67 [maven-release-plugin] prepare for next development iteration 2012-06-12 14:26:30 -07:00
Kohsuke Kawaguchi
63dd1330e9 [maven-release-plugin] prepare release github-api-1.27 2012-06-12 14:26:25 -07:00
Kohsuke Kawaguchi
4411650c5a additional tweaks 2012-06-12 14:25:08 -07:00
Kohsuke Kawaguchi
1c15751949 Removing pointless '3' suffix in the method names. 2012-06-12 14:21:43 -07:00
Kohsuke Kawaguchi
82acf4f107 Now that everything is V3 API, there's no need for such enum. 2012-06-12 14:20:52 -07:00
Kohsuke Kawaguchi
5525ae8921 Removed unused JSON databinding classes 2012-06-12 14:16:59 -07:00
Kohsuke Kawaguchi
b5f7208b0d Removed v2 API usage and switched to v3.
https://github.com/kohsuke/github-api/issues/8
2012-06-12 14:07:27 -07:00
Kohsuke Kawaguchi
3b5bc98053 [maven-release-plugin] prepare for next development iteration 2012-06-04 10:09:15 -07:00
Kohsuke Kawaguchi
3a9ade667a [maven-release-plugin] prepare release github-api-1.26 2012-06-04 10:09:10 -07:00
Kohsuke Kawaguchi
057c32d410 added API to retrieve rate limit. 2012-06-04 10:08:31 -07:00
Kohsuke Kawaguchi
33657c9c92 made the authentication header optional.
This was needed now that GHPerson.getRepository() always try with authentication on, and it'll break if logged in anonymously
2012-06-04 10:05:03 -07:00
Kohsuke Kawaguchi
4c199256a5 [maven-release-plugin] prepare for next development iteration 2012-05-21 22:42:24 -07:00
Kohsuke Kawaguchi
9e62776905 [maven-release-plugin] prepare release github-api-1.25 2012-05-21 22:42:19 -07:00
Kohsuke Kawaguchi
9ba74b945d added permission check methods 2012-05-21 22:40:43 -07:00
Kohsuke Kawaguchi
66656ce612 when authenticated, repository returns additional information, so always send in a credential when one is available 2012-05-21 22:37:48 -07:00
Kohsuke Kawaguchi
73a20ad829 [maven-release-plugin] prepare for next development iteration 2012-05-21 22:16:52 -07:00
Kohsuke Kawaguchi
6fc9a546cb [maven-release-plugin] prepare release github-api-1.24 2012-05-21 22:16:47 -07:00
Kohsuke Kawaguchi
3f6c225948 updated URL 2012-05-21 22:16:09 -07:00
Kohsuke Kawaguchi
c7e9650a39 added code to list up public keys 2012-05-21 22:15:34 -07:00
Kohsuke Kawaguchi
fd28a36b74 [maven-release-plugin] prepare for next development iteration 2012-04-24 17:22:19 -07:00
Kohsuke Kawaguchi
86543c84db [maven-release-plugin] prepare release github-api-1.23 2012-04-24 17:22:14 -07:00
Kohsuke Kawaguchi
706cdac4cc bug fix 2012-04-24 17:21:33 -07:00
Kohsuke Kawaguchi
0b69743792 added comment deletion 2012-04-24 17:17:35 -07:00
Kohsuke Kawaguchi
dd54a00172 added update 2012-04-24 17:13:48 -07:00
Kohsuke Kawaguchi
b5514b891a added a method to create a new commit comment 2012-04-24 17:06:23 -07:00
Kohsuke Kawaguchi
31a6eca97f added commit comment support 2012-04-24 16:54:05 -07:00
Kohsuke Kawaguchi
8557676561 making names consistent with GHBranch 2012-04-24 16:36:18 -07:00
Kohsuke Kawaguchi
39631461ae added list commits 2012-04-24 16:30:01 -07:00
Kohsuke Kawaguchi
a124d7f714 added some tests 2012-04-24 16:16:13 -07:00
Kohsuke Kawaguchi
fff07bf70b fixed a bug in error handling 2012-04-24 16:14:13 -07:00
Kohsuke Kawaguchi
53d09bb5d8 added object representation for GitHub commit 2012-04-24 16:11:55 -07:00
Kohsuke Kawaguchi
a8ecf0bef0 [maven-release-plugin] prepare for next development iteration 2012-04-12 11:36:57 -07:00
Kohsuke Kawaguchi
74b3902d5f [maven-release-plugin] prepare release github-api-1.22 2012-04-12 11:36:49 -07:00
Kohsuke Kawaguchi
7433ed968e monkey test code 2012-04-12 11:05:18 -07:00
Kohsuke Kawaguchi
ddf2d69a68 this method can return null 2012-04-12 11:05:04 -07:00
Kohsuke Kawaguchi
f5b34861bd avoid NPE 2012-04-12 11:01:43 -07:00
Kohsuke Kawaguchi
f0ff31a1af [maven-release-plugin] prepare for next development iteration 2012-04-11 18:16:16 -07:00
Kohsuke Kawaguchi
8ce76fba62 [maven-release-plugin] prepare release github-api-1.21 2012-04-11 18:16:10 -07:00
Kohsuke Kawaguchi
a947672320 doc improvement 2012-04-11 16:34:37 -07:00
Kohsuke Kawaguchi
5496e2b553 added pagenation support 2012-04-11 16:30:31 -07:00
Kohsuke Kawaguchi
2f9edc65dd support gzip for better performance 2012-04-11 15:45:08 -07:00
Kohsuke Kawaguchi
6372337456 Use gzip to improve transfer performance 2012-04-11 15:44:04 -07:00
Kohsuke Kawaguchi
b843606ebe [maven-release-plugin] prepare for next development iteration 2012-04-11 09:32:51 -07:00
Kohsuke Kawaguchi
7cda083b31 [maven-release-plugin] prepare release github-api-1.20 2012-04-11 09:32:46 -07:00
Kohsuke Kawaguchi
095604d4ca updated the parent version 2012-04-11 09:32:22 -07:00
Kohsuke Kawaguchi
7e799d02e3 Added test-ish 2012-04-11 09:29:28 -07:00
Kohsuke Kawaguchi
7f4612f872 exposed the size 2012-04-11 09:27:47 -07:00
Kohsuke Kawaguchi
6f6ff56338 exposed master_branch 2012-04-11 09:26:26 -07:00
Kohsuke Kawaguchi
27701a75d9 Migrating to the V3 API 2012-04-10 13:03:55 -07:00
Kohsuke Kawaguchi
3717d2ed32 emulate the value for V2 API 2012-04-10 12:57:25 -07:00
Kohsuke Kawaguchi
3a9b6665ee exposed avatar_url 2012-04-10 12:43:59 -07:00
Kohsuke Kawaguchi
bbc42f8898 [maven-release-plugin] prepare for next development iteration 2012-04-06 08:25:49 -07:00
Kohsuke Kawaguchi
f6aea47c2c [maven-release-plugin] prepare release github-api-1.19 2012-04-06 08:25:43 -07:00
Kohsuke Kawaguchi
23069ac2fc Using map to enable lookup by name. 2012-04-06 08:24:41 -07:00
Kohsuke Kawaguchi
0b2fdc598b cleaning up 2012-04-06 08:22:44 -07:00
Frederik Fix
aac30b923c implement listing of branches 2012-04-05 16:21:24 +02:00
Kohsuke Kawaguchi
318caf6123 [maven-release-plugin] prepare for next development iteration 2012-03-08 12:51:59 -08:00
Kohsuke Kawaguchi
6898893ffb [maven-release-plugin] prepare release github-api-1.18 2012-03-08 12:51:54 -08:00
Kohsuke Kawaguchi
cb34f4e91f Merge branch 'pull-6' 2012-03-08 12:50:09 -08:00
Kohsuke Kawaguchi
0da4b320f1 As per Sun coding convention, using upper case letters for enum constants 2012-03-08 12:49:36 -08:00
Kohsuke Kawaguchi
facb5bd13e Added API to handle emails. 2012-03-08 12:47:11 -08:00
Kohsuke Kawaguchi
22bc768868 [maven-release-plugin] prepare for next development iteration 2012-02-12 09:30:37 -08:00
Kohsuke Kawaguchi
a9b6f7bc9c [maven-release-plugin] prepare release github-api-1.17 2012-02-12 09:30:06 -08:00
Kohsuke Kawaguchi
830fb7192d added additional convenience method 2012-02-12 08:20:10 -08:00
Kohsuke Kawaguchi
e8ff7a4ae8 updated to use V3 API 2012-02-12 08:11:15 -08:00
Kohsuke Kawaguchi
dac2a56671 fully populate the root field upon deserialization 2012-02-12 07:43:06 -08:00
Kohsuke Kawaguchi
2718cf5ccb support both v2 and v3 2012-02-12 07:27:39 -08:00
Michael O'Cleirigh
202a5d435c Add original GitHub.connectUsingOAuth(token) back
This adds the original API back which defaults to the 'github.com' server.
2012-02-01 21:24:19 -05:00
Michael O'Cleirigh
58af8d0e90 Add support for github enterprise different base url
This changes how the ApiVersion enumeration works so that each of the V2 and V3  Url schemes is actually a template.

Then the serverName/hostname to use is passed in and used to generate the full url.

This will allow the github-api project to be used against users running the enterprise version of github.

This is needed to support github enterprise based authentication with the github-oauth-plugin.
2012-01-31 22:01:46 -05:00
Kohsuke Kawaguchi
b950be9626 bug fix in the event API. Turns out GHRepository isn't usable for this, because the name field is different.
/repos/:user/:repo returns just ":repo" portion in the name field, whereas in the event it has both ":user/:repo"
2012-01-14 11:53:53 -08:00
Kohsuke Kawaguchi
222277ae0a doc improvement 2012-01-14 11:42:09 -08:00
y.kokubo
fbcf3a17b4 implmented milestone api via v3 2012-01-13 14:36:00 +09:00
Kohsuke Kawaguchi
748cbdd03b doc improvement 2012-01-08 18:30:20 -08:00
Kohsuke Kawaguchi
57b26b6a21 doc improvement 2012-01-08 18:30:19 -08:00
Kohsuke Kawaguchi
a4026d46ce after an experiment, revisiting the design 2012-01-08 18:30:19 -08:00
Kohsuke Kawaguchi
696daf7387 adding the payload handling 2012-01-08 18:30:19 -08:00
Kohsuke Kawaguchi
4a507a5625 adding event support 2012-01-08 18:30:19 -08:00
Kohsuke Kawaguchi
ac1dd9a0ee 'Z' isn't parsed but it means GMT 2012-01-08 18:30:19 -08:00
Kohsuke Kawaguchi
44f1038516 [maven-release-plugin] prepare for next development iteration 2012-01-03 11:16:15 -08:00
Kohsuke Kawaguchi
3e2c9f86da [maven-release-plugin] prepare release github-api-1.16 2012-01-03 11:16:10 -08:00
Kohsuke Kawaguchi
44cc3c8556 added OAuth support to V3 API calls 2012-01-03 11:14:33 -08:00
Kohsuke Kawaguchi
bf65a746b0 inheriting javadoc and designating as overridden 2012-01-03 11:12:18 -08:00
Joshua Krall
4a4a469ca4 Fix for finding private repos on organizations,
requires authenticated API call
2012-01-02 19:45:58 -06:00
Kohsuke Kawaguchi
46b2e5dd32 bug fix 2012-01-02 10:46:54 -08:00
Kohsuke Kawaguchi
8a7adf876f added support for a hook 2012-01-02 10:39:16 -08:00
Kohsuke Kawaguchi
c16ebe4fec bug fix 2012-01-01 18:38:03 -08:00
Kohsuke Kawaguchi
4c61f79e5c bug fix 2012-01-01 18:07:27 -08:00
Kohsuke Kawaguchi
646dc17e5d typo 2012-01-01 18:07:07 -08:00
Kohsuke Kawaguchi
7977471458 Pulled up more properties to the base type 2012-01-01 17:43:44 -08:00
Kohsuke Kawaguchi
9ac2ad957b needs to send auth header 2012-01-01 13:11:24 -08:00
Kohsuke Kawaguchi
7fead8171d improving the usability by introducing a set with lookup-by-ID 2012-01-01 11:13:09 -08:00
Kohsuke Kawaguchi
70bc5c59e2 added a method to return organizations of the user 2012-01-01 09:01:33 -08:00
Kohsuke Kawaguchi
06ef6e841d [maven-release-plugin] prepare for next development iteration 2011-12-31 21:20:06 -08:00
Kohsuke Kawaguchi
2bee34da59 [maven-release-plugin] prepare release github-api-1.15 2011-12-31 21:20:00 -08:00
Kohsuke Kawaguchi
74415b14be bug fix in the error handling 2011-12-19 17:47:08 -08:00
Kohsuke Kawaguchi
1e9a68a16b fixed the behaviour in case the repository doesn't exist. 2011-12-19 17:07:56 -08:00
Kohsuke Kawaguchi
7a3127ed65 added a method to list all members 2011-12-19 17:07:56 -08:00
Kohsuke Kawaguchi
11b0ac19fd PUT apparently requires some payload. 2011-12-19 17:07:56 -08:00
Michael O'Cleirigh
c8eab1f53e OAuth related changes to getMyself() and getUser (username)
Changed how getMyself() works so that in the OAuth case it will use the username less url.

Changed how getUser (username) works in the OAuth case so that you can lookup the specific username using the OAuth token.

Previously getUser (username) would always return the 'myself' user.
2011-11-19 01:08:01 -05:00
Kohsuke Kawaguchi
1c613c5f07 added a method to publicize/conceal 2011-11-15 15:26:47 -08:00
Kohsuke Kawaguchi
b8a63541e8 v3 API changed the meaning of the 'url' field. 2011-11-10 14:30:27 -08:00
Kohsuke Kawaguchi
f25083fde1 more test 2011-11-10 14:25:59 -08:00
Kohsuke Kawaguchi
c86c974400 GHOrganization.createRepository broke, so I fixed that by using V3 API.
That didn't quite work because v3 API has owner as an object, whereas v2 API has owner as string.

So then I fixed all the other retrieval points for GHRepository to use v3.
2011-11-10 14:23:36 -08:00
Kohsuke Kawaguchi
0ad419b026 [maven-release-plugin] prepare for next development iteration 2011-10-26 17:39:15 -07:00
Kohsuke Kawaguchi
a395697980 [maven-release-plugin] prepare release github-api-1.14 2011-10-26 17:39:10 -07:00
Kohsuke Kawaguchi
834a6eb865 GitHub has changed the element ID 2011-10-26 17:38:51 -07:00
Kohsuke Kawaguchi
e1c6927fd8 [maven-release-plugin] prepare for next development iteration 2011-09-15 11:44:31 -07:00
Kohsuke Kawaguchi
f02f2d7585 [maven-release-plugin] prepare release github-api-1.13 2011-09-15 11:44:20 -07:00
Kohsuke Kawaguchi
d4c099d447 Merge pull request #2 from lacostej/lacostej-master
expose issue_updated_at. It looks like a better representation of update
2011-09-06 13:28:30 -07:00
Jerome Lacoste (f19)
5756133840 expose issue_updated_at. It looks like a better representation of update time for an pull request than updated_at 2011-09-06 13:07:50 +02:00
Kohsuke Kawaguchi
6cc966adee [maven-release-plugin] prepare for next development iteration 2011-08-26 18:43:22 -07:00
3944 changed files with 1179424 additions and 1428 deletions

29
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,29 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

16
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,16 @@
# Description
** Describe your change here**
# Before submitting a PR:
We love getting PRs, but we hate asking people for the same basic changes every time.
- [ ] Push your changes to a branch other than `master`. Create your PR from that branch.
- [ ] Add JavaDocs and other comments
- [ ] Write tests that run and pass in CI. See [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to capture snapshot data.
- [ ] Run `mvn clean compile` locally. This may reformat your code, commit those changes.
- [ ] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.
# When creating a PR:
- [ ] Fill in the "Description" above.
- [ ] Enable "Allow edits from maintainers".

12
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
version: 2
updates:
- package-ecosystem: "maven"
directory: "/"
schedule:
interval: "monthly"
time: "02:00"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
time: "02:00"

20
.github/release-drafter.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
name-template: 'v$NEXT_MINOR_VERSION 🌈'
tag-template: 'github-api-$NEXT_MINOR_VERSION'
version-template: '$MAJOR.$MINOR'
categories:
- title: '🚀 Features'
labels:
- 'feature'
- 'enhancement'
- title: '🐛 Bug Fixes'
labels:
- 'fix'
- 'bugfix'
- 'bug'
- title: '🧰 Maintenance'
label: 'chore'
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
template: |
## Changes
$CHANGES

72
.github/workflows/maven-build.yml vendored Normal file
View File

@@ -0,0 +1,72 @@
name: CI
on: [push, pull_request]
jobs:
build:
name: build-only (Java ${{ matrix.java }})
runs-on: ubuntu-latest
strategy:
matrix:
java: [ 13 ]
steps:
- uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java }}
- name: Cached .m2
uses: actions/cache@v2
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Maven Install (skipTests)
run: mvn -B install -DskipTests -D enable-ci --file pom.xml
site:
name: site (Java ${{ matrix.java }})
runs-on: ubuntu-latest
strategy:
matrix:
java: [ 8, 11 ]
steps:
- uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java }}
- uses: actions/cache@v2
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Maven Site
run: mvn -B site -D enable-ci --file pom.xml
test:
name: test (${{ matrix.os }}, Java ${{ matrix.java }})
runs-on: ${{ matrix.os }}-latest
strategy:
matrix:
os: [ ubuntu, windows ]
java: [ 8, 11, 13, 15-ea ]
steps:
- uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java }}
- uses: actions/cache@v2
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Maven Install without Code Coverage
if: matrix.os == 'windows'
run: mvn -B install --file pom.xml
- name: Maven Install with Code Coverage
if: matrix.os != 'windows'
run: mvn -B install -D enable-ci --file pom.xml

9
.gitignore vendored
View File

@@ -1,4 +1,13 @@
target
.idea/
*.iml
*.ipr
*.iws
.classpath
.project
.settings/
.DS_Store
dependency-reduced-pom.xml
.factorypath
.vscode/settings.json

1184
CHANGELOG.md Normal file

File diff suppressed because it is too large Load Diff

76
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at bitwiseman@gmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

82
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,82 @@
# Contributing
## Using WireMock and Snapshots
This project has started converting to using WireMock to stub out http responses instead of use live data.
This change will allow tests to run in a CI environment without needing to touch github.com.
The tests will instead serve previously recorded responses from local data files.
### Running WireMock tests
Example:
`mvn install -Dtest=WireMockStatusReporterTest`
This the default behavior.
Example for a single test case:
`mvn install -Dtest=WireMockStatusReporterTest#user_whenProxying_AuthCorrectlyConfigured`
### Setting up credential
1. Create an OAuth token on github.com
2. Set the GITHUB_OAUTH environment variable to the value of that token
3. Set the system property `test.github.useProxy` (usually like "-Dtest.github.useProxy" as a Java VM option)
`mvn install -Dtest.github.useProxy -Dtest=WireMockStatusReporterTest`
4. The above should report no test failures and include the following console output:
`WireMockStatusReporterTest: GitHub proxying and user auth correctly configured for user login: <your login>`
Whenever you run tests with `-Dtest.github.useProxy`, they will try to get data from local files but will fallback to proxying to GitHub if not found.
### Writing a new test
Once you have credentials setup, you add new test classes and test methods as you would normally.
#### Running tests using GitHub test proxy
Keep `useProxy` enabled and iterate on your tests as needed. With `useProxy` enabled your tests will interact with
GitHub - you will need to clean up your server-state between runs. This can be done manually to start with.
Once your test code is somewhat stable, use `getGitHubBeforeAfter()` to get a `GitHub` instance for test setup and cleanup.
Interactions with that `GitHub` instance will not be recorded as part of the test, keeping the test data files to a minimum.
#### Running tests against your personal GitHub user account
By default, test helper methods such as `getTempRepository()` target the `hub4j-test-org` GitHub organization.
Please request access to this org to record your tests before submitting a PR. This helps keep the project stable and nimble.
Until you have access (or if you don't want access), you can set the following additional system property to target
your personal github account.
`mvn install -Dtest.github.org=false -Dtest=YourTestClassName`
#### Taking a snapshot
When you are ready to create a snapshot of your test data, run your test with `test.github.takeSnapshot` ("-Dtest.github.takeSnapshot" as
a Java VM option). For example:
`mvn install -Dtest.github.takeSnapshot -Dtest.github.org=false -Dtest=YourTestClassName`
The above command will create snapshot WireMock data files under the path `src/test/resources/org/kohsuhke/github/YourTestClassName/wiremock`.
Each method will get a separate directory that will hold the data files for that test method.
Add all files including the generated data to your commit and submit a PR.
### Modifying existing tests
When modifying existing tests, you can change the stubbed WireMock data files by hand or you can try generating a new snapshot.
#### Manual editing of data (minor changes only)
If you know what data will change, it is sometimes simplest to make any required changes to the data files manually.
This can be easier if the changes are minor or when you development environment is not setup to to take updated snapshots.
#### Generating a new snapshot
For more most changes, it is recommended to take a new snapshot when updating tests.
Delete the wiremock data files for the test method you will be modifying.
For more significant changes, you can even delete the WireMock files for an entire test class.
Then follow the same as when writing a new test: run with proxy enabled to debug, take a new snapshot when done, commit everything, and submit the PR.

22
LICENSE.txt Normal file
View File

@@ -0,0 +1,22 @@
Copyright (c) 2011- Kohsuke Kawaguchi and other contributors
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

3
README
View File

@@ -1,3 +0,0 @@
Java API for GitHub
See http://kohsuke.org/github-api/ for more details

9
README.md Normal file
View File

@@ -0,0 +1,9 @@
# Java API for GitHub
[![Sonatype Nexus (Releases)](https://img.shields.io/nexus/r/org.kohsuke/github-api?server=https%3A%2F%2Foss.sonatype.org)](https://mvnrepository.com/artifact/org.kohsuke/github-api)
[![Join the chat at https://gitter.im/hub4j/github-api](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/hub4j/github-api?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
![CI](https://github.com/hub4j/github-api/workflows/CI/badge.svg?branch=master)
See https://github-api.kohsuke.org/ for more details

711
pom.xml
View File

@@ -1,67 +1,724 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.kohsuke</groupId>
<artifactId>pom</artifactId>
<version>1</version>
</parent>
<groupId>org.kohsuke</groupId>
<artifactId>github-api</artifactId>
<version>1.12</version>
<version>1.122</version>
<name>GitHub API for Java</name>
<url>http://github-api.kohsuke.org/</url>
<url>https://github-api.kohsuke.org/</url>
<description>GitHub API for Java</description>
<scm>
<connection>scm:git:git@github.com/kohsuke/${project.artifactId}.git</connection>
<developerConnection>scm:git:ssh://git@github.com/kohsuke/${project.artifactId}.git</developerConnection>
<url>http://${project.artifactId}.kohsuke.org/</url>
<connection>scm:git:git@github.com/hub4j/${project.artifactId}.git</connection>
<developerConnection>scm:git:ssh://git@github.com/hub4j/${project.artifactId}.git</developerConnection>
<url>https://github.com/hub4j/github-api/</url>
<tag>github-api-1.122</tag>
</scm>
<distributionManagement>
<snapshotRepository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>
<repository>
<id>sonatype-nexus-staging</id>
<name>Nexus Release Repository</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
<site>
<id>github-pages</id>
<url>gitsite:git@github.com/kohsuke/${project.artifactId}.git</url>
<url>gitsite:git@github.com/hub4j/${project.artifactId}.git</url>
</site>
</distributionManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spotbugs-maven-plugin.version>4.1.4</spotbugs-maven-plugin.version>
<spotbugs.version>4.1.3</spotbugs.version>
<spotbugs-maven-plugin.failOnError>true</spotbugs-maven-plugin.failOnError>
<hamcrest.version>2.2</hamcrest.version>
<okhttp3.version>4.4.1</okhttp3.version>
<okio.version>2.5.0</okio.version>
<spotless-maven-plugin.goal>apply</spotless-maven-plugin.goal>
<!-- Using this as the minimum bar for code coverage. Adding methods without covering them will fail this. -->
<jacoco.coverage.target.bundle.method>0.60</jacoco.coverage.target.bundle.method>
<jacoco.coverage.target.class.method>0.25</jacoco.coverage.target.class.method>
<!-- For non-ci builds we'd like the build to still complete if jacoco metrics aren't met. -->
<jacoco.haltOnFailure>false</jacoco.haltOnFailure>
<jjwt.suite.version>0.11.2</jjwt.suite.version>
</properties>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId>
<version>1.11.2</version>
</extension>
<extension>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-manager-plexus</artifactId>
<version>1.11.2</version>
</extension>
<!-- Doing site publishing manually for now -->
<!--
<extension>
<groupId>org.kohsuke</groupId>
<artifactId>wagon-gitsite</artifactId>
<version>0.3.5</version>
</extension>
-->
</extensions>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<excludes>
<exclude>**/wiremock/**</exclude>
</excludes>
</testResource>
</testResources>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<!-- SUREFIRE-1226 workaround -->
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.6</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<!-- attached to Maven test phase -->
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>check</id>
<phase>test</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rules>
<rule>
<element>BUNDLE</element>
<limits>
<limit>
<counter>METHOD</counter>
<value>COVEREDRATIO</value>
<minimum>${jacoco.coverage.target.bundle.method}</minimum>
</limit>
</limits>
</rule>
<rule>
<!--We end up with chatty logs, but it shows us which particular classes -->
<!--are lacking in coverage. If this is too much, just remove the -->
<!--<element>CLASS</element> tag below. -->
<element>CLASS</element>
<limits>
<limit>
<counter>METHOD</counter>
<value>COVEREDRATIO</value>
<minimum>${jacoco.coverage.target.class.method}</minimum>
</limit>
</limits>
<excludes>
<!-- Code implemented externally -->
<exclude>org.kohsuke.github.extras.okhttp3.ObsoleteUrlFactory.**</exclude>
<exclude>org.kohsuke.github.extras.okhttp3.ObsoleteUrlFactory</exclude>
<!-- Sample only -->
<exclude>org.kohsuke.github.example.*</exclude>
<!-- No methods -->
<exclude>org.kohsuke.github.internal.Previews</exclude>
<!-- Deprecated -->
<exclude>org.kohsuke.github.extras.OkHttp3Connector</exclude>
<exclude>org.kohsuke.github.EnforcementLevel</exclude>
<exclude>org.kohsuke.github.GHPerson.1</exclude>
<!-- These fail coverage on windows because tests are disabled -->
<exclude>org.kohsuke.github.GHAsset</exclude>
<exclude>org.kohsuke.github.GHReleaseBuilder</exclude>
<exclude>org.kohsuke.github.GHRelease</exclude>
<!-- TODO: These still need test coverage -->
<exclude>org.kohsuke.github.GHBranchProtection.RequiredSignatures</exclude>
<exclude>org.kohsuke.github.GHBranchProtectionBuilder.Restrictions</exclude>
<exclude>org.kohsuke.github.GHBranchProtection.Restrictions</exclude>
<exclude>org.kohsuke.github.GHCommentAuthorAssociation</exclude>
<exclude>org.kohsuke.github.GHCommitBuilder.UserInfo</exclude>
<exclude>org.kohsuke.github.GHCommitState</exclude>
<exclude>org.kohsuke.github.GHCompare.Commit</exclude>
<exclude>org.kohsuke.github.GHCompare.InnerCommit</exclude>
<exclude>org.kohsuke.github.GHCompare.Status</exclude>
<exclude>org.kohsuke.github.GHCompare.Tree</exclude>
<exclude>org.kohsuke.github.GHCompare.User</exclude>
<exclude>org.kohsuke.github.GHCompare</exclude>
<exclude>org.kohsuke.github.GHDeployKey</exclude>
<exclude>org.kohsuke.github.GHDeploymentStatusBuilder</exclude>
<exclude>org.kohsuke.github.GHDirection</exclude>
<exclude>org.kohsuke.github.GHEmail</exclude>
<exclude>org.kohsuke.github.GHEventPayload.Ping</exclude>
<exclude>org.kohsuke.github.GHEventPayload.Release</exclude>
<exclude>org.kohsuke.github.GHException</exclude>
<exclude>org.kohsuke.github.GHHook</exclude>
<exclude>org.kohsuke.github.GHHooks.OrgContext</exclude>
<exclude>org.kohsuke.github.GHInvitation</exclude>
<exclude>org.kohsuke.github.GHMilestoneState</exclude>
<exclude>org.kohsuke.github.GHOrgHook</exclude>
<exclude>org.kohsuke.github.GHProject.ProjectStateFilter</exclude>
<exclude>org.kohsuke.github.GHPullRequestCommitDetail.Authorship</exclude>
<exclude>org.kohsuke.github.GHPullRequestCommitDetail.Commit</exclude>
<exclude>org.kohsuke.github.GHPullRequestCommitDetail.CommitPointer</exclude>
<exclude>org.kohsuke.github.GHPullRequestCommitDetail.Tree</exclude>
<exclude>org.kohsuke.github.GHPullRequestCommitDetail</exclude>
<exclude>org.kohsuke.github.GHPullRequestFileDetail</exclude>
<exclude>org.kohsuke.github.GHPullRequestQueryBuilder.Sort</exclude>
<exclude>org.kohsuke.github.GHReleaseUpdater</exclude>
<exclude>org.kohsuke.github.GHRepository.ForkSort</exclude>
<exclude>org.kohsuke.github.GHRequestedAction</exclude>
<exclude>org.kohsuke.github.GHStargazer</exclude>
<exclude>org.kohsuke.github.GHTagObject</exclude>
<exclude>org.kohsuke.github.GHTeam.Role</exclude>
<exclude>org.kohsuke.github.GHUserSearchBuilder.Sort</exclude>
<exclude>org.kohsuke.github.GHVerifiedKey</exclude>
</excludes>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<source>8</source>
<failOnWarnings>true</failOnWarnings>
<doclint>all</doclint>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.8</version>
<extensions>true</extensions>
<configuration>
<serverId>sonatype-nexus-staging</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.9.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<useReleaseProfile>false</useReleaseProfile>
<releaseProfiles>release</releaseProfiles>
<goals>deploy</goals>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.1.1</version>
<dependencies>
<dependency>
<groupId>org.apache.bcel</groupId>
<artifactId>bcel</artifactId>
<version>6.5.0</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<annotationProcessorPath>
<groupId>org.jenkins-ci</groupId>
<artifactId>annotation-indexer</artifactId>
<version>1.12</version>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>default-test</id>
<configuration>
<excludesFile>src/test/resources/slow-or-flaky-tests.txt</excludesFile>
</configuration>
</execution>
<execution>
<id>slow-or-flaky-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<rerunFailingTestsCount>2</rerunFailingTestsCount>
<!-- There are some tests that take longer or are a little flaky. Run them here. -->
<includesFile>src/test/resources/slow-or-flaky-tests.txt</includesFile>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
<version>1.19</version>
<configuration>
<signature>
<groupId>org.codehaus.mojo.signature</groupId>
<artifactId>java18</artifactId>
<version>1.0</version>
</signature>
</configuration>
<executions>
<execution>
<id>ensure-java-1.8-class-library</id>
<phase>test</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.infradna.tool</groupId>
<artifactId>bridge-method-injector</artifactId>
<version>1.18</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>2.6.1</version>
<executions>
<execution>
<id>spotless-check</id>
<phase>process-sources</phase>
<goals>
<goal>${spotless-maven-plugin.goal}</goal>
</goals>
</execution>
</executions>
<configuration>
<java>
<eclipse>
<file>${basedir}/src/build/eclipse/formatter.xml</file>
</eclipse>
<importOrder>
<file>${basedir}/src/build/eclipse/eclipse.importorder</file>
</importOrder>
<removeUnusedImports />
<trimTrailingWhitespace />
<endWithNewline />
</java>
</configuration>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>${spotbugs-maven-plugin.version}</version>
<configuration>
<xmlOutput>true</xmlOutput>
<failOnError>${spotbugs-maven-plugin.failOnError}</failOnError>
</configuration>
<executions>
<execution>
<id>run-spotbugs</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
<dependencies>
<!-- overwrite dependency on spotbugs if you want to specify the version of spotbugs -->
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs</artifactId>
<version>${spotbugs.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.jvnet.hudson</groupId>
<artifactId>htmlunit</artifactId>
<version>2.6-hudson-2</version>
<exclusions>
<exclusion>
<!-- hides JDK DOM classes in Eclipse -->
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
</exclusions>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>com.tngtech.archunit</groupId>
<artifactId>archunit</artifactId>
<version>0.15.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>${hamcrest.version}</version>
<scope>test</scope>
</dependency>
<!-- This is needed in order to force junit4 and JTH tests to use newer hamcrest version -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>${hamcrest.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>${hamcrest.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.5.0</version>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>com.infradna.tool</groupId>
<artifactId>bridge-method-annotation</artifactId>
<version>1.18</version>
<optional>true</optional>
</dependency>
<!-- for stapler-jetty -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
<scope>test</scope>
</dependency>
<!-- for stapler-jetty -->
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.5</version>
<scope>test</scope>
</dependency>
<!-- for stapler-jetty -->
<dependency>
<groupId>org.kohsuke.stapler</groupId>
<artifactId>stapler</artifactId>
<version>1.262</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.kohsuke.stapler</groupId>
<artifactId>stapler-jetty</artifactId>
<version>1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>5.10.0.202012080955-r</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>${jjwt.suite.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${jjwt.suite.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>${jjwt.suite.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>${okio.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${okhttp3.version}</version>
<optional>true</optional>
</dependency>
<!-- This is the last version of okhttp3 that support UrlConnection -->
<!-- The class using this has been deprecated, this dependency can be remove when that class is. -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp-urlconnection</artifactId>
<version>3.12.3</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.squareup.okhttp</groupId>
<artifactId>okhttp-urlconnection</artifactId>
<version>2.7.5</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.kohsuke</groupId>
<artifactId>wordnet-random-name</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.6.28</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<version>${spotbugs.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock-jre8-standalone</artifactId>
<version>2.27.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>repo.jenkins-ci.org</id>
<url>https://repo.jenkins-ci.org/public/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>repo.jenkins-ci.org</id>
<url>https://repo.jenkins-ci.org/public/</url>
</pluginRepository>
</pluginRepositories>
<profiles>
<profile>
<id>ci-non-windows</id>
<activation>
<property>
<name>enable-ci</name>
</property>
<os>
<family>!windows</family>
</os>
</activation>
<properties>
<spotless-maven-plugin.goal>check</spotless-maven-plugin.goal>
</properties>
</profile>
<profile>
<id>ci-all</id>
<activation>
<property>
<name>enable-ci</name>
</property>
</activation>
<properties>
<jacoco.haltOnFailure>true</jacoco.haltOnFailure>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>release</id>
<properties>
<spotless-maven-plugin.goal>check</spotless-maven-plugin.goal>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<reporting>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<reportSets>
<reportSet>
<reports>
<!-- select non-aggregate reports -->
<report>report</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</plugin>
</plugins>
</reporting>
<licenses>
<license>
<name>The MIT license</name>
<url>https://www.opensource.org/licenses/mit-license.php</url>
<distribution>repo</distribution>
</license>
</licenses>
<mailingLists>
<mailingList>
<name>User List</name>
<post>github-api@googlegroups.com</post>
<archive>https://groups.google.com/forum/#!forum/github-api</archive>
</mailingList>
</mailingLists>
<developers>
<developer>
<name>Kohsuke Kawaguchi</name>
<id>kohsuke</id>
<email>kk@kohsuke.org</email>
</developer>
</developers>
</project>

View File

@@ -0,0 +1,6 @@
#Organize Import Order
# Import this file in Window -> Preferences -> Java -> Code Style -> Organize Imports -> Import...
0=
1=java
2=javax
3=\#

View File

@@ -0,0 +1,383 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="17">
<profile kind="CodeFormatterProfile" name="Java Conventions - GitHub-api" version="17">
<!-- Make various elements turn to colums when they wrap -->
<!-- Basically the only way to create this is by downloading eclipse and working in their UI -->
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="120"/>
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="120"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
</profile>
<!-- Keeping the "default" exported values for reference -->
<!--
<profile kind="CodeFormatterProfile" name="Eclipse [built-in]-Default" version="17">
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_logical_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.align_with_spaces" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_logical_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_method_body_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_additive_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_relational_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_shift_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_parameters" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_loops" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_relational_operator" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_additive_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_module_statements" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_additive_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_conditional_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_shift_operator" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines" value="2147483647"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_code_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_assignment_operator" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_arguments" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_logical_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_relational_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_tag_description" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_string_concatenation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_logical_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_shift_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_shift_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_additive_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_relational_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_string_concatenation" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="120"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
</profile>
-->
</profiles>

View File

@@ -0,0 +1,166 @@
package org.kohsuke.github;
import java.io.IOException;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
/**
* An abstract data object builder/updater.
*
* This class can be use to make a Builder that supports both batch and single property changes.
* <p>
* Batching looks like this:
* </p>
*
* <pre>
* update().someName(value).otherName(value).done()
* </pre>
* <p>
* Single changes look like this:
* </p>
*
* <pre>
* set().someName(value);
* set().otherName(value);
* </pre>
* <p>
* If {@link S} is the same as {@link R}, {@link #with(String, Object)} will commit changes after the first value change
* and return a {@link R} from {@link #done()}.
* </p>
* <p>
* If {@link S} is not the same as {@link R}, {@link #with(String, Object)} will batch together multiple changes and let
* the user call {@link #done()} when they are ready.
*
* @param <R>
* Final return type built by this builder returned when {@link #done()}} is called.
* @param <S>
* Intermediate return type for this builder returned by calls to {@link #with(String, Object)}. If {@link S}
* the same as {@link R}, this builder will commit changes after each call to {@link #with(String, Object)}.
*/
abstract class AbstractBuilder<R, S> extends GitHubInteractiveObject {
@Nonnull
private final Class<R> returnType;
private final boolean commitChangesImmediately;
@CheckForNull
private final R baseInstance;
@Nonnull
protected final Requester requester;
// TODO: Not sure how update-in-place behavior should be controlled
// However, it certainly can be controlled dynamically down to the instance level or inherited for all children of
// some
// connection.
protected boolean updateInPlace;
/**
* Creates a builder.
*
* @param root
* the GitHub instance to connect to.
* @param intermediateReturnType
* the intermediate return type of type {@link S} returned by calls to {@link #with(String, Object)}.
* Must either be equal to {@code builtReturnType} or this instance must be castable to this class. If
* not, the constructor will throw {@link IllegalArgumentException}.
* @param finalReturnType
* the final return type for built by this builder returned when {@link #done()}} is called.
* @param baseInstance
* optional instance on which to base this builder.
*/
protected AbstractBuilder(@Nonnull Class<R> finalReturnType,
@Nonnull Class<S> intermediateReturnType,
@Nonnull GitHub root,
@CheckForNull R baseInstance) {
super(root);
this.requester = root.createRequest();
this.returnType = finalReturnType;
this.commitChangesImmediately = returnType.equals(intermediateReturnType);
if (!commitChangesImmediately && !intermediateReturnType.isInstance(this)) {
throw new IllegalArgumentException(
"Argument \"intermediateReturnType\": This instance must be castable to intermediateReturnType or finalReturnType must be equal to intermediateReturnType.");
}
this.baseInstance = baseInstance;
this.updateInPlace = false;
}
/**
* Finishes an update, committing changes.
*
* This method may update-in-place or not. Either way it returns the resulting instance.
*
* @return an instance with updated current data
* @throws IOException
* if there is an I/O Exception
*/
@Nonnull
@BetaApi
@Deprecated
public R done() throws IOException {
R result;
if (updateInPlace && baseInstance != null) {
result = requester.fetchInto(baseInstance);
} else {
result = requester.fetch(returnType);
}
return result;
}
/**
* Applies a value to a name for this builder.
*
* If {@link S} is the same as {@link R}, this method will commit changes after the first value change and return a
* {@link R} from {@link #done()}.
*
* If {@link S} is not the same as {@link R}, this method will return an {@link S} and letting the caller batch
* together multiple changes and call {@link #done()} when they are ready.
*
* @param name
* the name of the field
* @param value
* the value of the field
* @return either a continuing builder or an updated data record
* @throws IOException
* if an I/O error occurs
*/
@Nonnull
@BetaApi
@Deprecated
protected S with(@Nonnull String name, Object value) throws IOException {
requester.with(name, value);
return continueOrDone();
}
/**
* Chooses whether to return a continuing builder or an updated data record
*
* If {@link S} is the same as {@link R}, this method will commit changes after the first value change and return a
* {@link R} from {@link #done()}.
*
* If {@link S} is not the same as {@link R}, this method will return an {@link S} and letting the caller batch
* together multiple changes and call {@link #done()} when they are ready.
*
* @return either a continuing builder or an updated data record
* @throws IOException
* if an I/O error occurs
*/
@Nonnull
@BetaApi
@Deprecated
protected S continueOrDone() throws IOException {
// This little bit of roughness in this base class means all inheriting builders get to create Updater and
// Setter classes from almost identical code. Creator can often be implemented with significant code reuse as
// well.
if (commitChangesImmediately) {
// These casts look strange and risky, but they they're actually guaranteed safe due to the return path
// being based on the previous comparison of class instances passed to the constructor.
return (S) done();
} else {
return (S) this;
}
}
}

View File

@@ -0,0 +1,70 @@
package org.kohsuke.github;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.net.HttpURLConnection;
/**
* Pluggable strategy to determine what to do when the API abuse limit is hit.
*
* @author Kohsuke Kawaguchi
* @see GitHubBuilder#withAbuseLimitHandler(AbuseLimitHandler) GitHubBuilder#withAbuseLimitHandler(AbuseLimitHandler)
* @see <a href="https://developer.github.com/v3/#abuse-rate-limits">documentation</a>
* @see RateLimitHandler
*/
public abstract class AbuseLimitHandler {
/**
* Called when the library encounters HTTP error indicating that the API abuse limit is reached.
*
* <p>
* Any exception thrown from this method will cause the request to fail, and the caller of github-api will receive
* an exception. If this method returns normally, another request will be attempted. For that to make sense, the
* implementation needs to wait for some time.
*
* @param e
* Exception from Java I/O layer. If you decide to fail the processing, you can throw this exception (or
* wrap this exception into another exception and throw it).
* @param uc
* Connection that resulted in an error. Useful for accessing other response headers.
* @throws IOException
* on failure
* @see <a href="https://developer.github.com/v3/#abuse-rate-limits">API documentation from GitHub</a>
* @see <a href=
* "https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits">Dealing
* with abuse rate limits</a>
*
*/
public abstract void onError(IOException e, HttpURLConnection uc) throws IOException;
/**
* Wait until the API abuse "wait time" is passed.
*/
public static final AbuseLimitHandler WAIT = new AbuseLimitHandler() {
@Override
public void onError(IOException e, HttpURLConnection uc) throws IOException {
try {
Thread.sleep(parseWaitTime(uc));
} catch (InterruptedException ex) {
throw (InterruptedIOException) new InterruptedIOException().initCause(e);
}
}
private long parseWaitTime(HttpURLConnection uc) {
String v = uc.getHeaderField("Retry-After");
if (v == null)
return 60 * 1000; // can't tell, return 1 min
return Math.max(1000, Long.parseLong(v) * 1000);
}
};
/**
* Fail immediately.
*/
public static final AbuseLimitHandler FAIL = new AbuseLimitHandler() {
@Override
public void onError(IOException e, HttpURLConnection uc) throws IOException {
throw (IOException) new IOException("Abuse limit reached").initCause(e);
}
};
}

View File

@@ -1,17 +0,0 @@
package org.kohsuke.github;
/**
* Different API versions.
*
* @author Kohsuke Kawaguchi
*/
enum ApiVersion {
V2("https://github.com/api/v2/json"),
V3("https://api.github.com");
final String url;
ApiVersion(String url) {
this.url = url;
}
}

View File

@@ -0,0 +1,18 @@
package org.kohsuke.github;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Indicates that the method/class/etc marked is a beta implementation of an sdk feature.
* <p>
* These APIs are subject to change and not a part of the backward compatibility commitment. Always used in conjunction
* with 'deprecated' to raise awareness to clients.
* </p>
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface BetaApi {
}

View File

@@ -1,31 +0,0 @@
/*
* The MIT License
*
* Copyright (c) 2010, Kohsuke Kawaguchi
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package org.kohsuke.github;
/**
* @author Kohsuke Kawaguchi
*/
class DeleteToken {
public String delete_token;
}

View File

@@ -0,0 +1,17 @@
package org.kohsuke.github;
import java.util.Locale;
/**
* This was added during preview API period but it has changed since then.
*
* @author Kohsuke Kawaguchi
*/
@Deprecated
public enum EnforcementLevel {
OFF, NON_ADMINS, EVERYONE;
public String toString() {
return name().toLowerCase(Locale.ENGLISH);
}
}

View File

@@ -0,0 +1,292 @@
package org.kohsuke.github;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import java.util.Map;
import static org.kohsuke.github.internal.Previews.MACHINE_MAN;
/**
* A Github App.
*
* @author Paulo Miguel Almeida
* @see GitHub#getApp() GitHub#getApp()
*/
public class GHApp extends GHObject {
private GHUser owner;
private String name;
private String description;
private String externalUrl;
private Map<String, String> permissions;
private List<GHEvent> events;
private long installationsCount;
private String htmlUrl;
/**
* Gets owner.
*
* @return the owner
*/
public GHUser getOwner() {
return owner;
}
/**
* Sets owner.
*
* @param owner
* the owner
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setOwner(GHUser owner) {
this.owner = owner;
}
/**
* Gets name.
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Sets name.
*
* @param name
* the name
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setName(String name) {
this.name = name;
}
/**
* Gets description.
*
* @return the description
*/
public String getDescription() {
return description;
}
/**
* Sets description.
*
* @param description
* the description
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setDescription(String description) {
this.description = description;
}
/**
* Gets external url.
*
* @return the external url
*/
public String getExternalUrl() {
return externalUrl;
}
/**
* Sets external url.
*
* @param externalUrl
* the external url
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setExternalUrl(String externalUrl) {
this.externalUrl = externalUrl;
}
/**
* Gets events.
*
* @return the events
*/
public List<GHEvent> getEvents() {
return events;
}
/**
* Sets events.
*
* @param events
* the events
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setEvents(List<GHEvent> events) {
this.events = events;
}
/**
* Gets installations count.
*
* @return the installations count
*/
public long getInstallationsCount() {
return installationsCount;
}
/**
* Sets installations count.
*
* @param installationsCount
* the installations count
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setInstallationsCount(long installationsCount) {
this.installationsCount = installationsCount;
}
public URL getHtmlUrl() {
return GitHubClient.parseURL(htmlUrl);
}
/**
* Gets permissions.
*
* @return the permissions
*/
public Map<String, String> getPermissions() {
return permissions;
}
/**
* Sets permissions.
*
* @param permissions
* the permissions
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setPermissions(Map<String, String> permissions) {
this.permissions = permissions;
}
GHApp wrapUp(GitHub root) {
this.root = root;
return this;
}
/**
* Obtains all the installations associated with this app.
* <p>
* You must use a JWT to access this endpoint.
*
* @return a list of App installations
* @see <a href="https://developer.github.com/v3/apps/#list-installations">List installations</a>
*/
@Preview(MACHINE_MAN)
@Deprecated
public PagedIterable<GHAppInstallation> listInstallations() {
return root.createRequest()
.withPreview(MACHINE_MAN)
.withUrlPath("/app/installations")
.toIterable(GHAppInstallation[].class, item -> item.wrapUp(root));
}
/**
* Obtain an installation associated with this app.
* <p>
* You must use a JWT to access this endpoint.
*
* @param id
* Installation Id
* @return a GHAppInstallation
* @throws IOException
* on error
* @see <a href="https://developer.github.com/v3/apps/#get-an-installation">Get an installation</a>
*/
@Preview(MACHINE_MAN)
@Deprecated
public GHAppInstallation getInstallationById(long id) throws IOException {
return root.createRequest()
.withPreview(MACHINE_MAN)
.withUrlPath(String.format("/app/installations/%d", id))
.fetch(GHAppInstallation.class)
.wrapUp(root);
}
/**
* Obtain an organization installation associated with this app.
* <p>
* You must use a JWT to access this endpoint.
*
* @param name
* Organization name
* @return a GHAppInstallation
* @throws IOException
* on error
* @see <a href="https://developer.github.com/v3/apps/#get-an-organization-installation">Get an organization
* installation</a>
*/
@Preview(MACHINE_MAN)
@Deprecated
public GHAppInstallation getInstallationByOrganization(String name) throws IOException {
return root.createRequest()
.withPreview(MACHINE_MAN)
.withUrlPath(String.format("/orgs/%s/installation", name))
.fetch(GHAppInstallation.class)
.wrapUp(root);
}
/**
* Obtain an repository installation associated with this app.
* <p>
* You must use a JWT to access this endpoint.
*
* @param ownerName
* Organization or user name
* @param repositoryName
* Repository name
* @return a GHAppInstallation
* @throws IOException
* on error
* @see <a href="https://developer.github.com/v3/apps/#get-a-repository-installation">Get a repository
* installation</a>
*/
@Preview(MACHINE_MAN)
@Deprecated
public GHAppInstallation getInstallationByRepository(String ownerName, String repositoryName) throws IOException {
return root.createRequest()
.withPreview(MACHINE_MAN)
.withUrlPath(String.format("/repos/%s/%s/installation", ownerName, repositoryName))
.fetch(GHAppInstallation.class)
.wrapUp(root);
}
/**
* Obtain a user installation associated with this app.
* <p>
* You must use a JWT to access this endpoint.
*
* @param name
* user name
* @return a GHAppInstallation
* @throws IOException
* on error
* @see <a href="https://developer.github.com/v3/apps/#get-a-user-installation">Get a user installation</a>
*/
@Preview(MACHINE_MAN)
@Deprecated
public GHAppInstallation getInstallationByUser(String name) throws IOException {
return root.createRequest()
.withPreview(MACHINE_MAN)
.withUrlPath(String.format("/users/%s/installation", name))
.fetch(GHAppInstallation.class)
.wrapUp(root);
}
}

View File

@@ -0,0 +1,90 @@
package org.kohsuke.github;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.kohsuke.github.internal.Previews.MACHINE_MAN;
/**
* Creates a access token for a GitHub App Installation
*
* @author Paulo Miguel Almeida
* @see GHAppInstallation#createToken(Map) GHAppInstallation#createToken(Map)
* @see GHAppInstallation#createToken() GHAppInstallation#createToken()
*/
public class GHAppCreateTokenBuilder extends GitHubInteractiveObject {
protected final Requester builder;
private final String apiUrlTail;
@BetaApi
@Deprecated
GHAppCreateTokenBuilder(GitHub root, String apiUrlTail) {
this.root = root;
this.apiUrlTail = apiUrlTail;
this.builder = root.createRequest();
}
@BetaApi
@Deprecated
GHAppCreateTokenBuilder(GitHub root, String apiUrlTail, Map<String, GHPermissionType> permissions) {
this(root, apiUrlTail);
permissions(permissions);
}
/**
* By default the installation token has access to all repositories that the installation can access. To restrict
* the access to specific repositories, you can provide the repository_ids when creating the token. When you omit
* repository_ids, the response does not contain neither the repositories nor the permissions key.
*
* @param repositoryIds
* Array containing the repositories Ids
* @return a GHAppCreateTokenBuilder
*/
@BetaApi
@Deprecated
public GHAppCreateTokenBuilder repositoryIds(List<Long> repositoryIds) {
this.builder.with("repository_ids", repositoryIds);
return this;
}
/**
* Set the permissions granted to the access token. The permissions object includes the permission names and their
* access type.
*
* @param permissions
* Map containing the permission names and types.
* @return a GHAppCreateTokenBuilder
*/
@BetaApi
@Deprecated
public GHAppCreateTokenBuilder permissions(Map<String, GHPermissionType> permissions) {
Map<String, String> retMap = new HashMap<>();
for (Map.Entry<String, GHPermissionType> entry : permissions.entrySet()) {
retMap.put(entry.getKey(), GitHubRequest.transformEnum(entry.getValue()));
}
builder.with("permissions", retMap);
return this;
}
/**
* Creates an app token with all the parameters.
* <p>
* You must use a JWT to access this endpoint.
*
* @return a GHAppInstallationToken
* @throws IOException
* on error
*/
@Preview(MACHINE_MAN)
@Deprecated
public GHAppInstallationToken create() throws IOException {
return builder.method("POST")
.withPreview(MACHINE_MAN)
.withUrlPath(apiUrlTail)
.fetch(GHAppInstallationToken.class)
.wrapUp(root);
}
}

View File

@@ -0,0 +1,368 @@
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.Map;
import static org.kohsuke.github.internal.Previews.GAMBIT;
import static org.kohsuke.github.internal.Previews.MACHINE_MAN;
/**
* A Github App Installation.
*
* @author Paulo Miguel Almeida
* @see GHApp#listInstallations() GHApp#listInstallations()
* @see GHApp#getInstallationById(long) GHApp#getInstallationById(long)
* @see GHApp#getInstallationByOrganization(String) GHApp#getInstallationByOrganization(String)
* @see GHApp#getInstallationByRepository(String, String) GHApp#getInstallationByRepository(String, String)
* @see GHApp#getInstallationByUser(String) GHApp#getInstallationByUser(String)
*/
public class GHAppInstallation extends GHObject {
private GHUser account;
@JsonProperty("access_tokens_url")
private String accessTokenUrl;
@JsonProperty("repositories_url")
private String repositoriesUrl;
@JsonProperty("app_id")
private long appId;
@JsonProperty("target_id")
private long targetId;
@JsonProperty("target_type")
private GHTargetType targetType;
private Map<String, GHPermissionType> permissions;
private List<GHEvent> events;
@JsonProperty("single_file_name")
private String singleFileName;
@JsonProperty("repository_selection")
private GHRepositorySelection repositorySelection;
private String htmlUrl;
public URL getHtmlUrl() {
return GitHubClient.parseURL(htmlUrl);
}
/**
* Gets root.
*
* @return the root
*/
public GitHub getRoot() {
return root;
}
/**
* Sets root.
*
* @param root
* the root
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setRoot(GitHub root) {
this.root = root;
}
/**
* Gets account.
*
* @return the account
*/
public GHUser getAccount() {
return account;
}
/**
* Sets account.
*
* @param account
* the account
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setAccount(GHUser account) {
this.account = account;
}
/**
* Gets access token url.
*
* @return the access token url
*/
public String getAccessTokenUrl() {
return accessTokenUrl;
}
/**
* Sets access token url.
*
* @param accessTokenUrl
* the access token url
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setAccessTokenUrl(String accessTokenUrl) {
this.accessTokenUrl = accessTokenUrl;
}
/**
* Gets repositories url.
*
* @return the repositories url
*/
public String getRepositoriesUrl() {
return repositoriesUrl;
}
/**
* List repositories that this app installation can access.
*
* @return the paged iterable
*/
@Preview(MACHINE_MAN)
@Deprecated
public PagedSearchIterable<GHRepository> listRepositories() {
GitHubRequest request;
try {
request = root.createRequest().withPreview(MACHINE_MAN).withUrlPath("/installation/repositories").build();
} catch (MalformedURLException e) {
throw new GHException("", e);
}
return new PagedSearchIterable<>(root, request, GHAppInstallationRepositoryResult.class);
}
private static class GHAppInstallationRepositoryResult extends SearchResult<GHRepository> {
private GHRepository[] repositories;
@Override
GHRepository[] getItems(GitHub root) {
for (GHRepository item : repositories)
item.wrap(root);
return repositories;
}
}
/**
* Sets repositories url.
*
* @param repositoriesUrl
* the repositories url
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setRepositoriesUrl(String repositoriesUrl) {
this.repositoriesUrl = repositoriesUrl;
}
/**
* Gets app id.
*
* @return the app id
*/
public long getAppId() {
return appId;
}
/**
* Sets app id.
*
* @param appId
* the app id
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setAppId(long appId) {
this.appId = appId;
}
/**
* Gets target id.
*
* @return the target id
*/
public long getTargetId() {
return targetId;
}
/**
* Sets target id.
*
* @param targetId
* the target id
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setTargetId(long targetId) {
this.targetId = targetId;
}
/**
* Gets target type.
*
* @return the target type
*/
public GHTargetType getTargetType() {
return targetType;
}
/**
* Sets target type.
*
* @param targetType
* the target type
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setTargetType(GHTargetType targetType) {
this.targetType = targetType;
}
/**
* Gets permissions.
*
* @return the permissions
*/
public Map<String, GHPermissionType> getPermissions() {
return permissions;
}
/**
* Sets permissions.
*
* @param permissions
* the permissions
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setPermissions(Map<String, GHPermissionType> permissions) {
this.permissions = permissions;
}
/**
* Gets events.
*
* @return the events
*/
public List<GHEvent> getEvents() {
return events;
}
/**
* Sets events.
*
* @param events
* the events
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setEvents(List<GHEvent> events) {
this.events = events;
}
/**
* Gets single file name.
*
* @return the single file name
*/
public String getSingleFileName() {
return singleFileName;
}
/**
* Sets single file name.
*
* @param singleFileName
* the single file name
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setSingleFileName(String singleFileName) {
this.singleFileName = singleFileName;
}
/**
* Gets repository selection.
*
* @return the repository selection
*/
public GHRepositorySelection getRepositorySelection() {
return repositorySelection;
}
/**
* Sets repository selection.
*
* @param repositorySelection
* the repository selection
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setRepositorySelection(GHRepositorySelection repositorySelection) {
this.repositorySelection = repositorySelection;
}
GHAppInstallation wrapUp(GitHub root) {
this.root = root;
return this;
}
/**
* Delete a Github App installation
* <p>
* You must use a JWT to access this endpoint.
*
* @throws IOException
* on error
* @see <a href="https://developer.github.com/v3/apps/#delete-an-installation">Delete an installation</a>
*/
@Preview(GAMBIT)
@Deprecated
public void deleteInstallation() throws IOException {
root.createRequest()
.method("DELETE")
.withPreview(GAMBIT)
.withUrlPath(String.format("/app/installations/%d", getId()))
.send();
}
/**
* Starts a builder that creates a new App Installation Token.
*
* <p>
* You use the returned builder to set various properties, then call {@link GHAppCreateTokenBuilder#create()} to
* finally create an access token.
*
* @param permissions
* map of permissions for the created token
* @return a GHAppCreateTokenBuilder instance
* @deprecated Use {@link GHAppInstallation#createToken()} instead.
*/
@BetaApi
@Deprecated
public GHAppCreateTokenBuilder createToken(Map<String, GHPermissionType> permissions) {
return new GHAppCreateTokenBuilder(root,
String.format("/app/installations/%d/access_tokens", getId()),
permissions);
}
/**
* Starts a builder that creates a new App Installation Token.
*
* <p>
* You use the returned builder to set various properties, then call {@link GHAppCreateTokenBuilder#create()} to
* finally create an access token.
*
* @return a GHAppCreateTokenBuilder instance
*/
@BetaApi
@Deprecated
public GHAppCreateTokenBuilder createToken() {
return new GHAppCreateTokenBuilder(root, String.format("/app/installations/%d/access_tokens", getId()));
}
}

View File

@@ -0,0 +1,150 @@
package org.kohsuke.github;
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* A Github App Installation Token.
*
* @author Paulo Miguel Almeida
* @see GHAppInstallation#createToken(Map) GHAppInstallation#createToken(Map)
*/
public class GHAppInstallationToken extends GitHubInteractiveObject {
private String token;
protected String expires_at;
private Map<String, String> permissions;
private List<GHRepository> repositories;
private GHRepositorySelection repositorySelection;
/**
* Gets root.
*
* @return the root
*/
public GitHub getRoot() {
return root;
}
/**
* Sets root.
*
* @param root
* the root
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setRoot(GitHub root) {
this.root = root;
}
/**
* Gets permissions.
*
* @return the permissions
*/
public Map<String, String> getPermissions() {
return permissions;
}
/**
* Sets permissions.
*
* @param permissions
* the permissions
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setPermissions(Map<String, String> permissions) {
this.permissions = permissions;
}
/**
* Gets token.
*
* @return the token
*/
public String getToken() {
return token;
}
/**
* Sets token.
*
* @param token
* the token
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setToken(String token) {
this.token = token;
}
/**
* Gets repositories.
*
* @return the repositories
*/
public List<GHRepository> getRepositories() {
return repositories;
}
/**
* Sets repositories.
*
* @param repositories
* the repositories
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setRepositories(List<GHRepository> repositories) {
this.repositories = repositories;
}
/**
* Gets repository selection.
*
* @return the repository selection
*/
public GHRepositorySelection getRepositorySelection() {
return repositorySelection;
}
/**
* Sets repository selection.
*
* @param repositorySelection
* the repository selection
* @deprecated Do not use this method. It was added due to incomplete understanding of Jackson binding.
*/
@Deprecated
public void setRepositorySelection(GHRepositorySelection repositorySelection) {
this.repositorySelection = repositorySelection;
}
/**
* Gets expires at.
*
* @return date when this token expires
* @throws IOException
* on error
*/
@WithBridgeMethods(value = String.class, adapterMethod = "expiresAtStr")
public Date getExpiresAt() throws IOException {
return GitHubClient.parseDate(expires_at);
}
@SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "Bridge method of getExpiresAt")
private Object expiresAtStr(Date id, Class type) {
return expires_at;
}
GHAppInstallationToken wrapUp(GitHub root) {
this.root = root;
return this;
}
}

View File

@@ -0,0 +1,175 @@
package org.kohsuke.github;
import java.io.IOException;
import java.net.URL;
/**
* Asset in a release.
*
* @see GHRelease#getAssets() GHRelease#getAssets()
*/
public class GHAsset extends GHObject {
GHRepository owner;
private String name;
private String label;
private String state;
private String content_type;
private long size;
private long download_count;
private String browser_download_url;
/**
* Gets content type.
*
* @return the content type
*/
public String getContentType() {
return content_type;
}
/**
* Sets content type.
*
* @param contentType
* the content type
* @throws IOException
* the io exception
*/
public void setContentType(String contentType) throws IOException {
edit("content_type", contentType);
this.content_type = contentType;
}
/**
* Gets download count.
*
* @return the download count
*/
public long getDownloadCount() {
return download_count;
}
/**
* Gets label.
*
* @return the label
*/
public String getLabel() {
return label;
}
/**
* Sets label.
*
* @param label
* the label
* @throws IOException
* the io exception
*/
public void setLabel(String label) throws IOException {
edit("label", label);
this.label = label;
}
/**
* Gets name.
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Gets owner.
*
* @return the owner
*/
public GHRepository getOwner() {
return owner;
}
/**
* Gets root.
*
* @return the root
*/
public GitHub getRoot() {
return root;
}
/**
* Gets size.
*
* @return the size
*/
public long getSize() {
return size;
}
/**
* Gets state.
*
* @return the state
*/
public String getState() {
return state;
}
/**
* @deprecated This object has no HTML URL.
*/
@Override
public URL getHtmlUrl() {
return null;
}
/**
* Gets browser download url.
*
* @return the browser download url
*/
public String getBrowserDownloadUrl() {
return browser_download_url;
}
private void edit(String key, Object value) throws IOException {
root.createRequest().with(key, value).method("PATCH").withUrlPath(getApiRoute()).send();
}
/**
* Delete.
*
* @throws IOException
* the io exception
*/
public void delete() throws IOException {
root.createRequest().method("DELETE").withUrlPath(getApiRoute()).send();
}
private String getApiRoute() {
return "/repos/" + owner.getOwnerName() + "/" + owner.getName() + "/releases/assets/" + getId();
}
GHAsset wrap(GHRelease release) {
this.owner = release.getOwner();
this.root = owner.root;
return this;
}
/**
* Wrap gh asset [ ].
*
* @param assets
* the assets
* @param release
* the release
* @return the gh asset [ ]
*/
public static GHAsset[] wrap(GHAsset[] assets, GHRelease release) {
for (GHAsset aTo : assets) {
aTo.wrap(release);
}
return assets;
}
}

View File

@@ -0,0 +1,169 @@
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.net.URL;
import java.util.Collection;
import java.util.List;
/**
* Generated OAuth token
*
* @author janinko
* @see GitHub#createToken(Collection, String, String) GitHub#createToken(Collection, String, String)
* @see <a href="http://developer.github.com/v3/oauth/#create-a-new-authorization">API documentation</a>
*/
public class GHAuthorization extends GHObject {
public static final String USER = "user";
public static final String USER_EMAIL = "user:email";
public static final String USER_FOLLOW = "user:follow";
public static final String PUBLIC_REPO = "public_repo";
public static final String REPO = "repo";
public static final String REPO_STATUS = "repo:status";
public static final String DELETE_REPO = "delete_repo";
public static final String NOTIFICATIONS = "notifications";
public static final String GIST = "gist";
public static final String READ_HOOK = "read:repo_hook";
public static final String WRITE_HOOK = "write:repo_hook";
public static final String AMIN_HOOK = "admin:repo_hook";
public static final String READ_ORG = "read:org";
public static final String WRITE_ORG = "write:org";
public static final String ADMIN_ORG = "admin:org";
public static final String READ_KEY = "read:public_key";
public static final String WRITE_KEY = "write:public_key";
public static final String ADMIN_KEY = "admin:public_key";
private List<String> scopes;
private String token;
private String token_last_eight;
private String hashed_token;
private App app;
private String note;
private String note_url;
private String fingerprint;
// TODO add some user class for https://developer.github.com/v3/oauth_authorizations/#check-an-authorization ?
// private GHUser user;
/**
* Gets root.
*
* @return the root
*/
public GitHub getRoot() {
return root;
}
/**
* Gets scopes.
*
* @return the scopes
*/
public List<String> getScopes() {
return scopes;
}
/**
* Gets token.
*
* @return the token
*/
public String getToken() {
return token;
}
/**
* Gets token last eight.
*
* @return the token last eight
*/
public String getTokenLastEight() {
return token_last_eight;
}
/**
* Gets hashed token.
*
* @return the hashed token
*/
public String getHashedToken() {
return hashed_token;
}
/**
* Gets app url.
*
* @return the app url
*/
public URL getAppUrl() {
return GitHubClient.parseURL(app.url);
}
/**
* Gets app name.
*
* @return the app name
*/
public String getAppName() {
return app.name;
}
/**
* Gets api url.
*
* @return the api url
* @deprecated use {@link #getUrl()}
*/
@Deprecated
@SuppressFBWarnings(value = "NM_CONFUSING", justification = "It's a part of the library API, cannot be changed")
public URL getApiURL() {
return getUrl();
}
/**
* @deprecated This object has no HTML URL.
*/
@Override
public URL getHtmlUrl() {
return null;
}
/**
* Gets note.
*
* @return the note
*/
public String getNote() {
return note;
}
/**
* Gets note url.
*
* @return the note url
*/
public URL getNoteUrl() {
return GitHubClient.parseURL(note_url);
}
/**
* Gets fingerprint.
*
* @return the fingerprint
*/
public String getFingerprint() {
return fingerprint;
}
GHAuthorization wrap(GitHub root) {
this.root = root;
return this;
}
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD" },
justification = "JSON API")
private static class App {
private String url;
private String name;
// private String client_id; not yet used
}
}

View File

@@ -0,0 +1,83 @@
package org.kohsuke.github;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.Base64;
/**
* The type GHBlob.
*
* @author Kanstantsin Shautsou
* @author Kohsuke Kawaguchi
* @see GHTreeEntry#asBlob() GHTreeEntry#asBlob()
* @see GHRepository#getBlob(String) GHRepository#getBlob(String)
* @see <a href="https://developer.github.com/v3/git/blobs/#get-a-blob">Get a blob</a>
*/
public class GHBlob {
private String content, encoding, url, sha;
private long size;
/**
* Gets url.
*
* @return API URL of this blob.
*/
public URL getUrl() {
return GitHubClient.parseURL(url);
}
/**
* Gets sha.
*
* @return the sha
*/
public String getSha() {
return sha;
}
/**
* Gets size.
*
* @return Number of bytes in this blob.
*/
public long getSize() {
return size;
}
/**
* Gets encoding.
*
* @return the encoding
*/
public String getEncoding() {
return encoding;
}
/**
* Gets content.
*
* @return Encoded content. You probably want {@link #read()}
*/
public String getContent() {
return content;
}
/**
* Read input stream.
*
* @return the actual bytes of the blob.
*/
public InputStream read() {
if (encoding.equals("base64")) {
try {
Base64.Decoder decoder = Base64.getMimeDecoder();
return new ByteArrayInputStream(decoder.decode(content));
} catch (IllegalArgumentException e) {
throw new AssertionError(e); // US-ASCII is mandatory
}
}
throw new UnsupportedOperationException("Unrecognized encoding: " + encoding);
}
}

View File

@@ -0,0 +1,59 @@
package org.kohsuke.github;
import java.io.IOException;
import java.util.Base64;
/**
* Builder pattern for creating a new blob. Based on https://developer.github.com/v3/git/blobs/#create-a-blob
*/
public class GHBlobBuilder {
private final GHRepository repo;
private final Requester req;
GHBlobBuilder(GHRepository repo) {
this.repo = repo;
req = repo.root.createRequest();
}
/**
* Configures a blob with the specified text {@code content}.
*
* @param content
* string text of the blob
* @return a GHBlobBuilder
*/
public GHBlobBuilder textContent(String content) {
req.with("content", content);
req.with("encoding", "utf-8");
return this;
}
/**
* Configures a blob with the specified binary {@code content}.
*
* @param content
* byte array of the blob
* @return a GHBlobBuilder
*/
public GHBlobBuilder binaryContent(byte[] content) {
String base64Content = Base64.getEncoder().encodeToString(content);
req.with("content", base64Content);
req.with("encoding", "base64");
return this;
}
private String getApiTail() {
return String.format("/repos/%s/%s/git/blobs", repo.getOwnerName(), repo.getName());
}
/**
* Creates a blob based on the parameters specified thus far.
*
* @return a GHBlob
* @throws IOException
* if the blob cannot be created.
*/
public GHBlob create() throws IOException {
return req.method("POST").withUrlPath(getApiTail()).fetch(GHBlob.class);
}
}

View File

@@ -0,0 +1,240 @@
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.kohsuke.github.internal.Previews;
import java.io.IOException;
import java.net.URL;
import java.util.Collection;
import java.util.Objects;
import javax.annotation.CheckForNull;
/**
* A branch in a repository.
*
* @author Yusuke Kokubo
*/
@SuppressFBWarnings(
value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD",
"URF_UNREAD_FIELD" },
justification = "JSON API")
public class GHBranch extends GitHubInteractiveObject {
private GHRepository owner;
private String name;
private Commit commit;
@JsonProperty("protected")
private boolean protection;
private String protection_url;
@JsonCreator
GHBranch(@JsonProperty(value = "name", required = true) String name) throws Exception {
Objects.requireNonNull(name);
this.name = name;
}
/**
* The type Commit.
*/
public static class Commit {
String sha;
@SuppressFBWarnings(value = "UUF_UNUSED_FIELD", justification = "We don't provide it in API now")
String url;
}
/**
* Gets root.
*
* @return the root
*/
public GitHub getRoot() {
return root;
}
/**
* Gets owner.
*
* @return the repository that this branch is in.
*/
public GHRepository getOwner() {
return owner;
}
/**
* Gets name.
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Is protected boolean.
*
* @return true if the push to this branch is restricted via branch protection.
*/
@Preview(Previews.LUKE_CAGE)
@Deprecated
public boolean isProtected() {
return protection;
}
/**
* Gets protection url.
*
* @return API URL that deals with the protection of this branch.
*/
@Preview(Previews.LUKE_CAGE)
@Deprecated
public URL getProtectionUrl() {
return GitHubClient.parseURL(protection_url);
}
/**
* Gets protection.
*
* @return the protection
* @throws IOException
* the io exception
*/
@Preview(Previews.LUKE_CAGE)
@Deprecated
public GHBranchProtection getProtection() throws IOException {
return root.createRequest()
.withPreview(Previews.LUKE_CAGE)
.setRawUrlPath(protection_url)
.fetch(GHBranchProtection.class)
.wrap(this);
}
/**
* Gets sha 1.
*
* @return The SHA1 of the commit that this branch currently points to.
*/
public String getSHA1() {
return commit.sha;
}
/**
* Disables branch protection and allows anyone with push access to push changes.
*
* @throws IOException
* if disabling protection fails
*/
public void disableProtection() throws IOException {
root.createRequest().method("DELETE").setRawUrlPath(protection_url).send();
}
/**
* Enables branch protection to control what commit statuses are required to push.
*
* @return GHBranchProtectionBuilder for enabling protection
* @see GHCommitStatus#getContext() GHCommitStatus#getContext()
*/
@Preview(Previews.LUKE_CAGE)
@Deprecated
public GHBranchProtectionBuilder enableProtection() {
return new GHBranchProtectionBuilder(this);
}
/**
* Enable protection.
*
* @param level
* the level
* @param contexts
* the contexts
* @throws IOException
* the io exception
*/
// backward compatibility with previous signature
@Deprecated
public void enableProtection(EnforcementLevel level, Collection<String> contexts) throws IOException {
switch (level) {
case OFF :
disableProtection();
break;
case NON_ADMINS :
case EVERYONE :
enableProtection().addRequiredChecks(contexts)
.includeAdmins(level == EnforcementLevel.EVERYONE)
.enable();
break;
}
}
/**
* Merge a branch into this branch.
*
* @param headBranch
* the branch whose head will be merged
*
* @param commitMessage
* the commit message
*
* @return the merge {@link GHCommit} created, or {@code null} if the base already contains the head (nothing to
* merge).
*
* @throws IOException
* if merging fails
*/
@CheckForNull
public GHCommit merge(GHBranch headBranch, String commitMessage) throws IOException {
return merge(headBranch.getName(), commitMessage);
}
/**
* Merge a ref into this branch.
*
* @param head
* the ref name that will be merged into this branch. Follows the usual ref naming rules, could be a
* branch name, tag, or commit sha.
*
* @param commitMessage
* the commit message
*
* @return the merge {@link GHCommit} created, or {@code null} if the base already contains the head (nothing to
* merge).
*
* @throws IOException
* if merging fails
*/
@CheckForNull
public GHCommit merge(String head, String commitMessage) throws IOException {
GHCommit result = root.createRequest()
.withUrlPath(owner.getApiTailUrl("merges"))
.method("POST")
.with("commit_message", commitMessage)
.with("base", this.name)
.with("head", head)
.fetch(GHCommit.class);
if (result != null) {
result.wrapUp(owner);
}
return result;
}
String getApiRoute() {
return owner.getApiTailUrl("/branches/" + name);
}
@Override
public String toString() {
final String url = owner != null ? owner.getUrl().toString() : "unknown";
return "Branch:" + name + " in " + url;
}
GHBranch wrap(GHRepository repo) {
this.owner = repo;
this.root = repo.root;
return this;
}
}

View File

@@ -0,0 +1,350 @@
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JsonProperty;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.util.Collection;
import static org.kohsuke.github.internal.Previews.ZZZAX;
/**
* The type GHBranchProtection.
*
* @see <a href="https://docs.github.com/en/rest/reference/repos#get-branch-protection">GitHub Branch Protection</a>
*/
@SuppressFBWarnings(
value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD",
"URF_UNREAD_FIELD" },
justification = "JSON API")
public class GHBranchProtection extends GitHubInteractiveObject {
private static final String REQUIRE_SIGNATURES_URI = "/required_signatures";
@JsonProperty
private EnforceAdmins enforceAdmins;
@JsonProperty("required_pull_request_reviews")
private RequiredReviews requiredReviews;
@JsonProperty
private RequiredStatusChecks requiredStatusChecks;
@JsonProperty
private Restrictions restrictions;
@JsonProperty
private String url;
/**
* Enabled signed commits.
*
* @throws IOException
* the io exception
*/
@Preview(ZZZAX)
@Deprecated
public void enabledSignedCommits() throws IOException {
requester().method("POST").withUrlPath(url + REQUIRE_SIGNATURES_URI).fetch(RequiredSignatures.class);
}
/**
* Disable signed commits.
*
* @throws IOException
* the io exception
*/
@Preview(ZZZAX)
@Deprecated
public void disableSignedCommits() throws IOException {
requester().method("DELETE").withUrlPath(url + REQUIRE_SIGNATURES_URI).send();
}
/**
* Gets enforce admins.
*
* @return the enforce admins
*/
public EnforceAdmins getEnforceAdmins() {
return enforceAdmins;
}
/**
* Gets required reviews.
*
* @return the required reviews
*/
public RequiredReviews getRequiredReviews() {
return requiredReviews;
}
/**
* Gets required signatures.
*
* @return the required signatures
* @throws IOException
* the io exception
*/
@Preview(ZZZAX)
@Deprecated
public boolean getRequiredSignatures() throws IOException {
return requester().withUrlPath(url + REQUIRE_SIGNATURES_URI).fetch(RequiredSignatures.class).enabled;
}
/**
* Gets required status checks.
*
* @return the required status checks
*/
public RequiredStatusChecks getRequiredStatusChecks() {
return requiredStatusChecks;
}
/**
* Gets restrictions.
*
* @return the restrictions
*/
public Restrictions getRestrictions() {
return restrictions;
}
/**
* Gets url.
*
* @return the url
*/
public String getUrl() {
return url;
}
GHBranchProtection wrap(GHBranch branch) {
this.root = branch.getRoot();
return this;
}
private Requester requester() {
return root.createRequest().withPreview(ZZZAX);
}
/**
* The type EnforceAdmins.
*/
public static class EnforceAdmins {
@JsonProperty
private boolean enabled;
@JsonProperty
private String url;
/**
* Gets url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Is enabled boolean.
*
* @return the boolean
*/
public boolean isEnabled() {
return enabled;
}
}
/**
* The type RequiredReviews.
*/
public static class RequiredReviews {
@JsonProperty("dismissal_restrictions")
private Restrictions dismissalRestriction;
private boolean dismissStaleReviews;
private boolean requireCodeOwnerReviews;
@JsonProperty("required_approving_review_count")
private int requiredReviewers;
@JsonProperty
private String url;
/**
* Gets dismissal restrictions.
*
* @return the dismissal restrictions
*/
public Restrictions getDismissalRestrictions() {
return dismissalRestriction;
}
/**
* Gets url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Is dismiss stale reviews boolean.
*
* @return the boolean
*/
public boolean isDismissStaleReviews() {
return dismissStaleReviews;
}
/**
* Is require code owner reviews boolean.
*
* @return the boolean
*/
public boolean isRequireCodeOwnerReviews() {
return requireCodeOwnerReviews;
}
/**
* Gets required reviewers.
*
* @return the required reviewers
*/
public int getRequiredReviewers() {
return requiredReviewers;
}
}
private static class RequiredSignatures {
@JsonProperty
private boolean enabled;
@JsonProperty
private String url;
/**
* Gets url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Is enabled boolean.
*
* @return the boolean
*/
public boolean isEnabled() {
return enabled;
}
}
/**
* The type RequiredStatusChecks.
*/
public static class RequiredStatusChecks {
@JsonProperty
private Collection<String> contexts;
@JsonProperty
private boolean strict;
@JsonProperty
private String url;
/**
* Gets contexts.
*
* @return the contexts
*/
public Collection<String> getContexts() {
return contexts;
}
/**
* Gets url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Is requires branch up to date boolean.
*
* @return the boolean
*/
public boolean isRequiresBranchUpToDate() {
return strict;
}
}
/**
* The type Restrictions.
*/
public static class Restrictions {
@JsonProperty
private Collection<GHTeam> teams;
private String teamsUrl;
@JsonProperty
private String url;
@JsonProperty
private Collection<GHUser> users;
private String usersUrl;
/**
* Gets teams.
*
* @return the teams
*/
public Collection<GHTeam> getTeams() {
return teams;
}
/**
* Gets teams url.
*
* @return the teams url
*/
public String getTeamsUrl() {
return teamsUrl;
}
/**
* Gets url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Gets users.
*
* @return the users
*/
public Collection<GHUser> getUsers() {
return users;
}
/**
* Gets users url.
*
* @return the users url
*/
public String getUsersUrl() {
return usersUrl;
}
}
}

View File

@@ -0,0 +1,368 @@
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static org.kohsuke.github.internal.Previews.LUKE_CAGE;
/**
* Builder to configure the branch protection settings.
*
* @see GHBranch#enableProtection() GHBranch#enableProtection()
*/
@SuppressFBWarnings(
value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD",
"URF_UNREAD_FIELD" },
justification = "JSON API")
public class GHBranchProtectionBuilder {
private final GHBranch branch;
private boolean enforceAdmins;
private Map<String, Object> prReviews;
private Restrictions restrictions;
private StatusChecks statusChecks;
GHBranchProtectionBuilder(GHBranch branch) {
this.branch = branch;
}
/**
* Add required checks gh branch protection builder.
*
* @param checks
* the checks
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder addRequiredChecks(Collection<String> checks) {
getStatusChecks().contexts.addAll(checks);
return this;
}
/**
* Add required checks gh branch protection builder.
*
* @param checks
* the checks
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder addRequiredChecks(String... checks) {
addRequiredChecks(Arrays.asList(checks));
return this;
}
/**
* Dismiss stale reviews gh branch protection builder.
*
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder dismissStaleReviews() {
return dismissStaleReviews(true);
}
/**
* Dismiss stale reviews gh branch protection builder.
*
* @param v
* the v
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder dismissStaleReviews(boolean v) {
getPrReviews().put("dismiss_stale_reviews", v);
return this;
}
/**
* Enable gh branch protection.
*
* @return the gh branch protection
* @throws IOException
* the io exception
*/
public GHBranchProtection enable() throws IOException {
return requester().method("PUT")
.withNullable("required_status_checks", statusChecks)
.withNullable("required_pull_request_reviews", prReviews)
.withNullable("restrictions", restrictions)
.withNullable("enforce_admins", enforceAdmins)
.withUrlPath(branch.getProtectionUrl().toString())
.fetch(GHBranchProtection.class)
.wrap(branch);
}
/**
* Include admins gh branch protection builder.
*
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder includeAdmins() {
return includeAdmins(true);
}
/**
* Include admins gh branch protection builder.
*
* @param v
* the v
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder includeAdmins(boolean v) {
enforceAdmins = v;
return this;
}
/**
* Required reviewers gh branch protection builder.
*
* @param v
* the v
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder requiredReviewers(int v) {
getPrReviews().put("required_approving_review_count", v);
return this;
}
/**
* Require branch is up to date gh branch protection builder.
*
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder requireBranchIsUpToDate() {
return requireBranchIsUpToDate(true);
}
/**
* Require branch is up to date gh branch protection builder.
*
* @param v
* the v
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder requireBranchIsUpToDate(boolean v) {
getStatusChecks().strict = v;
return this;
}
/**
* Require code own reviews gh branch protection builder.
*
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder requireCodeOwnReviews() {
return requireCodeOwnReviews(true);
}
/**
* Require code own reviews gh branch protection builder.
*
* @param v
* the v
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder requireCodeOwnReviews(boolean v) {
getPrReviews().put("require_code_owner_reviews", v);
return this;
}
/**
* Require reviews gh branch protection builder.
*
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder requireReviews() {
getPrReviews();
return this;
}
/**
* Restrict review dismissals gh branch protection builder.
*
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder restrictReviewDismissals() {
getPrReviews();
if (!prReviews.containsKey("dismissal_restrictions")) {
prReviews.put("dismissal_restrictions", new Restrictions());
}
return this;
}
/**
* Restrict push access gh branch protection builder.
*
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder restrictPushAccess() {
getRestrictions();
return this;
}
/**
* Team push access gh branch protection builder.
*
* @param teams
* the teams
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder teamPushAccess(Collection<GHTeam> teams) {
for (GHTeam team : teams) {
teamPushAccess(team);
}
return this;
}
/**
* Team push access gh branch protection builder.
*
* @param teams
* the teams
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder teamPushAccess(GHTeam... teams) {
for (GHTeam team : teams) {
getRestrictions().teams.add(team.getSlug());
}
return this;
}
/**
* Team review dismissals gh branch protection builder.
*
* @param teams
* the teams
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder teamReviewDismissals(Collection<GHTeam> teams) {
for (GHTeam team : teams) {
teamReviewDismissals(team);
}
return this;
}
/**
* Team review dismissals gh branch protection builder.
*
* @param teams
* the teams
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder teamReviewDismissals(GHTeam... teams) {
for (GHTeam team : teams) {
addReviewRestriction(team.getSlug(), true);
}
return this;
}
/**
* User push access gh branch protection builder.
*
* @param users
* the users
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder userPushAccess(Collection<GHUser> users) {
for (GHUser user : users) {
userPushAccess(user);
}
return this;
}
/**
* User push access gh branch protection builder.
*
* @param users
* the users
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder userPushAccess(GHUser... users) {
for (GHUser user : users) {
getRestrictions().users.add(user.getLogin());
}
return this;
}
/**
* User review dismissals gh branch protection builder.
*
* @param users
* the users
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder userReviewDismissals(Collection<GHUser> users) {
for (GHUser team : users) {
userReviewDismissals(team);
}
return this;
}
/**
* User review dismissals gh branch protection builder.
*
* @param users
* the users
* @return the gh branch protection builder
*/
public GHBranchProtectionBuilder userReviewDismissals(GHUser... users) {
for (GHUser user : users) {
addReviewRestriction(user.getLogin(), false);
}
return this;
}
private void addReviewRestriction(String restriction, boolean isTeam) {
restrictReviewDismissals();
Restrictions restrictions = (Restrictions) prReviews.get("dismissal_restrictions");
if (isTeam) {
restrictions.teams.add(restriction);
} else {
restrictions.users.add(restriction);
}
}
private Map<String, Object> getPrReviews() {
if (prReviews == null) {
prReviews = new HashMap<String, Object>();
}
return prReviews;
}
private Restrictions getRestrictions() {
if (restrictions == null) {
restrictions = new Restrictions();
}
return restrictions;
}
private StatusChecks getStatusChecks() {
if (statusChecks == null) {
statusChecks = new StatusChecks();
}
return statusChecks;
}
private Requester requester() {
return branch.getRoot().createRequest().withPreview(LUKE_CAGE);
}
private static class Restrictions {
private Set<String> teams = new HashSet<String>();
private Set<String> users = new HashSet<String>();
}
private static class StatusChecks {
final List<String> contexts = new ArrayList<String>();
boolean strict;
}
}

View File

@@ -0,0 +1,307 @@
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JsonProperty;
import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.kohsuke.github.internal.Previews;
import java.io.IOException;
import java.net.URL;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
/**
* Represents a check run.
*
* @see <a href="https://developer.github.com/v3/checks/runs/">documentation</a>
*/
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD", "URF_UNREAD_FIELD" },
justification = "JSON API")
public class GHCheckRun extends GHObject {
@JsonProperty("repository")
GHRepository owner;
private String status;
private String conclusion;
private String name;
private String headSha;
private String nodeId;
private String externalId;
private String startedAt;
private String completedAt;
private URL htmlUrl;
private URL detailsUrl;
private Output output;
private GHApp app;
private GHPullRequest[] pullRequests;
private GHCheckSuite checkSuite;
GHCheckRun wrap(GHRepository owner) {
this.owner = owner;
wrap(owner.root);
return this;
}
GHCheckRun wrap(GitHub root) {
this.root = root;
if (owner != null) {
owner.wrap(root);
if (pullRequests != null && pullRequests.length != 0) {
for (GHPullRequest singlePull : pullRequests) {
singlePull.wrap(owner);
}
}
}
if (checkSuite != null) {
if (owner != null) {
checkSuite.wrap(owner);
} else {
checkSuite.wrap(root);
}
}
if (app != null) {
app.wrapUp(root);
}
return this;
}
GHPullRequest[] wrap() {
return pullRequests;
}
/**
* Gets status of the check run.
*
* @return Status of the check run
* @see Status
*/
public String getStatus() {
return status;
}
public static enum Status {
QUEUED, IN_PROGRESS, COMPLETED
}
/**
* Gets conclusion of a completed check run.
*
* @return Status of the check run
* @see Conclusion
*/
public String getConclusion() {
return conclusion;
}
/**
* Final conclusion of the check.
*
* From <a href="https://docs.github.com/en/rest/reference/checks#create-a-check-run--parameters">Check Run
* Parameters - <code>conclusion</code></a>.
*/
public static enum Conclusion {
SUCCESS, FAILURE, NEUTRAL, CANCELLED, TIMED_OUT, ACTION_REQUIRED, SKIPPED
}
/**
* Gets the custom name of this check run.
*
* @return Name of the check run
*/
public String getName() {
return name;
}
/**
* Gets the HEAD SHA.
*
* @return sha for the HEAD commit
*/
public String getHeadSha() {
return headSha;
}
/**
* Gets the pull requests participated in this check run.
*
* Note this field is only populated for events. When getting a {@link GHCheckRun} outside of an event, this is
* always empty.
*
* @return the list of {@link GHPullRequest}s for this check run. Only populated for events.
* @throws IOException
* the io exception
*/
public List<GHPullRequest> getPullRequests() throws IOException {
if (pullRequests != null && pullRequests.length != 0) {
for (GHPullRequest singlePull : pullRequests) {
// Only refresh if we haven't do so before
singlePull.refresh(singlePull.getTitle());
}
return Collections.unmodifiableList(Arrays.asList(pullRequests));
}
return Collections.emptyList();
}
/**
* Gets the HTML URL: https://github.com/[owner]/[repo-name]/runs/[check-run-id], usually an GitHub Action page of
* the check run.
*
* @return HTML URL
*/
@Override
public URL getHtmlUrl() {
return htmlUrl;
}
/**
* Gets the global node id to access most objects in GitHub.
*
* @see <a href="https://developer.github.com/v4/guides/using-global-node-ids/">documentation</a>
* @return Global node id
*/
public String getNodeId() {
return nodeId;
}
/**
* Gets a reference for the check run on the integrator's system.
*
* @return Reference id
*/
public String getExternalId() {
return externalId;
}
/**
* Gets the details URL from which to find full details of the check run on the integrator's site.
*
* @return Details URL
*/
public URL getDetailsUrl() {
return detailsUrl;
}
/**
* Gets the start time of the check run in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ.
*
* @return Timestamp of the start time
*/
public Date getStartedAt() {
return GitHubClient.parseDate(startedAt);
}
/**
* Gets the completed time of the check run in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ.
*
* @return Timestamp of the completed time
*/
public Date getCompletedAt() {
return GitHubClient.parseDate(completedAt);
}
/**
* Gets the GitHub app this check run belongs to, included in response.
*
* @return GitHub App
*/
public GHApp getApp() {
return app;
}
/**
* Gets the check suite this check run belongs to
*
* @return Check suite
*/
public GHCheckSuite getCheckSuite() {
return checkSuite;
}
/**
* Gets an output for a check run.
*
* @return Output of a check run
*/
public Output getOutput() {
return output;
}
/**
* Represents an output in a check run to include summary and other results.
*
* @see <a href="https://developer.github.com/v3/checks/runs/#output-object">documentation</a>
*/
public static class Output {
private String title;
private String summary;
private String text;
private int annotationsCount;
private URL annotationsUrl;
/**
* Gets the title of check run.
*
* @return title of check run
*/
public String getTitle() {
return title;
}
/**
* Gets the summary of the check run, note that it supports Markdown.
*
* @return summary of check run
*/
public String getSummary() {
return summary;
}
/**
* Gets the details of the check run, note that it supports Markdown.
*
* @return Details of the check run
*/
public String getText() {
return text;
}
/**
* Gets the annotation count of a check run.
*
* @return annotation count of a check run
*/
public int getAnnotationsCount() {
return annotationsCount;
}
/**
* Gets the URL of annotations.
*
* @return URL of annotations
*/
public URL getAnnotationsUrl() {
return annotationsUrl;
}
}
public static enum AnnotationLevel {
NOTICE, WARNING, FAILURE
}
/**
* Updates this check run.
*
* @return a builder which you should customize, then call {@link GHCheckRunBuilder#create}
*/
@Preview(Previews.ANTIOPE)
@Deprecated
public @NonNull GHCheckRunBuilder update() {
return new GHCheckRunBuilder(owner, getId());
}
}

View File

@@ -0,0 +1,307 @@
/*
* The MIT License
*
* Copyright 2020 CloudBees, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JsonInclude;
import edu.umd.cs.findbugs.annotations.CheckForNull;
import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.kohsuke.github.internal.Previews;
import java.io.IOException;
import java.util.Collections;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
/**
* Drafts or updates a check run.
*
* @see GHCheckRun
* @see GHRepository#createCheckRun
* @see <a href="https://developer.github.com/v3/checks/runs/#create-a-check-run">documentation</a>
* @see GHCheckRun#update()
* @see <a href="https://developer.github.com/v3/checks/runs/#update-a-check-run">documentation</a>
*/
@SuppressFBWarnings(value = "URF_UNREAD_FIELD", justification = "Jackson serializes these even without a getter")
@Preview(Previews.ANTIOPE)
@Deprecated
public final class GHCheckRunBuilder {
protected final GHRepository repo;
protected final Requester requester;
private Output output;
private List<Action> actions;
private GHCheckRunBuilder(GHRepository repo, Requester requester) {
this.repo = repo;
this.requester = requester;
}
GHCheckRunBuilder(GHRepository repo, String name, String headSHA) {
this(repo,
repo.root.createRequest()
.withPreview(Previews.ANTIOPE)
.method("POST")
.with("name", name)
.with("head_sha", headSHA)
.withUrlPath(repo.getApiTailUrl("check-runs")));
}
GHCheckRunBuilder(GHRepository repo, long checkId) {
this(repo,
repo.root.createRequest()
.withPreview(Previews.ANTIOPE)
.method("PATCH")
.withUrlPath(repo.getApiTailUrl("check-runs/" + checkId)));
}
public @NonNull GHCheckRunBuilder withDetailsURL(@CheckForNull String detailsURL) {
requester.with("details_url", detailsURL);
return this;
}
public @NonNull GHCheckRunBuilder withExternalID(@CheckForNull String externalID) {
requester.with("external_id", externalID);
return this;
}
public @NonNull GHCheckRunBuilder withStatus(@CheckForNull GHCheckRun.Status status) {
if (status != null) {
// Do *not* use the overload taking Enum, as that s/_/-/g which would be wrong here.
requester.with("status", status.toString().toLowerCase(Locale.ROOT));
}
return this;
}
public @NonNull GHCheckRunBuilder withConclusion(@CheckForNull GHCheckRun.Conclusion conclusion) {
if (conclusion != null) {
requester.with("conclusion", conclusion.toString().toLowerCase(Locale.ROOT));
}
return this;
}
public @NonNull GHCheckRunBuilder withStartedAt(@CheckForNull Date startedAt) {
if (startedAt != null) {
requester.with("started_at", GitHubClient.printDate(startedAt));
}
return this;
}
public @NonNull GHCheckRunBuilder withCompletedAt(@CheckForNull Date completedAt) {
if (completedAt != null) {
requester.with("completed_at", GitHubClient.printDate(completedAt));
}
return this;
}
public @NonNull GHCheckRunBuilder add(@NonNull Output output) {
if (this.output != null) {
throw new IllegalStateException("cannot add Output twice");
}
this.output = output;
return this;
}
public @NonNull GHCheckRunBuilder add(@NonNull Action action) {
if (actions == null) {
actions = new LinkedList<>();
}
actions.add(action);
return this;
}
private static final int MAX_ANNOTATIONS = 50;
/**
* Actually creates the check run. (If more than fifty annotations were requested, this is done in batches.)
*
* @return the resulting run
* @throws IOException
* for the usual reasons
*/
public @NonNull GHCheckRun create() throws IOException {
List<Annotation> extraAnnotations;
if (output != null && output.annotations != null && output.annotations.size() > MAX_ANNOTATIONS) {
extraAnnotations = output.annotations.subList(MAX_ANNOTATIONS, output.annotations.size());
output.annotations = output.annotations.subList(0, MAX_ANNOTATIONS);
} else {
extraAnnotations = Collections.emptyList();
}
GHCheckRun run = requester.with("output", output).with("actions", actions).fetch(GHCheckRun.class).wrap(repo);
while (!extraAnnotations.isEmpty()) {
Output output2 = new Output(output.title, output.summary);
int i = Math.min(extraAnnotations.size(), MAX_ANNOTATIONS);
output2.annotations = extraAnnotations.subList(0, i);
extraAnnotations = extraAnnotations.subList(i, extraAnnotations.size());
run = repo.root.createRequest()
.withPreview(Previews.ANTIOPE)
.method("PATCH")
.with("output", output2)
.withUrlPath(repo.getApiTailUrl("check-runs/" + run.getId()))
.fetch(GHCheckRun.class)
.wrap(repo);
}
return run;
}
/**
* @see <a href="https://developer.github.com/v3/checks/runs/#output-object">documentation</a>
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public static final class Output {
private final String title;
private final String summary;
private String text;
private List<Annotation> annotations;
private List<Image> images;
public Output(@NonNull String title, @NonNull String summary) {
this.title = title;
this.summary = summary;
}
public @NonNull Output withText(@CheckForNull String text) {
this.text = text;
return this;
}
public @NonNull Output add(@NonNull Annotation annotation) {
if (annotations == null) {
annotations = new LinkedList<>();
}
annotations.add(annotation);
return this;
}
public @NonNull Output add(@NonNull Image image) {
if (images == null) {
images = new LinkedList<>();
}
images.add(image);
return this;
}
}
/**
* @see <a href="https://developer.github.com/v3/checks/runs/#annotations-object">documentation</a>
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public static final class Annotation {
private final String path;
private final int start_line;
private final int end_line;
private final String annotation_level;
private final String message;
private Integer start_column;
private Integer end_column;
private String title;
private String raw_details;
public Annotation(@NonNull String path,
int line,
@NonNull GHCheckRun.AnnotationLevel annotationLevel,
@NonNull String message) {
this(path, line, line, annotationLevel, message);
}
public Annotation(@NonNull String path,
int startLine,
int endLine,
@NonNull GHCheckRun.AnnotationLevel annotationLevel,
@NonNull String message) {
this.path = path;
start_line = startLine;
end_line = endLine;
annotation_level = annotationLevel.toString().toLowerCase(Locale.ROOT);
this.message = message;
}
public @NonNull Annotation withStartColumn(@CheckForNull Integer startColumn) {
start_column = startColumn;
return this;
}
public @NonNull Annotation withEndColumn(@CheckForNull Integer endColumn) {
end_column = endColumn;
return this;
}
public @NonNull Annotation withTitle(@CheckForNull String title) {
this.title = title;
return this;
}
public @NonNull Annotation withRawDetails(@CheckForNull String rawDetails) {
raw_details = rawDetails;
return this;
}
}
/**
* @see <a href="https://developer.github.com/v3/checks/runs/#images-object">documentation</a>
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public static final class Image {
private final String alt;
private final String image_url;
private String caption;
public Image(@NonNull String alt, @NonNull String imageURL) {
this.alt = alt;
image_url = imageURL;
}
public @NonNull Image withCaption(@CheckForNull String caption) {
this.caption = caption;
return this;
}
}
/**
* @see <a href="https://developer.github.com/v3/checks/runs/#actions-object">documentation</a>
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public static final class Action {
private final String label;
private final String description;
private final String identifier;
public Action(@NonNull String label, @NonNull String description, @NonNull String identifier) {
this.label = label;
this.description = description;
this.identifier = identifier;
}
}
}

View File

@@ -0,0 +1,44 @@
package org.kohsuke.github;
import java.util.Iterator;
import javax.annotation.Nonnull;
/**
* Iterable for check-runs listing.
*/
class GHCheckRunsIterable extends PagedIterable<GHCheckRun> {
private final transient GitHub root;
private final GitHubRequest request;
private GHCheckRunsPage result;
public GHCheckRunsIterable(GitHub root, GitHubRequest request) {
this.root = root;
this.request = request;
}
@Nonnull
@Override
public PagedIterator<GHCheckRun> _iterator(int pageSize) {
return new PagedIterator<>(
adapt(GitHubPageIterator.create(root.getClient(), GHCheckRunsPage.class, request, pageSize)),
null);
}
protected Iterator<GHCheckRun[]> adapt(final Iterator<GHCheckRunsPage> base) {
return new Iterator<GHCheckRun[]>() {
public boolean hasNext() {
return base.hasNext();
}
public GHCheckRun[] next() {
GHCheckRunsPage v = base.next();
if (result == null) {
result = v;
}
return v.getCheckRuns(root);
}
};
}
}

View File

@@ -0,0 +1,20 @@
package org.kohsuke.github;
/**
* Represents the one page of check-runs result when listing check-runs.
*/
class GHCheckRunsPage {
private int total_count;
private GHCheckRun[] check_runs;
public int getTotalCount() {
return total_count;
}
GHCheckRun[] getCheckRuns(GitHub root) {
for (GHCheckRun check_run : check_runs) {
check_run.wrap(root);
}
return check_runs;
}
}

View File

@@ -0,0 +1,259 @@
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JsonProperty;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.net.URL;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
/**
* Represents a check suite.
*
* @see <a href="https://developer.github.com/v3/checks/suites/">documentation</a>
*/
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD", "URF_UNREAD_FIELD" },
justification = "JSON API")
public class GHCheckSuite extends GHObject {
@JsonProperty("repository")
GHRepository owner;
private String nodeId;
private String headBranch;
private String headSha;
private String status;
private String conclusion;
private String before;
private String after;
private int latestCheckRunsCount;
private URL checkRunsUrl;
private HeadCommit headCommit;
private GHApp app;
private GHPullRequest[] pullRequests;
GHCheckSuite wrap(GHRepository owner) {
this.owner = owner;
this.wrap(owner.root);
return this;
}
GHCheckSuite wrap(GitHub root) {
this.root = root;
if (owner != null) {
owner.wrap(root);
if (pullRequests != null && pullRequests.length != 0) {
for (GHPullRequest singlePull : pullRequests) {
singlePull.wrap(owner);
}
}
}
if (app != null) {
app.wrapUp(root);
}
return this;
}
GHPullRequest[] wrap() {
return pullRequests;
}
/**
* Gets the global node id to access most objects in GitHub.
*
* @see <a href="https://developer.github.com/v4/guides/using-global-node-ids/">documentation</a>
* @return global node id
*/
public String getNodeId() {
return nodeId;
}
/**
* The head branch name the changes are on.
*
* @return head branch name
*/
public String getHeadBranch() {
return headBranch;
}
/**
* Gets the HEAD SHA.
*
* @return sha for the HEAD commit
*/
public String getHeadSha() {
return headSha;
}
/**
* Gets status of the check suite. It can be one of request, in_progress, or completed.
*
* @return status of the check suite
*/
public String getStatus() {
return status;
}
/**
* Gets conclusion of a completed check suite. It can be one of success, failure, neutral, cancelled, time_out,
* action_required, or stale. The check suite will report the highest priority check run conclusion in the check
* suite's conclusion.
*
* @return conclusion of the check suite
*/
public String getConclusion() {
return conclusion;
}
/**
* The SHA of the most recent commit on ref before the push.
*
* @return sha of a commit
*/
public String getBefore() {
return before;
}
/**
* The SHA of the most recent commit on ref after the push.
*
* @return sha of a commit
*/
public String getAfter() {
return after;
}
/**
* The quantity of check runs that had run as part of the latest push.
*
* @return sha of the most recent commit
*/
public int getLatestCheckRunsCount() {
return latestCheckRunsCount;
}
/**
* The url used to list all the check runs belonged to this suite.
*
* @return url containing all check runs
*/
public URL getCheckRunsUrl() {
return checkRunsUrl;
}
/**
* The commit of current head.
*
* @return head commit
*/
public HeadCommit getHeadCommit() {
return headCommit;
}
/**
* Gets the GitHub app this check suite belongs to, included in response.
*
* @return GitHub App
*/
public GHApp getApp() {
return app;
}
/**
* Gets the pull requests participated in this check suite.
*
* Note this field is only populated for events. When getting a {@link GHCheckSuite} outside of an event, this is
* always empty.
*
* @return the list of {@link GHPullRequest}s for this check suite. Only populated for events.
* @throws IOException
* the io exception
*/
public List<GHPullRequest> getPullRequests() throws IOException {
if (pullRequests != null && pullRequests.length != 0) {
for (GHPullRequest singlePull : pullRequests) {
// Only refresh if we haven't do so before
singlePull.refresh(singlePull.getTitle());
}
return Collections.unmodifiableList(Arrays.asList(pullRequests));
}
return Collections.emptyList();
}
/**
* Check suite doesn't have a HTML URL.
*
* @return null
*/
@Override
public URL getHtmlUrl() {
return null;
}
public static class HeadCommit {
private String id;
private String treeId;
private String message;
private String timestamp;
private GitUser author;
private GitUser committer;
/**
* Gets id of the commit, used by {@link GHCheckSuite} when a {@link GHEvent#CHECK_SUITE} comes
*
* @return id of the commit
*/
public String getId() {
return id;
}
/**
* Gets id of the tree.
*
* @return id of the tree
*/
public String getTreeId() {
return treeId;
}
/**
* Gets message.
*
* @return commit message.
*/
public String getMessage() {
return message;
}
/**
* Gets timestamp of the commit.
*
* @return timestamp of the commit
*/
public Date getTimestamp() {
return GitHubClient.parseDate(timestamp);
}
/**
* Gets author.
*
* @return the author
*/
public GitUser getAuthor() {
return author;
}
/**
* Gets committer.
*
* @return the committer
*/
public GitUser getCommitter() {
return committer;
}
}
}

View File

@@ -0,0 +1,37 @@
package org.kohsuke.github;
/**
* How is an user associated with a repository?
*
* @author Kohsuke Kawaguchi
*/
public enum GHCommentAuthorAssociation {
/**
* Author has been invited to collaborate on the repository.
*/
COLLABORATOR,
/**
* Author has previously committed to the repository.
*/
CONTRIBUTOR,
/**
* Author has not previously committed to GitHub.
*/
FIRST_TIMER,
/**
* Author has not previously committed to the repository.
*/
FIRST_TIME_CONTRIBUTOR,
/**
* Author is a member of the organization that owns the repository.
*/
MEMBER,
/**
* Author has no association with the repository.
*/
NONE,
/**
* Author is the owner of the repository.
*/
OWNER
}

View File

@@ -0,0 +1,589 @@
package org.kohsuke.github;
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.net.URL;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import static org.kohsuke.github.internal.Previews.ANTIOPE;
import static org.kohsuke.github.internal.Previews.GROOT;
/**
* A commit in a repository.
*
* @author Kohsuke Kawaguchi
* @see GHRepository#getCommit(String) GHRepository#getCommit(String)
* @see GHCommitComment#getCommit() GHCommitComment#getCommit()
*/
@SuppressFBWarnings(value = { "NP_UNWRITTEN_FIELD", "UWF_UNWRITTEN_FIELD" }, justification = "JSON API")
public class GHCommit {
private GHRepository owner;
private ShortInfo commit;
/**
* Short summary of this commit.
*/
@SuppressFBWarnings(
value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD",
"UWF_UNWRITTEN_FIELD" },
justification = "JSON API")
public static class ShortInfo {
private GHAuthor author;
private GHAuthor committer;
private String message;
private int comment_count;
private GHVerification verification;
static class Tree {
String sha;
}
private Tree tree;
/**
* Gets author.
*
* @return the author
*/
@WithBridgeMethods(value = GHAuthor.class, castRequired = true)
public GitUser getAuthor() {
return author;
}
/**
* Gets authored date.
*
* @return the authored date
*/
public Date getAuthoredDate() {
return author.getDate();
}
/**
* Gets committer.
*
* @return the committer
*/
@WithBridgeMethods(value = GHAuthor.class, castRequired = true)
public GitUser getCommitter() {
return committer;
}
/**
* Gets commit date.
*
* @return the commit date
*/
public Date getCommitDate() {
return committer.getDate();
}
/**
* Gets message.
*
* @return Commit message.
*/
public String getMessage() {
return message;
}
/**
* Gets comment count.
*
* @return the comment count
*/
public int getCommentCount() {
return comment_count;
}
/**
* Gets Verification Status.
*
* @return the Verification status
*/
public GHVerification getVerification() {
return verification;
}
}
/**
* The type GHAuthor.
*
* @deprecated Use {@link GitUser} instead.
*/
public static class GHAuthor extends GitUser {
}
/**
* The type Stats.
*/
public static class Stats {
int total, additions, deletions;
}
/**
* A file that was modified.
*/
@SuppressFBWarnings(value = "UWF_UNWRITTEN_FIELD", justification = "It's being initilized by JSON deserialization")
public static class File {
String status;
int changes, additions, deletions;
String raw_url, blob_url, sha, patch;
String filename, previous_filename;
/**
* Gets lines changed.
*
* @return Number of lines added + removed.
*/
public int getLinesChanged() {
return changes;
}
/**
* Gets lines added.
*
* @return Number of lines added.
*/
public int getLinesAdded() {
return additions;
}
/**
* Gets lines deleted.
*
* @return Number of lines removed.
*/
public int getLinesDeleted() {
return deletions;
}
/**
* Gets status.
*
* @return "modified", "added", or "removed"
*/
public String getStatus() {
return status;
}
/**
* Gets file name.
*
* @return Full path in the repository.
*/
@SuppressFBWarnings(value = "NM_CONFUSING",
justification = "It's a part of the library's API and cannot be renamed")
public String getFileName() {
return filename;
}
/**
* Gets previous filename.
*
* @return Previous path, in case file has moved.
*/
public String getPreviousFilename() {
return previous_filename;
}
/**
* Gets patch.
*
* @return The actual change.
*/
public String getPatch() {
return patch;
}
/**
* Gets raw url.
*
* @return URL like
* 'https://raw.github.com/jenkinsci/jenkins/4eb17c197dfdcf8ef7ff87eb160f24f6a20b7f0e/core/pom.xml' that
* resolves to the actual content of the file.
*/
public URL getRawUrl() {
return GitHubClient.parseURL(raw_url);
}
/**
* Gets blob url.
*
* @return URL like
* 'https://github.com/jenkinsci/jenkins/blob/1182e2ebb1734d0653142bd422ad33c21437f7cf/core/pom.xml'
* that resolves to the HTML page that describes this file.
*/
public URL getBlobUrl() {
return GitHubClient.parseURL(blob_url);
}
/**
* Gets sha.
*
* @return [0 -9a-f]{40} SHA1 checksum.
*/
public String getSha() {
return sha;
}
}
/**
* The type Parent.
*/
public static class Parent {
@SuppressFBWarnings(value = "UUF_UNUSED_FIELD", justification = "We don't provide it in API now")
String url;
String sha;
}
static class User {
// TODO: what if someone who doesn't have an account on GitHub makes a commit?
@SuppressFBWarnings(value = "UUF_UNUSED_FIELD", justification = "We don't provide it in API now")
String url, avatar_url, gravatar_id;
@SuppressFBWarnings(value = "UUF_UNUSED_FIELD", justification = "We don't provide it in API now")
int id;
String login;
}
String url, html_url, sha;
List<File> files;
Stats stats;
List<Parent> parents;
User author, committer;
/**
* Gets commit short info.
*
* @return the commit short info
* @throws IOException
* the io exception
*/
public ShortInfo getCommitShortInfo() throws IOException {
if (commit == null)
populate();
return commit;
}
/**
* Gets owner.
*
* @return the repository that contains the commit.
*/
public GHRepository getOwner() {
return owner;
}
/**
* Gets lines changed.
*
* @return the number of lines added + removed.
* @throws IOException
* if the field was not populated and refresh fails
*/
public int getLinesChanged() throws IOException {
populate();
return stats.total;
}
/**
* Gets lines added.
*
* @return Number of lines added.
* @throws IOException
* if the field was not populated and refresh fails
*/
public int getLinesAdded() throws IOException {
populate();
return stats.additions;
}
/**
* Gets lines deleted.
*
* @return Number of lines removed.
* @throws IOException
* if the field was not populated and refresh fails
*/
public int getLinesDeleted() throws IOException {
populate();
return stats.deletions;
}
/**
* Use this method to walk the tree.
*
* @return a GHTree to walk
* @throws IOException
* on error
*/
public GHTree getTree() throws IOException {
return owner.getTree(getCommitShortInfo().tree.sha);
}
/**
* Gets html url.
*
* @return URL of this commit like
* "https://github.com/kohsuke/sandbox-ant/commit/8ae38db0ea5837313ab5f39d43a6f73de3bd9000"
*/
public URL getHtmlUrl() {
return GitHubClient.parseURL(html_url);
}
/**
* Gets sha 1.
*
* @return [0 -9a-f]{40} SHA1 checksum.
*/
public String getSHA1() {
return sha;
}
/**
* List of files changed/added/removed in this commit.
*
* @return Can be empty but never null.
* @throws IOException
* on error
*/
public List<File> getFiles() throws IOException {
populate();
return files != null ? Collections.unmodifiableList(files) : Collections.<File>emptyList();
}
/**
* Gets parent sha 1 s.
*
* @return SHA1 of parent commit objects.
*/
public List<String> getParentSHA1s() {
if (parents == null)
return Collections.emptyList();
return new AbstractList<String>() {
@Override
public String get(int index) {
return parents.get(index).sha;
}
@Override
public int size() {
return parents.size();
}
};
}
/**
* Resolves the parent commit objects and return them.
*
* @return parent commit objects
* @throws IOException
* on error
*/
public List<GHCommit> getParents() throws IOException {
List<GHCommit> r = new ArrayList<GHCommit>();
for (String sha1 : getParentSHA1s())
r.add(owner.getCommit(sha1));
return r;
}
/**
* Gets author.
*
* @return the author
* @throws IOException
* the io exception
*/
public GHUser getAuthor() throws IOException {
return resolveUser(author);
}
/**
* Gets the date the change was authored on.
*
* @return the date the change was authored on.
* @throws IOException
* if the information was not already fetched and an attempt at fetching the information failed.
*/
public Date getAuthoredDate() throws IOException {
return getCommitShortInfo().getAuthoredDate();
}
/**
* Gets committer.
*
* @return the committer
* @throws IOException
* the io exception
*/
public GHUser getCommitter() throws IOException {
return resolveUser(committer);
}
/**
* Gets the date the change was committed on.
*
* @return the date the change was committed on.
* @throws IOException
* if the information was not already fetched and an attempt at fetching the information failed.
*/
public Date getCommitDate() throws IOException {
return getCommitShortInfo().getCommitDate();
}
private GHUser resolveUser(User author) throws IOException {
if (author == null || author.login == null)
return null;
return owner.root.getUser(author.login);
}
/**
* Retrieves a list of pull requests which contain this commit.
*
* @return {@link PagedIterable} with the pull requests which contain this commit
*/
@Preview(GROOT)
@Deprecated
public PagedIterable<GHPullRequest> listPullRequests() {
return owner.root.createRequest()
.withPreview(GROOT)
.withUrlPath(String.format("/repos/%s/%s/commits/%s/pulls", owner.getOwnerName(), owner.getName(), sha))
.toIterable(GHPullRequest[].class, item -> item.wrapUp(owner));
}
/**
* Retrieves a list of branches where this commit is the head commit.
*
* @return {@link PagedIterable} with the branches where the commit is the head commit
* @throws IOException
* the io exception
*/
@Preview(GROOT)
@Deprecated
public PagedIterable<GHBranch> listBranchesWhereHead() throws IOException {
return owner.root.createRequest()
.withPreview(GROOT)
.withUrlPath(String.format("/repos/%s/%s/commits/%s/branches-where-head",
owner.getOwnerName(),
owner.getName(),
sha))
.toIterable(GHBranch[].class, item -> item.wrap(owner));
}
/**
* List comments paged iterable.
*
* @return {@link PagedIterable} with all the commit comments in this repository.
*/
public PagedIterable<GHCommitComment> listComments() {
return owner.root.createRequest()
.withUrlPath(
String.format("/repos/%s/%s/commits/%s/comments", owner.getOwnerName(), owner.getName(), sha))
.toIterable(GHCommitComment[].class, item -> item.wrap(owner));
}
/**
* Creates a commit comment.
* <p>
* I'm not sure how path/line/position parameters interact with each other.
*
* @param body
* body of the comment
* @param path
* path of file being commented on
* @param line
* target line for comment
* @param position
* position on line
* @return created GHCommitComment
* @throws IOException
* if comment is not created
*/
public GHCommitComment createComment(String body, String path, Integer line, Integer position) throws IOException {
GHCommitComment r = owner.root.createRequest()
.method("POST")
.with("body", body)
.with("path", path)
.with("line", line)
.with("position", position)
.withUrlPath(
String.format("/repos/%s/%s/commits/%s/comments", owner.getOwnerName(), owner.getName(), sha))
.fetch(GHCommitComment.class);
return r.wrap(owner);
}
/**
* Create comment gh commit comment.
*
* @param body
* the body
* @return the gh commit comment
* @throws IOException
* the io exception
*/
public GHCommitComment createComment(String body) throws IOException {
return createComment(body, null, null, null);
}
/**
* List statuses paged iterable.
*
* @return status of this commit, newer ones first.
* @throws IOException
* if statuses cannot be read
*/
public PagedIterable<GHCommitStatus> listStatuses() throws IOException {
return owner.listCommitStatuses(sha);
}
/**
* Gets last status.
*
* @return the last status of this commit, which is what gets shown in the UI.
* @throws IOException
* on error
*/
public GHCommitStatus getLastStatus() throws IOException {
return owner.getLastCommitStatus(sha);
}
/**
* Gets check-runs for given sha.
*
* @return check runs for given sha.
* @throws IOException
* on error
*/
@Preview(ANTIOPE)
@Deprecated
public PagedIterable<GHCheckRun> getCheckRuns() throws IOException {
return owner.getCheckRuns(sha);
}
/**
* Some of the fields are not always filled in when this object is retrieved as a part of another API call.
*
* @throws IOException
* on error
*/
void populate() throws IOException {
if (files == null && stats == null)
owner.root.createRequest().withUrlPath(owner.getApiTailUrl("commits/" + sha)).fetchInto(this);
}
GHCommit wrapUp(GHRepository owner) {
this.owner = owner;
return this;
}
}

View File

@@ -0,0 +1,136 @@
package org.kohsuke.github;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
/**
* Builder pattern for creating a new commit. Based on https://developer.github.com/v3/git/commits/#create-a-commit
*/
public class GHCommitBuilder {
private final GHRepository repo;
private final Requester req;
private final List<String> parents = new ArrayList<String>();
private static final class UserInfo {
private final String name;
private final String email;
private final String date;
private UserInfo(String name, String email, Date date) {
this.name = name;
this.email = email;
TimeZone tz = TimeZone.getTimeZone("UTC");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
df.setTimeZone(tz);
this.date = df.format((date != null) ? date : new Date());
}
}
GHCommitBuilder(GHRepository repo) {
this.repo = repo;
req = repo.root.createRequest().method("POST");
}
/**
* Message gh commit builder.
*
* @param message
* the commit message
* @return the gh commit builder
*/
public GHCommitBuilder message(String message) {
req.with("message", message);
return this;
}
/**
* Tree gh commit builder.
*
* @param tree
* the SHA of the tree object this commit points to
* @return the gh commit builder
*/
public GHCommitBuilder tree(String tree) {
req.with("tree", tree);
return this;
}
/**
* Parent gh commit builder.
*
* @param parent
* the SHA of a parent commit.
* @return the gh commit builder
*/
public GHCommitBuilder parent(String parent) {
parents.add(parent);
return this;
}
/**
* Configures the author of this commit.
*
* @param name
* the name
* @param email
* the email
* @param date
* the date
* @return the gh commit builder
*/
public GHCommitBuilder author(String name, String email, Date date) {
req.with("author", new UserInfo(name, email, date));
return this;
}
/**
* Configures the PGP signature of this commit.
*
* @param signature
* the signature calculated from the commit
*
* @return the gh commit builder
*/
public GHCommitBuilder withSignature(String signature) {
req.with("signature", signature);
return this;
}
/**
* Configures the committer of this commit.
*
* @param name
* the name
* @param email
* the email
* @param date
* the date
* @return the gh commit builder
*/
public GHCommitBuilder committer(String name, String email, Date date) {
req.with("committer", new UserInfo(name, email, date));
return this;
}
private String getApiTail() {
return String.format("/repos/%s/%s/git/commits", repo.getOwnerName(), repo.getName());
}
/**
* Creates a blob based on the parameters specified thus far.
*
* @return the gh commit
* @throws IOException
* the io exception
*/
public GHCommit create() throws IOException {
req.with("parents", parents);
return req.method("POST").withUrlPath(getApiTail()).fetch(GHCommit.class).wrapUp(repo);
}
}

View File

@@ -0,0 +1,166 @@
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.net.URL;
import static org.kohsuke.github.internal.Previews.SQUIRREL_GIRL;
/**
* A comment attached to a commit (or a specific line in a specific file of a commit.)
*
* @author Kohsuke Kawaguchi
* @see GHRepository#listCommitComments() GHRepository#listCommitComments()
* @see GHCommit#listComments() GHCommit#listComments()
* @see GHCommit#createComment(String, String, Integer, Integer) GHCommit#createComment(String, String, Integer,
* Integer)
*/
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
justification = "JSON API")
public class GHCommitComment extends GHObject implements Reactable {
private GHRepository owner;
String body, html_url, commit_id;
Integer line;
String path;
GHUser user; // not fully populated. beware.
/**
* Gets owner.
*
* @return the owner
*/
public GHRepository getOwner() {
return owner;
}
/**
* URL like
* 'https://github.com/kohsuke/sandbox-ant/commit/8ae38db0ea5837313ab5f39d43a6f73de3bd9000#commitcomment-1252827' to
* show this commit comment in a browser.
*/
public URL getHtmlUrl() {
return GitHubClient.parseURL(html_url);
}
/**
* Gets sha 1.
*
* @return the sha 1
*/
public String getSHA1() {
return commit_id;
}
/**
* Commit comment in the GitHub flavored markdown format.
*
* @return the body
*/
public String getBody() {
return body;
}
/**
* A commit comment can be on a specific line of a specific file, if so, this field points to a file. Otherwise
* null.
*
* @return the path
*/
public String getPath() {
return path;
}
/**
* A commit comment can be on a specific line of a specific file, if so, this field points to the line number in the
* file. Otherwise -1.
*
* @return the line
*/
public int getLine() {
return line != null ? line : -1;
}
/**
* Gets the user who put this comment.
*
* @return the user
* @throws IOException
* the io exception
*/
public GHUser getUser() throws IOException {
return owner == null || owner.root.isOffline() ? user : owner.root.getUser(user.login);
}
/**
* Gets the commit to which this comment is associated with.
*
* @return the commit
* @throws IOException
* the io exception
*/
public GHCommit getCommit() throws IOException {
return getOwner().getCommit(getSHA1());
}
/**
* Updates the body of the commit message.
*
* @param body
* the body
* @throws IOException
* the io exception
*/
public void update(String body) throws IOException {
owner.root.createRequest()
.method("PATCH")
.with("body", body)
.withUrlPath(getApiTail())
.fetch(GHCommitComment.class);
this.body = body;
}
@Preview(SQUIRREL_GIRL)
@Deprecated
public GHReaction createReaction(ReactionContent content) throws IOException {
return owner.root.createRequest()
.method("POST")
.withPreview(SQUIRREL_GIRL)
.with("content", content.getContent())
.withUrlPath(getApiTail() + "/reactions")
.fetch(GHReaction.class)
.wrap(owner.root);
}
@Preview(SQUIRREL_GIRL)
@Deprecated
public PagedIterable<GHReaction> listReactions() {
return owner.root.createRequest()
.withPreview(SQUIRREL_GIRL)
.withUrlPath(getApiTail() + "/reactions")
.toIterable(GHReaction[].class, item -> item.wrap(owner.root));
}
/**
* Deletes this comment.
*
* @throws IOException
* the io exception
*/
public void delete() throws IOException {
owner.root.createRequest().method("DELETE").withUrlPath(getApiTail()).send();
}
private String getApiTail() {
return String.format("/repos/%s/%s/comments/%s", owner.getOwnerName(), owner.getName(), getId());
}
GHCommitComment wrap(GHRepository owner) {
this.owner = owner;
if (owner.root.isOffline()) {
user.wrapUp(owner.root);
}
return this;
}
}

View File

@@ -23,6 +23,8 @@
*/
package org.kohsuke.github;
import java.io.IOException;
/**
* Identifies a commit in {@link GHPullRequest}.
*
@@ -31,25 +33,34 @@ package org.kohsuke.github;
public class GHCommitPointer {
private String ref, sha, label;
private GHUser user;
private GHRepository repository;
private GHRepository repo;
/**
* This points to the user who owns
* the {@link #repository}.
* This points to the user who owns the {@link #getRepository()}.
*
* @return the user
* @throws IOException
* the io exception
*/
public GHUser getUser() {
public GHUser getUser() throws IOException {
if (user != null)
return user.root.intern(user);
return user;
}
/**
* The repository that contains the commit.
*
* @return the repository
*/
public GHRepository getRepository() {
return repository;
return repo;
}
/**
* Named ref to the commit.
* Named ref to the commit. This appears to be a "short ref" that doesn't include "refs/heads/" portion.
*
* @return the ref
*/
public String getRef() {
return ref;
@@ -57,6 +68,8 @@ public class GHCommitPointer {
/**
* SHA1 of the commit.
*
* @return the sha
*/
public String getSha() {
return sha;
@@ -64,8 +77,28 @@ public class GHCommitPointer {
/**
* String that looks like "USERNAME:REF".
*
* @return the label
*/
public String getLabel() {
return label;
}
/**
* Obtains the commit that this pointer is referring to.
*
* @return the commit
* @throws IOException
* the io exception
*/
public GHCommit getCommit() throws IOException {
return getRepository().getCommit(getSha());
}
void wrapUp(GitHub root) {
if (user != null)
user.root = root;
if (repo != null)
repo.wrap(root);
}
}

View File

@@ -0,0 +1,132 @@
package org.kohsuke.github;
import java.util.Date;
/**
* Builds up query for listing commits.
*
* <p>
* Call various methods that set the filter criteria, then {@link #list()} method to actually list up the commit.
*
* <pre>
* GHRepository r = ...;
* for (GHCommit c : r.queryCommits().since(x).until(y).author("kohsuke")) {
* ...
* }
* </pre>
*
* @author Kohsuke Kawaguchi
* @see GHRepository#queryCommits() GHRepository#queryCommits()
*/
public class GHCommitQueryBuilder {
private final Requester req;
private final GHRepository repo;
GHCommitQueryBuilder(GHRepository repo) {
this.repo = repo;
this.req = repo.root.createRequest(); // requester to build up
}
/**
* GItHub login or email address by which to filter by commit author.
*
* @param author
* the author
* @return the gh commit query builder
*/
public GHCommitQueryBuilder author(String author) {
req.with("author", author);
return this;
}
/**
* Only commits containing this file path will be returned.
*
* @param path
* the path
* @return the gh commit query builder
*/
public GHCommitQueryBuilder path(String path) {
req.with("path", path);
return this;
}
/**
* Specifies the SHA1 commit / tag / branch / etc to start listing commits from.
*
* @param ref
* the ref
* @return the gh commit query builder
*/
public GHCommitQueryBuilder from(String ref) {
req.with("sha", ref);
return this;
}
/**
* Page size gh commit query builder.
*
* @param pageSize
* the page size
* @return the gh commit query builder
*/
public GHCommitQueryBuilder pageSize(int pageSize) {
req.with("per_page", pageSize);
return this;
}
/**
* Only commits after this date will be returned
*
* @param dt
* the dt
* @return the gh commit query builder
*/
public GHCommitQueryBuilder since(Date dt) {
req.with("since", GitHubClient.printDate(dt));
return this;
}
/**
* Only commits after this date will be returned
*
* @param timestamp
* the timestamp
* @return the gh commit query builder
*/
public GHCommitQueryBuilder since(long timestamp) {
return since(new Date(timestamp));
}
/**
* Only commits before this date will be returned
*
* @param dt
* the dt
* @return the gh commit query builder
*/
public GHCommitQueryBuilder until(Date dt) {
req.with("until", GitHubClient.printDate(dt));
return this;
}
/**
* Only commits before this date will be returned
*
* @param timestamp
* the timestamp
* @return the gh commit query builder
*/
public GHCommitQueryBuilder until(long timestamp) {
return until(new Date(timestamp));
}
/**
* Lists up the commits with the criteria built so far.
*
* @return the paged iterable
*/
public PagedIterable<GHCommit> list() {
return req.withUrlPath(repo.getApiTailUrl("commits")).toIterable(GHCommit[].class, item -> item.wrapUp(repo));
}
}

View File

@@ -0,0 +1,272 @@
package org.kohsuke.github;
import org.apache.commons.lang3.StringUtils;
import org.kohsuke.github.internal.Previews;
import java.io.IOException;
/**
* Search commits.
*
* @author Marc de Verdelhan
* @see GitHub#searchCommits() GitHub#searchCommits()
*/
@Preview(Previews.CLOAK)
@Deprecated
public class GHCommitSearchBuilder extends GHSearchBuilder<GHCommit> {
GHCommitSearchBuilder(GitHub root) {
super(root, CommitSearchResult.class);
req.withPreview(Previews.CLOAK);
}
/**
* Search terms.
*/
public GHCommitSearchBuilder q(String term) {
super.q(term);
return this;
}
/**
* Author gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder author(String v) {
return q("author:" + v);
}
/**
* Committer gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder committer(String v) {
return q("committer:" + v);
}
/**
* Author name gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder authorName(String v) {
return q("author-name:" + v);
}
/**
* Committer name gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder committerName(String v) {
return q("committer-name:" + v);
}
/**
* Author email gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder authorEmail(String v) {
return q("author-email:" + v);
}
/**
* Committer email gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder committerEmail(String v) {
return q("committer-email:" + v);
}
/**
* Author date gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder authorDate(String v) {
return q("author-date:" + v);
}
/**
* Committer date gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder committerDate(String v) {
return q("committer-date:" + v);
}
/**
* Merge gh commit search builder.
*
* @param merge
* the merge
* @return the gh commit search builder
*/
public GHCommitSearchBuilder merge(boolean merge) {
return q("merge:" + Boolean.valueOf(merge).toString().toLowerCase());
}
/**
* Hash gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder hash(String v) {
return q("hash:" + v);
}
/**
* Parent gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder parent(String v) {
return q("parent:" + v);
}
/**
* Tree gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder tree(String v) {
return q("tree:" + v);
}
/**
* Is gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder is(String v) {
return q("is:" + v);
}
/**
* User gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder user(String v) {
return q("user:" + v);
}
/**
* Org gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder org(String v) {
return q("org:" + v);
}
/**
* Repo gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder repo(String v) {
return q("repo:" + v);
}
/**
* Order gh commit search builder.
*
* @param v
* the v
* @return the gh commit search builder
*/
public GHCommitSearchBuilder order(GHDirection v) {
req.with("order", v);
return this;
}
/**
* Sort gh commit search builder.
*
* @param sort
* the sort
* @return the gh commit search builder
*/
public GHCommitSearchBuilder sort(Sort sort) {
req.with("sort", sort);
return this;
}
/**
* The enum Sort.
*/
public enum Sort {
AUTHOR_DATE, COMMITTER_DATE
}
private static class CommitSearchResult extends SearchResult<GHCommit> {
private GHCommit[] items;
@Override
GHCommit[] getItems(GitHub root) {
for (GHCommit commit : items) {
String repoName = getRepoName(commit.url);
try {
GHRepository repo = root.getRepository(repoName);
commit.wrapUp(repo);
} catch (IOException ioe) {
}
}
return items;
}
}
/**
* @param commitUrl
* a commit URL
* @return the repo name ("username/reponame")
*/
private static String getRepoName(String commitUrl) {
if (StringUtils.isBlank(commitUrl)) {
return null;
}
int indexOfUsername = (GitHubClient.GITHUB_URL + "/repos/").length();
String[] tokens = commitUrl.substring(indexOfUsername).split("/", 3);
return tokens[0] + '/' + tokens[1];
}
@Override
protected String getApiUrl() {
return "/search/commits";
}
}

View File

@@ -0,0 +1,11 @@
package org.kohsuke.github;
/**
* Represents the state of commit
*
* @author Kohsuke Kawaguchi
* @see GHCommitStatus
*/
public enum GHCommitState {
PENDING, SUCCESS, ERROR, FAILURE
}

View File

@@ -0,0 +1,88 @@
package org.kohsuke.github;
import java.io.IOException;
import java.net.URL;
/**
* Represents a status of a commit.
*
* @author Kohsuke Kawaguchi
* @see GHRepository#getLastCommitStatus(String) GHRepository#getLastCommitStatus(String)
* @see GHCommit#getLastStatus() GHCommit#getLastStatus()
* @see GHRepository#createCommitStatus(String, GHCommitState, String, String) GHRepository#createCommitStatus(String,
* GHCommitState, String, String)
*/
public class GHCommitStatus extends GHObject {
String state;
String target_url, description;
String context;
GHUser creator;
GHCommitStatus wrapUp(GitHub root) {
if (creator != null)
creator.wrapUp(root);
this.root = root;
return this;
}
/**
* Gets state.
*
* @return the state
*/
public GHCommitState getState() {
for (GHCommitState s : GHCommitState.values()) {
if (s.name().equalsIgnoreCase(state))
return s;
}
throw new IllegalStateException("Unexpected state: " + state);
}
/**
* The URL that this status is linked to.
* <p>
* This is the URL specified when creating a commit status.
*
* @return the target url
*/
public String getTargetUrl() {
return target_url;
}
/**
* Gets description.
*
* @return the description
*/
public String getDescription() {
return description;
}
/**
* Gets creator.
*
* @return the creator
* @throws IOException
* the io exception
*/
public GHUser getCreator() throws IOException {
return root.intern(creator);
}
/**
* Gets context.
*
* @return the context
*/
public String getContext() {
return context;
}
/**
* @deprecated This object has no HTML URL.
*/
@Override
public URL getHtmlUrl() {
return null;
}
}

View File

@@ -0,0 +1,286 @@
package org.kohsuke.github;
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.net.URL;
/**
* The model user for comparing 2 commits in the GitHub API.
*
* @author Michael Clarke
*/
public class GHCompare {
private String url, html_url, permalink_url, diff_url, patch_url;
public Status status;
private int ahead_by, behind_by, total_commits;
private Commit base_commit, merge_base_commit;
private Commit[] commits;
private GHCommit.File[] files;
private GHRepository owner;
/**
* Gets url.
*
* @return the url
*/
public URL getUrl() {
return GitHubClient.parseURL(url);
}
/**
* Gets html url.
*
* @return the html url
*/
public URL getHtmlUrl() {
return GitHubClient.parseURL(html_url);
}
/**
* Gets permalink url.
*
* @return the permalink url
*/
public URL getPermalinkUrl() {
return GitHubClient.parseURL(permalink_url);
}
/**
* Gets diff url.
*
* @return the diff url
*/
public URL getDiffUrl() {
return GitHubClient.parseURL(diff_url);
}
/**
* Gets patch url.
*
* @return the patch url
*/
public URL getPatchUrl() {
return GitHubClient.parseURL(patch_url);
}
/**
* Gets status.
*
* @return the status
*/
public Status getStatus() {
return status;
}
/**
* Gets ahead by.
*
* @return the ahead by
*/
public int getAheadBy() {
return ahead_by;
}
/**
* Gets behind by.
*
* @return the behind by
*/
public int getBehindBy() {
return behind_by;
}
/**
* Gets total commits.
*
* @return the total commits
*/
public int getTotalCommits() {
return total_commits;
}
/**
* Gets base commit.
*
* @return the base commit
*/
public Commit getBaseCommit() {
return base_commit;
}
/**
* Gets merge base commit.
*
* @return the merge base commit
*/
public Commit getMergeBaseCommit() {
return merge_base_commit;
}
/**
* Gets an array of commits.
*
* @return A copy of the array being stored in the class.
*/
public Commit[] getCommits() {
Commit[] newValue = new Commit[commits.length];
System.arraycopy(commits, 0, newValue, 0, commits.length);
return newValue;
}
/**
* Gets an array of commits.
*
* @return A copy of the array being stored in the class.
*/
public GHCommit.File[] getFiles() {
GHCommit.File[] newValue = new GHCommit.File[files.length];
System.arraycopy(files, 0, newValue, 0, files.length);
return newValue;
}
/**
* Wrap gh compare.
*
* @param owner
* the owner
* @return the gh compare
*/
public GHCompare wrap(GHRepository owner) {
this.owner = owner;
for (Commit commit : commits) {
commit.wrapUp(owner);
}
merge_base_commit.wrapUp(owner);
base_commit.wrapUp(owner);
return this;
}
/**
* Compare commits had a child commit element with additional details we want to capture. This extenstion of
* GHCommit provides that.
*/
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD" },
justification = "JSON API")
public static class Commit extends GHCommit {
private InnerCommit commit;
/**
* Gets commit.
*
* @return the commit
*/
public InnerCommit getCommit() {
return commit;
}
}
/**
* The type InnerCommit.
*/
public static class InnerCommit {
private String url, sha, message;
private User author, committer;
private Tree tree;
/**
* Gets url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Gets sha.
*
* @return the sha
*/
public String getSha() {
return sha;
}
/**
* Gets message.
*
* @return the message
*/
public String getMessage() {
return message;
}
/**
* Gets author.
*
* @return the author
*/
@WithBridgeMethods(value = User.class, castRequired = true)
public GitUser getAuthor() {
return author;
}
/**
* Gets committer.
*
* @return the committer
*/
@WithBridgeMethods(value = User.class, castRequired = true)
public GitUser getCommitter() {
return committer;
}
/**
* Gets tree.
*
* @return the tree
*/
public Tree getTree() {
return tree;
}
}
/**
* The type Tree.
*/
public static class Tree {
private String url, sha;
/**
* Gets url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Gets sha.
*
* @return the sha
*/
public String getSha() {
return sha;
}
}
/**
* The type User.
*
* @deprecated use {@link GitUser} instead.
*/
public static class User extends GitUser {
}
/**
* The enum Status.
*/
public static enum Status {
behind, ahead, identical, diverged
}
}

View File

@@ -0,0 +1,408 @@
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
/**
* A Content of a repository.
*
* @author Alexandre COLLIGNON
* @see GHRepository#getFileContent(String) GHRepository#getFileContent(String)
*/
@SuppressWarnings({ "UnusedDeclaration" })
public class GHContent extends GitHubInteractiveObject implements Refreshable {
/*
* In normal use of this class, repository field is set via wrap(), but in the code search API, there's a nested
* 'repository' field that gets populated from JSON.
*/
private GHRepository repository;
private String type;
private String encoding;
private long size;
private String sha;
private String name;
private String path;
private String target;
private String content;
private String url; // this is the API url
private String git_url; // this is the Blob url
private String html_url; // this is the UI
private String download_url;
/**
* Gets owner.
*
* @return the owner
*/
public GHRepository getOwner() {
return repository;
}
/**
* Gets type.
*
* @return the type
*/
public String getType() {
return type;
}
/**
* Gets encoding.
*
* @return the encoding
*/
public String getEncoding() {
return encoding;
}
/**
* Gets size.
*
* @return the size
*/
public long getSize() {
return size;
}
/**
* Gets sha.
*
* @return the sha
*/
public String getSha() {
return sha;
}
/**
* Gets name.
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Gets path.
*
* @return the path
*/
public String getPath() {
return path;
}
/**
* Gets target of a symlink. This will only be set if {@code "symlink".equals(getType())}
*
* @return the target
*/
public String getTarget() {
return target;
}
/**
* Retrieve the decoded content that is stored at this location.
*
* <p>
* Due to the nature of GitHub's API, you're not guaranteed that the content will already be populated, so this may
* trigger network activity, and can throw an IOException.
*
* @return the content
* @throws IOException
* the io exception
* @deprecated Use {@link #read()}
*/
@SuppressFBWarnings("DM_DEFAULT_ENCODING")
public String getContent() throws IOException {
return new String(Base64.getMimeDecoder().decode(getEncodedContent()));
}
/**
* Retrieve the base64-encoded content that is stored at this location.
*
* <p>
* Due to the nature of GitHub's API, you're not guaranteed that the content will already be populated, so this may
* trigger network activity, and can throw an IOException.
*
* @return the encoded content
* @throws IOException
* the io exception
* @deprecated Use {@link #read()}
*/
public String getEncodedContent() throws IOException {
refresh(content);
return content;
}
/**
* Gets url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Gets git url.
*
* @return the git url
*/
public String getGitUrl() {
return git_url;
}
/**
* Gets html url.
*
* @return the html url
*/
public String getHtmlUrl() {
return html_url;
}
/**
* Retrieves the actual content stored here.
*/
/**
* Retrieves the actual bytes of the blob.
*
* @return the input stream
* @throws IOException
* the io exception
*/
public InputStream read() throws IOException {
refresh(content);
if (encoding.equals("base64")) {
try {
Base64.Decoder decoder = Base64.getMimeDecoder();
return new ByteArrayInputStream(decoder.decode(content.getBytes(StandardCharsets.US_ASCII)));
} catch (IllegalArgumentException e) {
throw new AssertionError(e); // US-ASCII is mandatory
}
}
throw new UnsupportedOperationException("Unrecognized encoding: " + encoding);
}
/**
* URL to retrieve the raw content of the file. Null if this is a directory.
*
* @return the download url
* @throws IOException
* the io exception
*/
public String getDownloadUrl() throws IOException {
refresh(download_url);
return download_url;
}
/**
* Is file boolean.
*
* @return the boolean
*/
public boolean isFile() {
return "file".equals(type);
}
/**
* Is directory boolean.
*
* @return the boolean
*/
public boolean isDirectory() {
return "dir".equals(type);
}
/**
* Fully populate the data by retrieving missing data.
* <p>
* Depending on the original API call where this object is created, it may not contain everything.
*
* @throws IOException
* the io exception
*/
protected synchronized void populate() throws IOException {
root.createRequest().withUrlPath(url).fetchInto(this);
}
/**
* List immediate children of this directory.
*
* @return the paged iterable
* @throws IOException
* the io exception
*/
public PagedIterable<GHContent> listDirectoryContent() throws IOException {
if (!isDirectory())
throw new IllegalStateException(path + " is not a directory");
return root.createRequest().setRawUrlPath(url).toIterable(GHContent[].class, item -> item.wrap(repository));
}
/**
* Update gh content update response.
*
* @param newContent
* the new content
* @param commitMessage
* the commit message
* @return the gh content update response
* @throws IOException
* the io exception
*/
@SuppressFBWarnings("DM_DEFAULT_ENCODING")
public GHContentUpdateResponse update(String newContent, String commitMessage) throws IOException {
return update(newContent.getBytes(), commitMessage, null);
}
/**
* Update gh content update response.
*
* @param newContent
* the new content
* @param commitMessage
* the commit message
* @param branch
* the branch
* @return the gh content update response
* @throws IOException
* the io exception
*/
@SuppressFBWarnings("DM_DEFAULT_ENCODING")
public GHContentUpdateResponse update(String newContent, String commitMessage, String branch) throws IOException {
return update(newContent.getBytes(), commitMessage, branch);
}
/**
* Update gh content update response.
*
* @param newContentBytes
* the new content bytes
* @param commitMessage
* the commit message
* @return the gh content update response
* @throws IOException
* the io exception
*/
public GHContentUpdateResponse update(byte[] newContentBytes, String commitMessage) throws IOException {
return update(newContentBytes, commitMessage, null);
}
/**
* Update gh content update response.
*
* @param newContentBytes
* the new content bytes
* @param commitMessage
* the commit message
* @param branch
* the branch
* @return the gh content update response
* @throws IOException
* the io exception
*/
public GHContentUpdateResponse update(byte[] newContentBytes, String commitMessage, String branch)
throws IOException {
String encodedContent = Base64.getEncoder().encodeToString(newContentBytes);
Requester requester = root.createRequest()
.method("POST")
.with("path", path)
.with("message", commitMessage)
.with("sha", sha)
.with("content", encodedContent)
.method("PUT");
if (branch != null) {
requester.with("branch", branch);
}
GHContentUpdateResponse response = requester.withUrlPath(getApiRoute(repository, path))
.fetch(GHContentUpdateResponse.class);
response.getContent().wrap(repository);
response.getCommit().wrapUp(repository);
this.content = encodedContent;
return response;
}
/**
* Delete gh content update response.
*
* @param message
* the message
* @return the gh content update response
* @throws IOException
* the io exception
*/
public GHContentUpdateResponse delete(String message) throws IOException {
return delete(message, null);
}
/**
* Delete gh content update response.
*
* @param commitMessage
* the commit message
* @param branch
* the branch
* @return the gh content update response
* @throws IOException
* the io exception
*/
public GHContentUpdateResponse delete(String commitMessage, String branch) throws IOException {
Requester requester = root.createRequest()
.method("POST")
.with("path", path)
.with("message", commitMessage)
.with("sha", sha)
.method("DELETE");
if (branch != null) {
requester.with("branch", branch);
}
GHContentUpdateResponse response = requester.withUrlPath(getApiRoute(repository, path))
.fetch(GHContentUpdateResponse.class);
response.getCommit().wrapUp(repository);
return response;
}
static String getApiRoute(GHRepository repository, String path) {
return repository.getApiTailUrl("contents/" + path);
}
GHContent wrap(GHRepository owner) {
this.repository = owner;
this.root = owner.root;
return this;
}
GHContent wrap(GitHub root) {
this.root = root;
if (repository != null)
repository.wrap(root);
return this;
}
/**
* Fully populate the data by retrieving missing data.
*
* Depending on the original API call where this object is created, it may not contain everything.
*/
@Override
public synchronized void refresh() throws IOException {
root.createRequest().setRawUrlPath(url).fetchInto(this);
}
}

View File

@@ -0,0 +1,114 @@
package org.kohsuke.github;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
/**
* Used to create/update content.
*
* <p>
* Call various methods to build up parameters, then call {@link #commit()} to make the change effective.
*
* @author Kohsuke Kawaguchi
* @see GHRepository#createContent() GHRepository#createContent()
*/
public final class GHContentBuilder {
private final GHRepository repo;
private final Requester req;
private String path;
GHContentBuilder(GHRepository repo) {
this.repo = repo;
this.req = repo.root.createRequest().method("PUT");
}
/**
* Path gh content builder.
*
* @param path
* the path
* @return the gh content builder
*/
public GHContentBuilder path(String path) {
this.path = path;
req.with("path", path);
return this;
}
/**
* Branch gh content builder.
*
* @param branch
* the branch
* @return the gh content builder
*/
public GHContentBuilder branch(String branch) {
req.with("branch", branch);
return this;
}
/**
* Used when updating (but not creating a new content) to specify the blob SHA of the file being replaced.
*
* @param sha
* the sha
* @return the gh content builder
*/
public GHContentBuilder sha(String sha) {
req.with("sha", sha);
return this;
}
/**
* Content gh content builder.
*
* @param content
* the content
* @return the gh content builder
*/
public GHContentBuilder content(byte[] content) {
req.with("content", Base64.getEncoder().encodeToString(content));
return this;
}
/**
* Content gh content builder.
*
* @param content
* the content
* @return the gh content builder
*/
public GHContentBuilder content(String content) {
return content(content.getBytes(StandardCharsets.UTF_8));
}
/**
* Message gh content builder.
*
* @param commitMessage
* the commit message
* @return the gh content builder
*/
public GHContentBuilder message(String commitMessage) {
req.with("message", commitMessage);
return this;
}
/**
* Commits a new content.
*
* @return the gh content update response
* @throws IOException
* the io exception
*/
public GHContentUpdateResponse commit() throws IOException {
GHContentUpdateResponse response = req.withUrlPath(GHContent.getApiRoute(repo, path))
.fetch(GHContentUpdateResponse.class);
response.getContent().wrap(repo);
response.getCommit().wrapUp(repo);
return response;
}
}

View File

@@ -0,0 +1,136 @@
package org.kohsuke.github;
/**
* Search code for {@link GHContent}.
*
* @author Kohsuke Kawaguchi
* @see GitHub#searchContent() GitHub#searchContent()
*/
public class GHContentSearchBuilder extends GHSearchBuilder<GHContent> {
GHContentSearchBuilder(GitHub root) {
super(root, ContentSearchResult.class);
}
/**
* Search terms.
*/
public GHContentSearchBuilder q(String term) {
super.q(term);
return this;
}
/**
* In gh content search builder.
*
* @param v
* the v
* @return the gh content search builder
*/
public GHContentSearchBuilder in(String v) {
return q("in:" + v);
}
/**
* Language gh content search builder.
*
* @param v
* the v
* @return the gh content search builder
*/
public GHContentSearchBuilder language(String v) {
return q("language:" + v);
}
/**
* Fork gh content search builder.
*
* @param v
* the v
* @return the gh content search builder
*/
public GHContentSearchBuilder fork(String v) {
return q("fork:" + v);
}
/**
* Size gh content search builder.
*
* @param v
* the v
* @return the gh content search builder
*/
public GHContentSearchBuilder size(String v) {
return q("size:" + v);
}
/**
* Path gh content search builder.
*
* @param v
* the v
* @return the gh content search builder
*/
public GHContentSearchBuilder path(String v) {
return q("path:" + v);
}
/**
* Filename gh content search builder.
*
* @param v
* the v
* @return the gh content search builder
*/
public GHContentSearchBuilder filename(String v) {
return q("filename:" + v);
}
/**
* Extension gh content search builder.
*
* @param v
* the v
* @return the gh content search builder
*/
public GHContentSearchBuilder extension(String v) {
return q("extension:" + v);
}
/**
* User gh content search builder.
*
* @param v
* the v
* @return the gh content search builder
*/
public GHContentSearchBuilder user(String v) {
return q("user:" + v);
}
/**
* Repo gh content search builder.
*
* @param v
* the v
* @return the gh content search builder
*/
public GHContentSearchBuilder repo(String v) {
return q("repo:" + v);
}
private static class ContentSearchResult extends SearchResult<GHContent> {
private GHContent[] items;
@Override
GHContent[] getItems(GitHub root) {
for (GHContent item : items)
item.wrap(root);
return items;
}
}
@Override
protected String getApiUrl() {
return "/search/code";
}
}

View File

@@ -0,0 +1,27 @@
package org.kohsuke.github;
/**
* The response that is returned when updating repository content.
*/
public class GHContentUpdateResponse {
private GHContent content;
private GHCommit commit;
/**
* Gets content.
*
* @return the content
*/
public GHContent getContent() {
return content;
}
/**
* Gets commit.
*
* @return the commit
*/
public GHCommit getCommit() {
return commit;
}
}

View File

@@ -0,0 +1,20 @@
package org.kohsuke.github;
/**
* {@link GHContent} with license information.
*
* @author Kohsuke Kawaguchi
* @see <a href="https://developer.github.com/v3/licenses/#get-a-repositorys-license">documentation</a>
* @see GHRepository#getLicense()
*/
class GHContentWithLicense extends GHContent {
GHLicense license;
@Override
GHContentWithLicense wrap(GHRepository owner) {
super.wrap(owner);
if (license != null)
license.wrap(owner.root);
return this;
}
}

View File

@@ -0,0 +1,134 @@
package org.kohsuke.github;
import java.io.IOException;
import static org.kohsuke.github.internal.Previews.BAPTISTE;
/**
* Creates a repository
*
* @author Kohsuke Kawaguchi
*/
public class GHCreateRepositoryBuilder extends GHRepositoryBuilder<GHCreateRepositoryBuilder> {
public GHCreateRepositoryBuilder(String name, GitHub root, String apiTail) {
super(GHCreateRepositoryBuilder.class, root, null);
requester.method("POST").withUrlPath(apiTail);
try {
name(name);
} catch (IOException e) {
// not going to happen here
}
}
/**
* Creates a default .gitignore
*
* @param language
* template to base the ignore file on
* @return a builder to continue with building See https://developer.github.com/v3/repos/#create
* @throws IOException
* In case of any networking error or error from the server.
*/
public GHCreateRepositoryBuilder gitignoreTemplate(String language) throws IOException {
return with("gitignore_template", language);
}
/**
* Desired license template to apply
*
* @param license
* template to base the license file on
* @return a builder to continue with building See https://developer.github.com/v3/repos/#create
* @throws IOException
* In case of any networking error or error from the server.
*/
public GHCreateRepositoryBuilder licenseTemplate(String license) throws IOException {
return with("license_template", license);
}
/**
* If true, create an initial commit with empty README.
*
* @param enabled
* true if enabled
* @return a builder to continue with building
* @throws IOException
* In case of any networking error or error from the server.
*/
public GHCreateRepositoryBuilder autoInit(boolean enabled) throws IOException {
return with("auto_init", enabled);
}
/**
* The team that gets granted access to this repository. Only valid for creating a repository in an organization.
*
* @param team
* team to grant access to
* @return a builder to continue with building
* @throws IOException
* In case of any networking error or error from the server.
*/
public GHCreateRepositoryBuilder team(GHTeam team) throws IOException {
if (team != null)
return with("team_id", team.getId());
return this;
}
/**
* Specifies whether the repository is a template.
*
* @param enabled
* true if enabled
* @return a builder to continue with building
* @throws IOException
* In case of any networking error or error from the server.
* @deprecated Use {@link #isTemplate(boolean)} method instead
*/
@Deprecated
public GHCreateRepositoryBuilder templateRepository(boolean enabled) throws IOException {
return isTemplate(enabled);
}
/**
* Specifies the ownership of the repository.
*
* @param owner
* organization or personage
* @return a builder to continue with building
* @throws IOException
* In case of any networking error or error from the server.
*/
public GHCreateRepositoryBuilder owner(String owner) throws IOException {
return with("owner", owner);
}
/**
* Create repository from template repository
*
* @param templateOwner
* template repository owner
* @param templateRepo
* template repository
* @return a builder to continue with building
* @see <a href="https://developer.github.com/v3/previews/">GitHub API Previews</a>
*/
@Preview(BAPTISTE)
@Deprecated
public GHCreateRepositoryBuilder fromTemplateRepository(String templateOwner, String templateRepo) {
requester.withPreview(BAPTISTE).withUrlPath("/repos/" + templateOwner + "/" + templateRepo + "/generate");
return this;
}
/**
* Creates a repository with all the parameters.
*
* @return the gh repository
* @throws IOException
* if repository cannot be created
*/
public GHRepository create() throws IOException {
return done();
}
}

View File

@@ -0,0 +1,90 @@
package org.kohsuke.github;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.io.IOException;
/**
* The type GHDeployKey.
*/
public class GHDeployKey {
protected String url, key, title;
protected boolean verified;
protected long id;
private GHRepository owner;
/**
* Gets id.
*
* @return the id
*/
public long getId() {
return id;
}
/**
* Gets key.
*
* @return the key
*/
public String getKey() {
return key;
}
/**
* Gets title.
*
* @return the title
*/
public String getTitle() {
return title;
}
/**
* Gets url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Is verified boolean.
*
* @return the boolean
*/
public boolean isVerified() {
return verified;
}
/**
* Wrap gh deploy key.
*
* @param repo
* the repo
* @return the gh deploy key
*/
public GHDeployKey wrap(GHRepository repo) {
this.owner = repo;
return this;
}
public String toString() {
return new ToStringBuilder(this).append("title", title).append("id", id).append("key", key).toString();
}
/**
* Delete.
*
* @throws IOException
* the io exception
*/
public void delete() throws IOException {
owner.root.createRequest()
.method("DELETE")
.withUrlPath(String.format("/repos/%s/%s/keys/%d", owner.getOwnerName(), owner.getName(), id))
.send();
}
}

View File

@@ -0,0 +1,206 @@
package org.kohsuke.github;
import org.kohsuke.github.internal.Previews;
import java.io.IOException;
import java.net.URL;
import java.util.Map;
/**
* Represents a deployment
*
* @see <a href="https://developer.github.com/v3/repos/deployments/">documentation</a>
* @see GHRepository#listDeployments(String, String, String, String) GHRepository#listDeployments(String, String,
* String, String)
* @see GHRepository#getDeployment(long) GHRepository#getDeployment(long)
*/
public class GHDeployment extends GHObject {
private GHRepository owner;
protected String sha;
protected String ref;
protected String task;
protected Object payload;
protected String environment;
protected String description;
protected String statuses_url;
protected String repository_url;
protected GHUser creator;
protected String original_environment;
protected boolean transient_environment;
protected boolean production_environment;
GHDeployment wrap(GHRepository owner) {
this.owner = owner;
this.root = owner.root;
if (creator != null)
creator.wrapUp(root);
return this;
}
/**
* Gets statuses url.
*
* @return the statuses url
*/
public URL getStatusesUrl() {
return GitHubClient.parseURL(statuses_url);
}
/**
* Gets repository url.
*
* @return the repository url
*/
public URL getRepositoryUrl() {
return GitHubClient.parseURL(repository_url);
}
/**
* Gets task.
*
* @return the task
*/
public String getTask() {
return task;
}
/**
* Gets payload. <b>NOTE:</b> only use this method if you can guarantee the payload will be a simple string,
* otherwise use {@link #getPayloadObject()}.
*
* @return the payload
*/
public String getPayload() {
return (String) payload;
}
/**
* Gets payload. <b>NOTE:</b> only use this method if you can guarantee the payload will be a JSON object (Map),
* otherwise use {@link #getPayloadObject()}.
*
* @return the payload
*/
public Map<String, Object> getPayloadMap() {
return (Map<String, Object>) payload;
}
/**
* Gets payload without assuming its type. It could be a String or a Map.
*
* @return the payload
*/
public Object getPayloadObject() {
return payload;
}
/**
* The environment defined when the deployment was first created.
*
* @deprecated until preview feature has graduated to stable
*
* @return the original deployment environment
*/
@Deprecated
@Preview(Previews.FLASH)
public String getOriginalEnvironment() {
return original_environment;
}
/**
* Gets environment.
*
* @return the environment
*/
public String getEnvironment() {
return environment;
}
/**
* Specifies if the given environment is specific to the deployment and will no longer exist at some point in the
* future.
*
* @deprecated until preview feature has graduated to stable
*
* @return the environment is transient
*/
@Deprecated
@Preview(Previews.ANT_MAN)
public boolean isTransientEnvironment() {
return transient_environment;
}
/**
* Specifies if the given environment is one that end-users directly interact with.
*
* @deprecated until preview feature has graduated to stable
*
* @return the environment is used by end-users directly
*/
@Deprecated
@Preview(Previews.ANT_MAN)
public boolean isProductionEnvironment() {
return production_environment;
}
/**
* Gets creator.
*
* @return the creator
* @throws IOException
* the io exception
*/
public GHUser getCreator() throws IOException {
return root.intern(creator);
}
/**
* Gets ref.
*
* @return the ref
*/
public String getRef() {
return ref;
}
/**
* Gets sha.
*
* @return the sha
*/
public String getSha() {
return sha;
}
/**
* @deprecated This object has no HTML URL.
*/
@Override
public URL getHtmlUrl() {
return null;
}
/**
* Create status gh deployment status builder.
*
* @param state
* the state
* @return the gh deployment status builder
*/
public GHDeploymentStatusBuilder createStatus(GHDeploymentState state) {
return new GHDeploymentStatusBuilder(owner, getId(), state);
}
/**
* List statuses paged iterable.
*
* @return the paged iterable
*/
public PagedIterable<GHDeploymentStatus> listStatuses() {
return root.createRequest()
.withUrlPath(statuses_url)
.withPreview(Previews.ANT_MAN)
.withPreview(Previews.FLASH)
.toIterable(GHDeploymentStatus[].class, item -> item.wrap(owner));
}
}

View File

@@ -0,0 +1,180 @@
package org.kohsuke.github;
import org.kohsuke.github.internal.Previews;
import java.io.IOException;
import java.util.List;
/**
* The type GHDeploymentBuilder.
*/
// Based on https://developer.github.com/v3/repos/deployments/#create-a-deployment
public class GHDeploymentBuilder {
private final GHRepository repo;
private final Requester builder;
/**
* Instantiates a new Gh deployment builder.
*
* @param repo
* the repo
*/
public GHDeploymentBuilder(GHRepository repo) {
this.repo = repo;
this.builder = repo.root.createRequest()
.withPreview(Previews.ANT_MAN)
.withPreview(Previews.FLASH)
.method("POST");
}
/**
* Instantiates a new Gh deployment builder.
*
* @param repo
* the repo
* @param ref
* the ref
*/
public GHDeploymentBuilder(GHRepository repo, String ref) {
this(repo);
ref(ref);
}
/**
* Ref gh deployment builder.
*
* @param branch
* the branch
*
* @return the gh deployment builder
*/
public GHDeploymentBuilder ref(String branch) {
builder.with("ref", branch);
return this;
}
/**
* Task gh deployment builder.
*
* @param task
* the task
*
* @return the gh deployment builder
*/
public GHDeploymentBuilder task(String task) {
builder.with("task", task);
return this;
}
/**
* Auto merge gh deployment builder.
*
* @param autoMerge
* the auto merge
*
* @return the gh deployment builder
*/
public GHDeploymentBuilder autoMerge(boolean autoMerge) {
builder.with("auto_merge", autoMerge);
return this;
}
/**
* Required contexts gh deployment builder.
*
* @param requiredContexts
* the required contexts
*
* @return the gh deployment builder
*/
public GHDeploymentBuilder requiredContexts(List<String> requiredContexts) {
builder.with("required_contexts", requiredContexts);
return this;
}
/**
* Payload gh deployment builder.
*
* @param payload
* the payload
*
* @return the gh deployment builder
*/
public GHDeploymentBuilder payload(String payload) {
builder.with("payload", payload);
return this;
}
/**
* Environment gh deployment builder.
*
* @param environment
* the environment
*
* @return the gh deployment builder
*/
public GHDeploymentBuilder environment(String environment) {
builder.with("environment", environment);
return this;
}
/**
* Specifies if the given environment is specific to the deployment and will no longer exist at some point in the
* future.
*
* @deprecated until preview feature has graduated to stable
*
* @param transientEnvironment
* the environment is transient
*
* @return the gh deployment builder
*/
@Deprecated
@Preview(Previews.ANT_MAN)
public GHDeploymentBuilder transientEnvironment(boolean transientEnvironment) {
builder.with("transient_environment", transientEnvironment);
return this;
}
/**
* Specifies if the given environment is one that end-users directly interact with.
*
* @deprecated until preview feature has graduated to stable
*
* @param productionEnvironment
* the environment is used by end-users directly
*
* @return the gh deployment builder
*/
@Deprecated
@Preview(Previews.ANT_MAN)
public GHDeploymentBuilder productionEnvironment(boolean productionEnvironment) {
builder.with("production_environment", productionEnvironment);
return this;
}
/**
* Description gh deployment builder.
*
* @param description
* the description
*
* @return the gh deployment builder
*/
public GHDeploymentBuilder description(String description) {
builder.with("description", description);
return this;
}
/**
* Create gh deployment.
*
* @return the gh deployment
*
* @throws IOException
* the io exception
*/
public GHDeployment create() throws IOException {
return builder.withUrlPath(repo.getApiTailUrl("deployments")).fetch(GHDeployment.class).wrap(repo);
}
}

View File

@@ -0,0 +1,40 @@
package org.kohsuke.github;
import org.kohsuke.github.internal.Previews;
/**
* Represents the state of deployment
*/
public enum GHDeploymentState {
PENDING,
SUCCESS,
ERROR,
FAILURE,
/**
* The state of the deployment currently reflects it's in progress.
*
* @deprecated until preview feature has graduated to stable
*/
@Deprecated
@Preview(Previews.FLASH)
IN_PROGRESS,
/**
* The state of the deployment currently reflects it's queued up for processing.
*
* @deprecated until preview feature has graduated to stable
*/
@Deprecated
@Preview(Previews.FLASH)
QUEUED,
/**
* The state of the deployment currently reflects it's no longer active.
*
* @deprecated until preview feature has graduated to stable
*/
@Deprecated
@Preview(Previews.ANT_MAN)
INACTIVE
}

View File

@@ -0,0 +1,112 @@
package org.kohsuke.github;
import org.kohsuke.github.internal.Previews;
import java.net.URL;
import java.util.Locale;
/**
* The type GHDeploymentStatus.
*/
public class GHDeploymentStatus extends GHObject {
private GHRepository owner;
protected GHUser creator;
protected String state;
protected String description;
protected String target_url;
protected String log_url;
protected String deployment_url;
protected String repository_url;
protected String environment_url;
/**
* Wrap gh deployment status.
*
* @param owner
* the owner
*
* @return the gh deployment status
*/
public GHDeploymentStatus wrap(GHRepository owner) {
this.owner = owner;
this.root = owner.root;
if (creator != null)
creator.wrapUp(root);
return this;
}
/**
* Gets target url.
*
* @deprecated Target url is deprecated in favor of {@link #getLogUrl() getLogUrl}
*
* @return the target url
*/
@Deprecated
public URL getTargetUrl() {
return GitHubClient.parseURL(target_url);
}
/**
* Gets target url.
* <p>
* This method replaces {@link #getTargetUrl() getTargetUrl}}.
*
* @deprecated until preview feature has graduated to stable
*
* @return the target url
*/
@Deprecated
@Preview(Previews.ANT_MAN)
public URL getLogUrl() {
return GitHubClient.parseURL(log_url);
}
/**
* Gets deployment url.
*
* @return the deployment url
*/
public URL getDeploymentUrl() {
return GitHubClient.parseURL(deployment_url);
}
/**
* Gets deployment environment url.
*
* @deprecated until preview feature has graduated to stable
*
* @return the deployment environment url
*/
@Deprecated
@Preview(Previews.ANT_MAN)
public URL getEnvironmentUrl() {
return GitHubClient.parseURL(environment_url);
}
/**
* Gets repository url.
*
* @return the repository url
*/
public URL getRepositoryUrl() {
return GitHubClient.parseURL(repository_url);
}
/**
* Gets state.
*
* @return the state
*/
public GHDeploymentState getState() {
return GHDeploymentState.valueOf(state.toUpperCase(Locale.ENGLISH));
}
/**
* @deprecated This object has no HTML URL.
*/
@Override
public URL getHtmlUrl() {
return null;
}
}

View File

@@ -0,0 +1,158 @@
package org.kohsuke.github;
import org.kohsuke.github.internal.Previews;
import java.io.IOException;
/**
* Creates a new deployment status.
*
* @see GHDeployment#createStatus(GHDeploymentState) GHDeployment#createStatus(GHDeploymentState)
*/
public class GHDeploymentStatusBuilder {
private final Requester builder;
private GHRepository repo;
private long deploymentId;
/**
* Instantiates a new Gh deployment status builder.
*
* @param repo
* the repo
* @param deploymentId
* the deployment id
* @param state
* the state
*
* @deprecated Use {@link GHDeployment#createStatus(GHDeploymentState)}
*/
@Deprecated
public GHDeploymentStatusBuilder(GHRepository repo, int deploymentId, GHDeploymentState state) {
this(repo, (long) deploymentId, state);
}
GHDeploymentStatusBuilder(GHRepository repo, long deploymentId, GHDeploymentState state) {
this.repo = repo;
this.deploymentId = deploymentId;
this.builder = repo.root.createRequest()
.withPreview(Previews.ANT_MAN)
.withPreview(Previews.FLASH)
.method("POST");
this.builder.with("state", state);
}
/**
* Add an inactive status to all prior non-transient, non-production environment deployments with the same
* repository and environment name as the created status's deployment.
*
* @deprecated until preview feature has graduated to stable
*
* @param autoInactive
* Add inactive status flag
*
* @return the gh deployment status builder
*/
@Deprecated
@Preview({ Previews.ANT_MAN, Previews.FLASH })
public GHDeploymentStatusBuilder autoInactive(boolean autoInactive) {
this.builder.with("auto_inactive", autoInactive);
return this;
}
/**
* Description gh deployment status builder.
*
* @param description
* the description
*
* @return the gh deployment status builder
*/
public GHDeploymentStatusBuilder description(String description) {
this.builder.with("description", description);
return this;
}
/**
* Name for the target deployment environment, which can be changed when setting a deploy status.
*
* @deprecated until preview feature has graduated to stable
*
* @param environment
* the environment name
*
* @return the gh deployment status builder
*/
@Deprecated
@Preview(Previews.FLASH)
public GHDeploymentStatusBuilder environment(String environment) {
this.builder.with("environment", environment);
return this;
}
/**
* The URL for accessing the environment
*
* @deprecated until preview feature has graduated to stable
*
* @param environmentUrl
* the environment url
*
* @return the gh deployment status builder
*/
@Deprecated
@Preview(Previews.ANT_MAN)
public GHDeploymentStatusBuilder environmentUrl(String environmentUrl) {
this.builder.with("environment_url", environmentUrl);
return this;
}
/**
* The full URL of the deployment's output.
* <p>
* This method replaces {@link #targetUrl(String) targetUrl}.
*
* @deprecated until preview feature has graduated to stable
*
* @param logUrl
* the deployment output url
*
* @return the gh deployment status builder
*/
@Deprecated
@Preview(Previews.ANT_MAN)
public GHDeploymentStatusBuilder logUrl(String logUrl) {
this.builder.with("log_url", logUrl);
return this;
}
/**
* Target url gh deployment status builder.
*
* @deprecated Target url is deprecated in favor of {@link #logUrl(String) logUrl}
*
* @param targetUrl
* the target url
*
* @return the gh deployment status builder
*/
@Deprecated
public GHDeploymentStatusBuilder targetUrl(String targetUrl) {
this.builder.with("target_url", targetUrl);
return this;
}
/**
* Create gh deployment status.
*
* @return the gh deployment status
*
* @throws IOException
* the io exception
*/
public GHDeploymentStatus create() throws IOException {
return builder.withUrlPath(repo.getApiTailUrl("deployments/" + deploymentId + "/statuses"))
.fetch(GHDeploymentStatus.class)
.wrap(repo);
}
}

View File

@@ -1,8 +1,10 @@
package org.kohsuke.github;
/**
* Sort direction
*
* @author Kohsuke Kawaguchi
*/
class JsonOrganization {
public GHOrganization organization;
public enum GHDirection {
ASC, DESC
}

View File

@@ -0,0 +1,230 @@
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.kohsuke.github.internal.Previews;
import java.io.IOException;
import java.net.URL;
import java.util.Objects;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
/**
* A discussion in GitHub Team.
*
* @author Charles Moulliard
* @see <a href="https://developer.github.com/v3/teams/discussions">GitHub Team Discussions</a>
*/
public class GHDiscussion extends GHObject {
private GHTeam team;
private long number;
private String body, title, htmlUrl;
@JsonProperty(value = "private")
private boolean isPrivate;
@Override
public URL getHtmlUrl() throws IOException {
return GitHubClient.parseURL(htmlUrl);
}
GHDiscussion wrapUp(GHTeam team) {
this.team = team;
return this;
}
/**
* Get the team to which this discussion belongs.
*
* @return the team for this discussion
*/
@Nonnull
public GHTeam getTeam() {
return team;
}
/**
* Get the title of the discussion.
*
* @return the title
*/
public String getTitle() {
return title;
}
/**
* The description of this discussion.
*
* @return the body
*/
public String getBody() {
return body;
}
/**
* The number of this discussion.
*
* @return the number
*/
public long getNumber() {
return number;
}
/**
* The id number of this discussion. GitHub discussions have "number" instead of "id". This is provided for
* convenience.
*
* @return the id number for this discussion
* @see #getNumber()
*/
@Override
public long getId() {
return getNumber();
}
/**
* Whether the discussion is private to the team.
*
* @return {@code true} if discussion is private.
*/
public boolean isPrivate() {
return isPrivate;
}
/**
* Begins the creation of a new instance.
*
* Consumer must call {@link GHDiscussion.Creator#done()} to commit changes.
*
* @param team
* the team in which the discussion will be created.
* @return a {@link GHLabel.Creator}
* @throws IOException
* the io exception
*/
static GHDiscussion.Creator create(GHTeam team) throws IOException {
return new GHDiscussion.Creator(team);
}
static GHDiscussion read(GHTeam team, long discussionNumber) throws IOException {
return team.root.createRequest()
.setRawUrlPath(getRawUrlPath(team, discussionNumber))
.fetch(GHDiscussion.class)
.wrapUp(team);
}
static PagedIterable<GHDiscussion> readAll(GHTeam team) throws IOException {
return team.root.createRequest()
.setRawUrlPath(getRawUrlPath(team, null))
.toIterable(GHDiscussion[].class, item -> item.wrapUp(team));
}
/**
* Begins a batch update
*
* Consumer must call {@link GHDiscussion.Updater#done()} to commit changes.
*
* @return a {@link GHDiscussion.Updater}
*/
@Preview(Previews.SQUIRREL_GIRL)
@Deprecated
public GHDiscussion.Updater update() {
return new GHDiscussion.Updater(this);
}
/**
* Begins a single property update.
*
* @return a {@link GHDiscussion.Setter}
*/
@Preview(Previews.SQUIRREL_GIRL)
@Deprecated
public GHDiscussion.Setter set() {
return new GHDiscussion.Setter(this);
}
/**
* Delete the discussion
*
* @throws IOException
* the io exception
*/
public void delete() throws IOException {
team.root.createRequest().method("DELETE").setRawUrlPath(getRawUrlPath(team, number)).send();
}
private static String getRawUrlPath(@Nonnull GHTeam team, @CheckForNull Long discussionNumber) {
return team.getUrl().toString() + "/discussions" + (discussionNumber == null ? "" : "/" + discussionNumber);
}
/**
* A {@link GHLabelBuilder} that updates a single property per request
*
* {@link #done()} is called automatically after the property is set.
*/
public static class Setter extends GHDiscussionBuilder<GHDiscussion> {
private Setter(@Nonnull GHDiscussion base) {
super(GHDiscussion.class, base.team, base);
requester.method("PATCH").setRawUrlPath(base.getUrl().toString());
}
}
/**
* A {@link GHLabelBuilder} that allows multiple properties to be updated per request.
*
* Consumer must call {@link #done()} to commit changes.
*/
public static class Updater extends GHDiscussionBuilder<Updater> {
private Updater(@Nonnull GHDiscussion base) {
super(GHDiscussion.Updater.class, base.team, base);
requester.method("PATCH").setRawUrlPath(base.getUrl().toString());
}
}
/**
* A {@link GHLabelBuilder} that creates a new {@link GHLabel}
*
* Consumer must call {@link #done()} to create the new instance.
*/
public static class Creator extends GHDiscussionBuilder<Creator> {
private Creator(@Nonnull GHTeam team) {
super(GHDiscussion.Creator.class, team, null);
requester.method("POST").setRawUrlPath(getRawUrlPath(team, null));
}
/**
* Sets whether this discussion is private to this team.
*
* @param value
* privacy of this discussion
* @return either a continuing builder or an updated {@link GHDiscussion}
* @throws IOException
* if there is an I/O Exception
*/
@Nonnull
public Creator private_(boolean value) throws IOException {
return with("private", value);
}
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
GHDiscussion that = (GHDiscussion) o;
return number == that.number && Objects.equals(getUrl(), that.getUrl()) && Objects.equals(team, that.team)
&& Objects.equals(body, that.body) && Objects.equals(title, that.title);
}
@Override
public int hashCode() {
return Objects.hash(team, number, body, title);
}
}

View File

@@ -0,0 +1,80 @@
package org.kohsuke.github;
import java.io.IOException;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
/**
* Base class for creating or updating a discussion.
*
* @param <S>
* Intermediate return type for this builder returned by calls to {@link #with(String, Object)}. If {@link S}
* the same as {@link GHLabel}, this builder will commit changes after each call to
* {@link #with(String, Object)}.
*/
class GHDiscussionBuilder<S> extends AbstractBuilder<GHDiscussion, S> {
private final GHTeam team;
/**
*
* @param intermediateReturnType
* Intermediate return type for this builder returned by calls to {@link #with(String, Object)}. If
* {@link S} the same as {@link GHDiscussion}, this builder will commit changes after each call to
* {@link #with(String, Object)}.
* @param team
* the GitHub team. Updates will be sent to the root of this team.
* @param baseInstance
* instance on which to base this builder. If {@code null} a new instance will be created.
*/
protected GHDiscussionBuilder(@Nonnull Class<S> intermediateReturnType,
@Nonnull GHTeam team,
@CheckForNull GHDiscussion baseInstance) {
super(GHDiscussion.class, intermediateReturnType, team.root, baseInstance);
this.team = team;
if (baseInstance != null) {
requester.with("title", baseInstance.getTitle());
requester.with("body", baseInstance.getBody());
}
}
/**
* Title for this discussion.
*
* @param value
* title of discussion
* @return either a continuing builder or an updated {@link GHDiscussion}
* @throws IOException
* if there is an I/O Exception
*/
@Nonnull
public S title(String value) throws IOException {
return with("title", value);
}
/**
* Body content for this discussion.
*
* @param value
* body of discussion*
* @return either a continuing builder or an updated {@link GHDiscussion}
* @throws IOException
* if there is an I/O Exception
*/
@Nonnull
public S body(String value) throws IOException {
return with("body", value);
}
/**
* {@inheritDoc}
*/
@Nonnull
@Override
public GHDiscussion done() throws IOException {
return super.done().wrapUp(team);
}
}

View File

@@ -0,0 +1,88 @@
/*
* The MIT License
*
* Copyright (c) 2010, Kohsuke Kawaguchi
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
/**
* Represents an email of GitHub.
*
* @author Kelly Campbell
*/
@SuppressFBWarnings(
value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD",
"NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD" },
justification = "JSON API")
public class GHEmail {
protected String email;
protected boolean primary;
protected boolean verified;
/**
* Gets email.
*
* @return the email
*/
public String getEmail() {
return email;
}
/**
* Is primary boolean.
*
* @return the boolean
*/
public boolean isPrimary() {
return primary;
}
/**
* Is verified boolean.
*
* @return the boolean
*/
public boolean isVerified() {
return verified;
}
@Override
public String toString() {
return "Email:" + email;
}
@Override
public int hashCode() {
return email.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof GHEmail) {
GHEmail that = (GHEmail) obj;
return this.email.equals(that.email);
}
return false;
}
}

View File

@@ -0,0 +1,82 @@
package org.kohsuke.github;
import java.util.Locale;
/**
* Hook event type.
*
* @author Kohsuke Kawaguchi
* @see GHEventInfo
* @see <a href="https://developer.github.com/v3/activity/events/types/">Event type reference</a>
*/
public enum GHEvent {
CHECK_RUN,
CHECK_SUITE,
CODE_SCANNING_ALERT,
COMMIT_COMMENT,
CONTENT_REFERENCE,
CREATE,
DELETE,
DEPLOY_KEY,
DEPLOYMENT,
DEPLOYMENT_STATUS,
DOWNLOAD,
FOLLOW,
FORK,
FORK_APPLY,
GITHUB_APP_AUTHORIZATION,
GIST,
GOLLUM,
INSTALLATION,
INSTALLATION_REPOSITORIES,
INTEGRATION_INSTALLATION_REPOSITORIES,
ISSUE_COMMENT,
ISSUES,
LABEL,
MARKETPLACE_PURCHASE,
MEMBER,
MEMBERSHIP,
META,
MILESTONE,
ORGANIZATION,
ORG_BLOCK,
PACKAGE,
PAGE_BUILD,
PROJECT_CARD,
PROJECT_COLUMN,
PROJECT,
PING,
PUBLIC,
PULL_REQUEST,
PULL_REQUEST_REVIEW,
PULL_REQUEST_REVIEW_COMMENT,
PUSH,
REGISTRY_PACKAGE,
RELEASE,
REPOSITORY_DISPATCH, // only valid for org hooks
REPOSITORY,
REPOSITORY_IMPORT,
REPOSITORY_VULNERABILITY_ALERT,
SECURITY_ADVISORY,
STAR,
STATUS,
TEAM,
TEAM_ADD,
WATCH,
WORKFLOW_DISPATCH,
WORKFLOW_RUN,
/**
* Special event type that means "every possible event"
*/
ALL;
/**
* Returns GitHub's internal representation of this event.
*/
String symbol() {
if (this == ALL)
return "*";
return name().toLowerCase(Locale.ENGLISH);
}
}

View File

@@ -0,0 +1,149 @@
package org.kohsuke.github;
import com.fasterxml.jackson.databind.node.ObjectNode;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.util.Date;
/**
* Represents an event.
*
* @author Kohsuke Kawaguchi
*/
@SuppressFBWarnings(value = "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", justification = "JSON API")
public class GHEventInfo extends GitHubInteractiveObject {
// we don't want to expose Jackson dependency to the user. This needs databinding
private ObjectNode payload;
private long id;
private String created_at;
private String type;
// these are all shallow objects
private GHEventRepository repo;
private GHUser actor;
private GHOrganization org;
/**
* Inside the event JSON model, GitHub uses a slightly different format.
*/
@SuppressFBWarnings(
value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD",
"UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR" },
justification = "JSON API")
public static class GHEventRepository {
@SuppressFBWarnings(value = "UUF_UNUSED_FIELD", justification = "We don't provide it in API now")
private long id;
@SuppressFBWarnings(value = "UUF_UNUSED_FIELD", justification = "We don't provide it in API now")
private String url; // repository API URL
private String name; // owner/repo
}
/**
* Gets type.
*
* @return the type
*/
public GHEvent getType() {
String t = type;
if (t.endsWith("Event"))
t = t.substring(0, t.length() - 5);
for (GHEvent e : GHEvent.values()) {
if (e.name().replace("_", "").equalsIgnoreCase(t))
return e;
}
return null; // unknown event type
}
GHEventInfo wrapUp(GitHub root) {
this.root = root;
return this;
}
/**
* Gets id.
*
* @return the id
*/
public long getId() {
return id;
}
/**
* Gets created at.
*
* @return the created at
*/
public Date getCreatedAt() {
return GitHubClient.parseDate(created_at);
}
/**
* Gets repository.
*
* @return Repository where the change was made.
* @throws IOException
* on error
*/
@SuppressFBWarnings(value = { "UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR" },
justification = "The field comes from JSON deserialization")
public GHRepository getRepository() throws IOException {
return root.getRepository(repo.name);
}
/**
* Gets actor.
*
* @return the {@link GHUser} actor for this event.
* @throws IOException
* on error
*/
@SuppressFBWarnings(value = { "UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR" },
justification = "The field comes from JSON deserialization")
public GHUser getActor() throws IOException {
return root.getUser(actor.getLogin());
}
/**
* Gets actor login.
*
* @return the login of the actor.
* @throws IOException
* on error
*/
public String getActorLogin() throws IOException {
return actor.getLogin();
}
/**
* Gets organization.
*
* @return the organization
* @throws IOException
* the io exception
*/
@SuppressFBWarnings(value = { "UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR" },
justification = "The field comes from JSON deserialization")
public GHOrganization getOrganization() throws IOException {
return (org == null || org.getLogin() == null) ? null : root.getOrganization(org.getLogin());
}
/**
* Retrieves the payload.
*
* @param <T>
* the type parameter
* @param type
* Specify one of the {@link GHEventPayload} subtype that defines a type-safe access to the payload. This
* must match the {@linkplain #getType() event type}.
* @return parsed event payload
* @throws IOException
* if payload cannot be parsed
*/
public <T extends GHEventPayload> T getPayload(Class<T> type) throws IOException {
T v = GitHubClient.getMappingObjectReader(root).readValue(payload.traverse(), type);
v.wrapUp(root);
return v;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,29 @@
package org.kohsuke.github;
/**
* The type GHException.
*
* @author Kohsuke Kawaguchi
*/
public class GHException extends RuntimeException {
/**
* Instantiates a new Gh exception.
*
* @param message
* the message
*/
public GHException(String message) {
super(message);
}
/**
* Instantiates a new Gh exception.
*
* @param message
* the message
* @param cause
* the cause
*/
public GHException(String message, Throwable cause) {
super(message, cause);
}

View File

@@ -0,0 +1,61 @@
package org.kohsuke.github;
import java.io.FileNotFoundException;
import java.util.List;
import java.util.Map;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
/**
* Request/responce contains useful metadata. Custom exception allows store info for next diagnostics.
*
* @author Kanstantsin Shautsou
*/
public class GHFileNotFoundException extends FileNotFoundException {
protected Map<String, List<String>> responseHeaderFields;
/**
* Instantiates a new Gh file not found exception.
*/
public GHFileNotFoundException() {
}
/**
* Instantiates a new Gh file not found exception.
*
* @param message
* the message
*/
public GHFileNotFoundException(String message) {
super(message);
}
/**
* Instantiates a new Gh file not found exception.
*
* @param message
* the message
* @param cause
* the cause
*/
public GHFileNotFoundException(String message, Throwable cause) {
super(message);
this.initCause(cause);
}
/**
* Gets response header fields.
*
* @return the response header fields
*/
@CheckForNull
public Map<String, List<String>> getResponseHeaderFields() {
return responseHeaderFields;
}
GHFileNotFoundException withResponseHeaderFields(@Nonnull Map<String, List<String>> headerFields) {
this.responseHeaderFields = headerFields;
return this;
}
}

View File

@@ -0,0 +1,283 @@
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JacksonInject;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.net.URL;
import java.util.Collections;
import java.util.Map;
import java.util.Map.Entry;
/**
* Gist
*
* @author Kohsuke Kawaguchi
* @see GHUser#listGists() GHUser#listGists()
* @see GitHub#getGist(String) GitHub#getGist(String)
* @see GitHub#createGist() GitHub#createGist()
* @see <a href="https://developer.github.com/v3/gists/">documentation</a>
*/
public class GHGist extends GHObject {
final GHUser owner;
private String forks_url, commits_url, id, git_pull_url, git_push_url, html_url;
@JsonProperty("public")
private boolean _public;
private String description;
private int comments;
private String comments_url;
private final Map<String, GHGistFile> files;
@JsonCreator
private GHGist(@JacksonInject GitHub root,
@JsonProperty("owner") GHUser owner,
@JsonProperty("files") Map<String, GHGistFile> files) {
this.root = root;
for (Entry<String, GHGistFile> e : files.entrySet()) {
e.getValue().fileName = e.getKey();
}
this.files = Collections.unmodifiableMap(files);
this.owner = root.getUser(owner);
}
/**
* Unlike most other GitHub objects, the id for Gists can be non-numeric, such as "aa5a315d61ae9438b18d". If the id
* is numeric, this method will get it. If id is not numeric, this will throw a runtime
* {@link NumberFormatException}.
*
* @return id of the Gist.
* @deprecated Use {@link #getGistId()} instead.
*/
@Deprecated
@Override
public long getId() {
return Long.parseLong(getGistId());
}
/**
* Gets the id for this Gist. Unlike most other GitHub objects, the id for Gists can be non-numeric, such as
* "aa5a315d61ae9438b18d". This should be used instead of {@link #getId()}.
*
* @return id of this Gist
*/
public String getGistId() {
return this.id;
}
/**
* Gets owner.
*
* @return User that owns this Gist.
* @throws IOException
* the io exception
*/
public GHUser getOwner() throws IOException {
return owner;
}
/**
* Gets forks url.
*
* @return the forks url
*/
public String getForksUrl() {
return forks_url;
}
/**
* Gets commits url.
*
* @return the commits url
*/
public String getCommitsUrl() {
return commits_url;
}
/**
* Gets git pull url.
*
* @return URL like https://gist.github.com/gists/12345.git
*/
public String getGitPullUrl() {
return git_pull_url;
}
/**
* Gets git push url.
*
* @return the git push url
*/
public String getGitPushUrl() {
return git_push_url;
}
/**
* Get the html url.
*
* @return the github html url
*/
public URL getHtmlUrl() {
return GitHubClient.parseURL(html_url);
}
/**
* Is public boolean.
*
* @return the boolean
*/
public boolean isPublic() {
return _public;
}
/**
* Gets description.
*
* @return the description
*/
public String getDescription() {
return description;
}
/**
* Gets comment count.
*
* @return the comment count
*/
public int getCommentCount() {
return comments;
}
/**
* Gets comments url.
*
* @return API URL of listing comments.
*/
public String getCommentsUrl() {
return comments_url;
}
/**
* Gets file.
*
* @param name
* the name
* @return the file
*/
public GHGistFile getFile(String name) {
return files.get(name);
}
/**
* Gets files.
*
* @return the files
*/
public Map<String, GHGistFile> getFiles() {
return files;
}
String getApiTailUrl(String tail) {
String result = "/gists/" + id;
if (!StringUtils.isBlank(tail)) {
result += StringUtils.prependIfMissing(tail, "/");
}
return result;
}
/**
* Star.
*
* @throws IOException
* the io exception
*/
public void star() throws IOException {
root.createRequest().method("PUT").withUrlPath(getApiTailUrl("star")).send();
}
/**
* Unstar.
*
* @throws IOException
* the io exception
*/
public void unstar() throws IOException {
root.createRequest().method("DELETE").withUrlPath(getApiTailUrl("star")).send();
}
/**
* Is starred boolean.
*
* @return the boolean
* @throws IOException
* the io exception
*/
public boolean isStarred() throws IOException {
return root.createRequest().withUrlPath(getApiTailUrl("star")).fetchHttpStatusCode() / 100 == 2;
}
/**
* Forks this gist into your own.
*
* @return the gh gist
* @throws IOException
* the io exception
*/
public GHGist fork() throws IOException {
return root.createRequest().method("POST").withUrlPath(getApiTailUrl("forks")).fetch(GHGist.class);
}
/**
* List forks paged iterable.
*
* @return the paged iterable
*/
public PagedIterable<GHGist> listForks() {
return root.createRequest().withUrlPath(getApiTailUrl("forks")).toIterable(GHGist[].class, null);
}
/**
* Deletes this gist.
*
* @throws IOException
* the io exception
*/
public void delete() throws IOException {
root.createRequest().method("DELETE").withUrlPath("/gists/" + id).send();
}
/**
* Updates this gist via a builder.
*
* @return the gh gist updater
* @throws IOException
* the io exception
*/
public GHGistUpdater update() throws IOException {
return new GHGistUpdater(this);
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
GHGist ghGist = (GHGist) o;
return id.equals(ghGist.id);
}
@Override
public int hashCode() {
return id.hashCode();
}
}

View File

@@ -0,0 +1,78 @@
package org.kohsuke.github;
import java.io.IOException;
import java.util.Collections;
import java.util.LinkedHashMap;
import javax.annotation.Nonnull;
/**
* Builder pattern for creating a new Gist.
*
* @author Kohsuke Kawaguchi
* @see GitHub#createGist() GitHub#createGist()
*/
public class GHGistBuilder {
private final Requester req;
private final LinkedHashMap<String, Object> files = new LinkedHashMap<String, Object>();
/**
* Instantiates a new Gh gist builder.
*
* @param root
* the root
*/
public GHGistBuilder(GitHub root) {
req = root.createRequest().method("POST");
}
/**
* Description gh gist builder.
*
* @param desc
* the desc
* @return the gh gist builder
*/
public GHGistBuilder description(String desc) {
req.with("description", desc);
return this;
}
/**
* Public gh gist builder.
*
* @param v
* the v
* @return the gh gist builder
*/
public GHGistBuilder public_(boolean v) {
req.with("public", v);
return this;
}
/**
* File gh gist builder.
*
* @param fileName
* the file name
* @param content
* the content
* @return Adds a new file.
*/
public GHGistBuilder file(@Nonnull String fileName, @Nonnull String content) {
files.put(fileName, Collections.singletonMap("content", content));
return this;
}
/**
* Creates a Gist based on the parameters specified thus far.
*
* @return created Gist
* @throws IOException
* if Gist cannot be created.
*/
public GHGist create() throws IOException {
req.with("files", files);
return req.withUrlPath("/gists").fetch(GHGist.class);
}
}

View File

@@ -0,0 +1,79 @@
package org.kohsuke.github;
/**
* A file inside {@link GHGist}
*
* @author Kohsuke Kawaguchi
* @see GHGist#getFile(String) GHGist#getFile(String)
* @see GHGist#getFiles() GHGist#getFiles()
*/
public class GHGistFile {
/* package almost final */ String fileName;
private int size;
private String raw_url, type, language, content;
private boolean truncated;
/**
* Gets file name.
*
* @return the file name
*/
public String getFileName() {
return fileName;
}
/**
* File size in bytes.
*
* @return the size
*/
public int getSize() {
return size;
}
/**
* URL that serves this file as-is.
*
* @return the raw url
*/
public String getRawUrl() {
return raw_url;
}
/**
* Content type of this Gist, such as "text/plain"
*
* @return the type
*/
public String getType() {
return type;
}
/**
* Gets language.
*
* @return the language
*/
public String getLanguage() {
return language;
}
/**
* Content of this file.
*
* @return the content
*/
public String getContent() {
return content;
}
/**
* (?) indicates if {@link #getContent()} contains a truncated content.
*
* @return the boolean
*/
public boolean isTruncated() {
return truncated;
}
}

View File

@@ -0,0 +1,127 @@
package org.kohsuke.github;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.annotation.Nonnull;
/**
* Builder pattern for updating a Gist.
*
* @author Martin van Zijl
*/
public class GHGistUpdater {
private final GHGist base;
private final Requester builder;
LinkedHashMap<String, Map<String, String>> files;
GHGistUpdater(GHGist base) {
this.base = base;
this.builder = base.root.createRequest();
files = new LinkedHashMap<>();
}
/**
* Add file gh gist updater.
*
* @param fileName
* the file name
* @param content
* the content
* @return the gh gist updater
* @throws IOException
* the io exception
*/
public GHGistUpdater addFile(@Nonnull String fileName, @Nonnull String content) throws IOException {
updateFile(fileName, content);
return this;
}
public GHGistUpdater deleteFile(@Nonnull String fileName) throws IOException {
files.put(fileName, null);
return this;
}
/**
* Rename file gh gist updater.
*
* @param fileName
* the file name
* @param newFileName
* the new file name
* @return the gh gist updater
* @throws IOException
* the io exception
*/
public GHGistUpdater renameFile(@Nonnull String fileName, @Nonnull String newFileName) throws IOException {
Map<String, String> file = files.computeIfAbsent(fileName, d -> new HashMap<>());
file.put("filename", newFileName);
return this;
}
/**
* Update file gh gist updater.
*
* @param fileName
* the file name
* @param content
* the content
* @return the gh gist updater
* @throws IOException
* the io exception
*/
public GHGistUpdater updateFile(@Nonnull String fileName, @Nonnull String content) throws IOException {
Map<String, String> file = files.computeIfAbsent(fileName, d -> new HashMap<>());
file.put("content", content);
return this;
}
/**
* Update file name and content
*
* @param fileName
* the file name
* @param newFileName
* the new file name
* @param content
* the content
* @return the gh gist updater
* @throws IOException
* the io exception
*/
public GHGistUpdater updateFile(@Nonnull String fileName, @Nonnull String newFileName, @Nonnull String content)
throws IOException {
Map<String, String> file = files.computeIfAbsent(fileName, d -> new HashMap<>());
file.put("content", content);
file.put("filename", newFileName);
files.put(fileName, file);
return this;
}
/**
* Description gh gist updater.
*
* @param desc
* the desc
* @return the gh gist updater
*/
public GHGistUpdater description(String desc) {
builder.with("description", desc);
return this;
}
/**
* Updates the Gist based on the parameters specified thus far.
*
* @return the gh gist
* @throws IOException
* the io exception
*/
public GHGist update() throws IOException {
builder.with("files", files);
return builder.method("PATCH").withUrlPath(base.getApiTailUrl("")).fetch(GHGist.class);
}
}

View File

@@ -0,0 +1,101 @@
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.net.URL;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/**
* The type GHHook.
*
* @author Kohsuke Kawaguchi
*/
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
justification = "JSON API")
public abstract class GHHook extends GHObject {
String name;
List<String> events;
boolean active;
Map<String, String> config;
/**
* Gets name.
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Gets events.
*
* @return the events
*/
public EnumSet<GHEvent> getEvents() {
EnumSet<GHEvent> s = EnumSet.noneOf(GHEvent.class);
for (String e : events) {
if (e.equals("*"))
s.add(GHEvent.ALL);
else
s.add(Enum.valueOf(GHEvent.class, e.toUpperCase(Locale.ENGLISH)));
}
return s;
}
/**
* Is active boolean.
*
* @return the boolean
*/
public boolean isActive() {
return active;
}
/**
* Gets config.
*
* @return the config
*/
public Map<String, String> getConfig() {
return Collections.unmodifiableMap(config);
}
/**
* Ping.
*
* @throws IOException
* the io exception
* @see <a href="https://developer.github.com/v3/repos/hooks/#ping-a-hook">Ping hook</a>
*/
public void ping() throws IOException {
getRoot().createRequest().method("POST").withUrlPath(getApiRoute() + "/pings").send();
}
/**
* Deletes this hook.
*
* @throws IOException
* the io exception
*/
public void delete() throws IOException {
getRoot().createRequest().method("DELETE").withUrlPath(getApiRoute()).send();
}
/**
* @deprecated This object has no HTML URL.
*/
@Override
public URL getHtmlUrl() {
return null;
}
abstract GitHub getRoot();
abstract String getApiRoute();
}

View File

@@ -0,0 +1,166 @@
package org.kohsuke.github;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* Utility class for creating and retrieving webhooks; removes duplication between GHOrganization and GHRepository
* functionality
*/
class GHHooks {
static abstract class Context extends GitHubInteractiveObject {
private Context(GitHub root) {
this.root = root;
}
/**
* Gets hooks.
*
* @return the hooks
* @throws IOException
* the io exception
*/
public List<GHHook> getHooks() throws IOException {
GHHook[] hookArray = root.createRequest().withUrlPath(collection()).fetch(collectionClass()); // jdk/eclipse
// bug
// requires this
// to be on separate line
List<GHHook> list = new ArrayList<GHHook>(Arrays.asList(hookArray));
for (GHHook h : list)
wrap(h);
return list;
}
/**
* Gets hook.
*
* @param id
* the id
* @return the hook
* @throws IOException
* the io exception
*/
public GHHook getHook(int id) throws IOException {
GHHook hook = root.createRequest().withUrlPath(collection() + "/" + id).fetch(clazz());
return wrap(hook);
}
/**
* Create hook gh hook.
*
* @param name
* the name
* @param config
* the config
* @param events
* the events
* @param active
* the active
* @return the gh hook
* @throws IOException
* the io exception
*/
public GHHook createHook(String name, Map<String, String> config, Collection<GHEvent> events, boolean active)
throws IOException {
List<String> ea = null;
if (events != null) {
ea = new ArrayList<String>();
for (GHEvent e : events)
ea.add(e.symbol());
}
GHHook hook = root.createRequest()
.method("POST")
.with("name", name)
.with("active", active)
.with("config", config)
.with("events", ea)
.withUrlPath(collection())
.fetch(clazz());
return wrap(hook);
}
abstract String collection();
abstract Class<? extends GHHook[]> collectionClass();
abstract Class<? extends GHHook> clazz();
abstract GHHook wrap(GHHook hook);
}
private static class RepoContext extends Context {
private final GHRepository repository;
private final GHUser owner;
private RepoContext(GHRepository repository, GHUser owner) {
super(repository.root);
this.repository = repository;
this.owner = owner;
}
@Override
String collection() {
return String.format("/repos/%s/%s/hooks", owner.getLogin(), repository.getName());
}
@Override
Class<? extends GHHook[]> collectionClass() {
return GHRepoHook[].class;
}
@Override
Class<? extends GHHook> clazz() {
return GHRepoHook.class;
}
@Override
GHHook wrap(GHHook hook) {
return ((GHRepoHook) hook).wrap(repository);
}
}
private static class OrgContext extends Context {
private final GHOrganization organization;
private OrgContext(GHOrganization organization) {
super(organization.root);
this.organization = organization;
}
@Override
String collection() {
return String.format("/orgs/%s/hooks", organization.getLogin());
}
@Override
Class<? extends GHHook[]> collectionClass() {
return GHOrgHook[].class;
}
@Override
Class<? extends GHHook> clazz() {
return GHOrgHook.class;
}
@Override
GHHook wrap(GHHook hook) {
return ((GHOrgHook) hook).wrap(organization);
}
}
static Context repoContext(GHRepository repository, GHUser owner) {
return new RepoContext(repository, owner);
}
static Context orgContext(GHOrganization organization) {
return new OrgContext(organization);
}
}

View File

@@ -0,0 +1,62 @@
package org.kohsuke.github;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
/**
* Request/responce contains useful metadata. Custom exception allows store info for next diagnostics.
*
* @author Kanstantsin Shautsou
*/
public class GHIOException extends IOException {
protected Map<String, List<String>> responseHeaderFields;
/**
* Instantiates a new Ghio exception.
*/
public GHIOException() {
}
/**
* Instantiates a new Ghio exception.
*
* @param message
* the message
*/
public GHIOException(String message) {
super(message);
}
/**
* Constructs a {@code GHIOException} with the specified detail message and cause.
*
* @param message
* The detail message (which is saved for later retrieval by the {@link #getMessage()} method)
*
* @param cause
* The cause (which is saved for later retrieval by the {@link #getCause()} method). (A null value is
* permitted, and indicates that the cause is nonexistent or unknown.)
*/
public GHIOException(String message, Throwable cause) {
super(message, cause);
}
/**
* Gets response header fields.
*
* @return the response header fields
*/
@CheckForNull
public Map<String, List<String>> getResponseHeaderFields() {
return responseHeaderFields;
}
GHIOException withResponseHeaderFields(@Nonnull Map<String, List<String>> headerFields) {
this.responseHeaderFields = headerFields;
return this;
}
}

View File

@@ -0,0 +1,55 @@
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.net.URL;
/**
* The type GHInvitation.
*
* @see GitHub#getMyInvitations() GitHub#getMyInvitations()
* @see GHRepository#listInvitations() GHRepository#listInvitations()
*/
@SuppressFBWarnings(
value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD",
"UUF_UNUSED_FIELD" },
justification = "JSON API")
public class GHInvitation extends GHObject {
private int id;
private GHRepository repository;
private GHUser invitee, inviter;
private String permissions;
private String html_url;
GHInvitation wrapUp(GitHub root) {
this.root = root;
return this;
}
/**
* Accept a repository invitation.
*
* @throws IOException
* the io exception
*/
public void accept() throws IOException {
root.createRequest().method("PATCH").withUrlPath("/user/repository_invitations/" + id).send();
}
/**
* Decline a repository invitation.
*
* @throws IOException
* the io exception
*/
public void decline() throws IOException {
root.createRequest().method("DELETE").withUrlPath("/user/repository_invitations/" + id).send();
}
@Override
public URL getHtmlUrl() {
return GitHubClient.parseURL(html_url);
}
}

View File

@@ -24,30 +24,78 @@
package org.kohsuke.github;
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import static org.kohsuke.github.internal.Previews.SQUIRREL_GIRL;
/**
* Represents an issue on GitHub.
*
* @author Eric Maupin
* @author Kohsuke Kawaguchi
* @see GHRepository#getIssue(int) GHRepository#getIssue(int)
* @see GitHub#searchIssues() GitHub#searchIssues()
* @see GHIssueSearchBuilder
*/
public class GHIssue {
GitHub root;
public class GHIssue extends GHObject implements Reactable {
private static final String ASSIGNEES = "assignees";
GHRepository owner;
private String gravatar_id,body,title,state,created_at,updated_at,html_url;
private List<String> labels;
private int number,votes,comments;
private int position;
// API v3
protected GHUser assignee; // not sure what this field is now that 'assignees' exist
protected GHUser[] assignees;
protected String state;
protected int number;
protected String closed_at;
protected int comments;
@SkipFromToString
protected String body;
protected List<GHLabel> labels;
protected GHUser user;
protected String title, html_url;
protected GHIssue.PullRequest pull_request;
protected GHMilestone milestone;
protected GHUser closed_by;
protected boolean locked;
GHIssue wrap(GHRepository owner) {
this.owner = owner;
if (milestone != null)
milestone.wrap(owner);
return wrap(owner.root);
}
GHIssue wrap(GitHub root) {
this.root = root;
if (assignee != null)
assignee.wrapUp(root);
if (assignees != null)
GHUser.wrap(assignees, root);
if (user != null)
user.wrapUp(root);
if (closed_by != null)
closed_by.wrapUp(root);
return this;
}
/**
* Repository to which the issue belongs.
*
* @return the repository
*/
public GHRepository getRepository() {
return owner;
@@ -55,6 +103,8 @@ public class GHIssue {
/**
* The description of this pull request.
*
* @return the body
*/
public String getBody() {
return body;
@@ -62,68 +112,613 @@ public class GHIssue {
/**
* ID.
*
* @return the number
*/
public int getNumber() {
return number;
}
/**
* The HTML page of this issue,
* like https://github.com/jenkinsci/jenkins/issues/100
* The HTML page of this issue, like https://github.com/jenkinsci/jenkins/issues/100
*/
public URL getUrl() {
return GitHub.parseURL(html_url);
public URL getHtmlUrl() {
return GitHubClient.parseURL(html_url);
}
/**
* Gets title.
*
* @return the title
*/
public String getTitle() {
return title;
}
public GHIssueState getState() {
return Enum.valueOf(GHIssueState.class, state);
/**
* Is locked boolean.
*
* @return the boolean
*/
public boolean isLocked() {
return locked;
}
public Collection<String> getLabels() {
/**
* Gets state.
*
* @return the state
*/
public GHIssueState getState() {
return Enum.valueOf(GHIssueState.class, state.toUpperCase(Locale.ENGLISH));
}
/**
* Gets labels.
*
* @return the labels
*/
public Collection<GHLabel> getLabels() {
if (labels == null) {
return Collections.emptyList();
}
return Collections.unmodifiableList(labels);
}
public Date getCreatedAt() {
return GitHub.parseDate(created_at);
/**
* Gets closed at.
*
* @return the closed at
*/
public Date getClosedAt() {
return GitHubClient.parseDate(closed_at);
}
public Date getUpdatedAt() {
return GitHub.parseDate(updated_at);
/**
* Gets api url.
*
* @return API URL of this object.
* @deprecated use {@link #getUrl()}
*/
@Deprecated
public URL getApiURL() {
return getUrl();
}
/**
* Lock.
*
* @throws IOException
* the io exception
*/
public void lock() throws IOException {
root.createRequest().method("PUT").withUrlPath(getApiRoute() + "/lock").send();
}
/**
* Unlock.
*
* @throws IOException
* the io exception
*/
public void unlock() throws IOException {
root.createRequest().method("PUT").withUrlPath(getApiRoute() + "/lock").send();
}
/**
* Updates the issue by adding a comment.
*
* @param message
* the message
* @return Newly posted comment.
* @throws IOException
* the io exception
*/
public void comment(String message) throws IOException {
new Poster(root).withCredential().with("comment",message).to(getApiRoute("comment"));
@WithBridgeMethods(void.class)
public GHIssueComment comment(String message) throws IOException {
GHIssueComment r = root.createRequest()
.method("POST")
.with("body", message)
.withUrlPath(getIssuesApiRoute() + "/comments")
.fetch(GHIssueComment.class);
return r.wrapUp(this);
}
private void edit(String key, Object value) throws IOException {
root.createRequest().with(key, value).method("PATCH").withUrlPath(getApiRoute()).send();
}
/**
* Identical to edit(), but allows null for the value.
*/
private void editNullable(String key, Object value) throws IOException {
root.createRequest().withNullable(key, value).method("PATCH").withUrlPath(getApiRoute()).send();
}
private void editIssue(String key, Object value) throws IOException {
root.createRequest().withNullable(key, value).method("PATCH").withUrlPath(getIssuesApiRoute()).send();
}
/**
* Closes this issue.
*
* @throws IOException
* the io exception
*/
public void close() throws IOException {
new Poster(root).withCredential().to(getApiRoute("close"));
edit("state", "closed");
}
/**
* Reopens this issue.
*
* @throws IOException
* the io exception
*/
public void reopen() throws IOException {
new Poster(root).withCredential().to(getApiRoute("reopen"));
edit("state", "open");
}
/**
* Sets title.
*
* @param title
* the title
* @throws IOException
* the io exception
*/
public void setTitle(String title) throws IOException {
edit("title", title);
}
/**
* Sets body.
*
* @param body
* the body
* @throws IOException
* the io exception
*/
public void setBody(String body) throws IOException {
edit("body", body);
}
/**
* Sets the milestone for this issue.
*
* @param milestone
* The milestone to assign this issue to. Use null to remove the milestone for this issue.
* @throws IOException
* The io exception
*/
public void setMilestone(GHMilestone milestone) throws IOException {
if (milestone == null) {
editIssue("milestone", null);
} else {
editIssue("milestone", milestone.getNumber());
}
}
/**
* Assign to.
*
* @param user
* the user
* @throws IOException
* the io exception
*/
public void assignTo(GHUser user) throws IOException {
setAssignees(user);
}
/**
* Sets labels.
*
* @param labels
* the labels
* @throws IOException
* the io exception
*/
public void setLabels(String... labels) throws IOException {
editIssue("labels", labels);
}
/**
* Adds labels to the issue.
*
* @param names
* Names of the label
* @throws IOException
* the io exception
*/
public void addLabels(String... names) throws IOException {
_addLabels(Arrays.asList(names));
}
/**
* Add labels.
*
* @param labels
* the labels
* @throws IOException
* the io exception
*/
public void addLabels(GHLabel... labels) throws IOException {
addLabels(Arrays.asList(labels));
}
/**
* Add labels.
*
* @param labels
* the labels
* @throws IOException
* the io exception
*/
public void addLabels(Collection<GHLabel> labels) throws IOException {
_addLabels(GHLabel.toNames(labels));
}
private void _addLabels(Collection<String> names) throws IOException {
List<String> newLabels = new ArrayList<String>();
for (GHLabel label : getLabels()) {
newLabels.add(label.getName());
}
for (String name : names) {
if (!newLabels.contains(name)) {
newLabels.add(name);
}
}
setLabels(newLabels.toArray(new String[0]));
}
/**
* Remove a given label by name from this issue.
*
* @param names
* the names
* @throws IOException
* the io exception
*/
public void removeLabels(String... names) throws IOException {
_removeLabels(Arrays.asList(names));
}
/**
* Remove labels.
*
* @param labels
* the labels
* @throws IOException
* the io exception
* @see #removeLabels(String...) #removeLabels(String...)
*/
public void removeLabels(GHLabel... labels) throws IOException {
removeLabels(Arrays.asList(labels));
}
/**
* Remove labels.
*
* @param labels
* the labels
* @throws IOException
* the io exception
*/
public void removeLabels(Collection<GHLabel> labels) throws IOException {
_removeLabels(GHLabel.toNames(labels));
}
private void _removeLabels(Collection<String> names) throws IOException {
List<String> newLabels = new ArrayList<String>();
for (GHLabel l : getLabels()) {
if (!names.contains(l.getName())) {
newLabels.add(l.getName());
}
}
setLabels(newLabels.toArray(new String[0]));
}
/**
* Obtains all the comments associated with this issue.
*
* @return the comments
* @throws IOException
* the io exception
* @see #listComments() #listComments()
*/
public List<GHIssueComment> getComments() throws IOException {
return root.retrieve(getApiRoute("comments"), JsonIssueComments.class).wrap(this);
return listComments().toList();
}
private String getApiRoute(String verb) {
return "/issues/"+verb+"/"+owner.getOwnerName()+"/"+owner.getName()+"/"+number;
/**
* Obtains all the comments associated with this issue.
*
* @return the paged iterable
* @throws IOException
* the io exception
*/
public PagedIterable<GHIssueComment> listComments() throws IOException {
return root.createRequest()
.withUrlPath(getIssuesApiRoute() + "/comments")
.toIterable(GHIssueComment[].class, item -> item.wrapUp(this));
}
}
@Preview(SQUIRREL_GIRL)
@Deprecated
public GHReaction createReaction(ReactionContent content) throws IOException {
return root.createRequest()
.method("POST")
.withPreview(SQUIRREL_GIRL)
.with("content", content.getContent())
.withUrlPath(getApiRoute() + "/reactions")
.fetch(GHReaction.class)
.wrap(root);
}
@Preview(SQUIRREL_GIRL)
@Deprecated
public PagedIterable<GHReaction> listReactions() {
return root.createRequest()
.withPreview(SQUIRREL_GIRL)
.withUrlPath(getApiRoute() + "/reactions")
.toIterable(GHReaction[].class, item -> item.wrap(root));
}
/**
* Add assignees.
*
* @param assignees
* the assignees
* @throws IOException
* the io exception
*/
public void addAssignees(GHUser... assignees) throws IOException {
addAssignees(Arrays.asList(assignees));
}
/**
* Add assignees.
*
* @param assignees
* the assignees
* @throws IOException
* the io exception
*/
public void addAssignees(Collection<GHUser> assignees) throws IOException {
root.createRequest()
.method("POST")
.with(ASSIGNEES, getLogins(assignees))
.withUrlPath(getIssuesApiRoute() + "/assignees")
.fetchInto(this);
}
/**
* Sets assignees.
*
* @param assignees
* the assignees
* @throws IOException
* the io exception
*/
public void setAssignees(GHUser... assignees) throws IOException {
setAssignees(Arrays.asList(assignees));
}
/**
* Sets assignees.
*
* @param assignees
* the assignees
* @throws IOException
* the io exception
*/
public void setAssignees(Collection<GHUser> assignees) throws IOException {
root.createRequest()
.method("PATCH")
.with(ASSIGNEES, getLogins(assignees))
.withUrlPath(getIssuesApiRoute())
.send();
}
/**
* Remove assignees.
*
* @param assignees
* the assignees
* @throws IOException
* the io exception
*/
public void removeAssignees(GHUser... assignees) throws IOException {
removeAssignees(Arrays.asList(assignees));
}
/**
* Remove assignees.
*
* @param assignees
* the assignees
* @throws IOException
* the io exception
*/
public void removeAssignees(Collection<GHUser> assignees) throws IOException {
root.createRequest()
.method("DELETE")
.with(ASSIGNEES, getLogins(assignees))
.inBody()
.withUrlPath(getIssuesApiRoute() + "/assignees")
.fetchInto(this);
}
/**
* Gets api route.
*
* @return the api route
*/
protected String getApiRoute() {
return getIssuesApiRoute();
}
/**
* Gets issues api route.
*
* @return the issues api route
*/
protected String getIssuesApiRoute() {
if (owner == null) {
// Issues returned from search to do not have an owner. Attempt to use url.
final URL url = Objects.requireNonNull(getUrl(), "Missing instance URL!");
return StringUtils.prependIfMissing(url.toString().replace(root.getApiUrl(), ""), "/");
}
return "/repos/" + owner.getOwnerName() + "/" + owner.getName() + "/issues/" + number;
}
/**
* Gets assignee.
*
* @return the assignee
* @throws IOException
* the io exception
*/
public GHUser getAssignee() throws IOException {
return root.intern(assignee);
}
/**
* Gets assignees.
*
* @return the assignees
*/
public List<GHUser> getAssignees() {
return Collections.unmodifiableList(Arrays.asList(assignees));
}
/**
* User who submitted the issue.
*
* @return the user
* @throws IOException
* the io exception
*/
public GHUser getUser() throws IOException {
return root.intern(user);
}
/**
* Reports who has closed the issue.
*
* <p>
* Note that GitHub doesn't always seem to report this information even for an issue that's already closed. See
* https://github.com/kohsuke/github-api/issues/60.
*
* @return the closed by
* @throws IOException
* the io exception
*/
public GHUser getClosedBy() throws IOException {
if (!"closed".equals(state))
return null;
// TODO
/*
* if (closed_by==null) { closed_by = owner.getIssue(number).getClosed_by(); }
*/
return root.intern(closed_by);
}
/**
* Gets comments count.
*
* @return the comments count
*/
public int getCommentsCount() {
return comments;
}
/**
* Returns non-null if this issue is a shadow of a pull request.
*
* @return the pull request
*/
public PullRequest getPullRequest() {
return pull_request;
}
/**
* Is pull request boolean.
*
* @return the boolean
*/
public boolean isPullRequest() {
return pull_request != null;
}
/**
* Gets milestone.
*
* @return the milestone
*/
public GHMilestone getMilestone() {
return milestone;
}
/**
* The type PullRequest.
*/
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD" },
justification = "JSON API")
public static class PullRequest {
private String diff_url, patch_url, html_url;
/**
* Gets diff url.
*
* @return the diff url
*/
public URL getDiffUrl() {
return GitHubClient.parseURL(diff_url);
}
/**
* Gets patch url.
*
* @return the patch url
*/
public URL getPatchUrl() {
return GitHubClient.parseURL(patch_url);
}
/**
* Gets url.
*
* @return the url
*/
public URL getUrl() {
return GitHubClient.parseURL(html_url);
}
}
protected static List<String> getLogins(Collection<GHUser> users) {
List<String> names = new ArrayList<String>(users.size());
for (GHUser a : users) {
names.add(a.getLogin());
}
return names;
}
/**
* Lists events for this issue. See https://developer.github.com/v3/issues/events/
*
* @return the paged iterable
* @throws IOException
* the io exception
*/
public PagedIterable<GHIssueEvent> listEvents() throws IOException {
return root.createRequest()
.withUrlPath(owner.getApiTailUrl(String.format("/issues/%s/events", number)))
.toIterable(GHIssueEvent[].class, item -> item.wrapUp(this));
}
}

View File

@@ -0,0 +1,102 @@
package org.kohsuke.github;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* The type GHIssueBuilder.
*
* @author Kohsuke Kawaguchi
*/
public class GHIssueBuilder {
private final GHRepository repo;
private final Requester builder;
private List<String> labels = new ArrayList<String>();
private List<String> assignees = new ArrayList<String>();
GHIssueBuilder(GHRepository repo, String title) {
this.repo = repo;
this.builder = repo.root.createRequest().method("POST");
builder.with("title", title);
}
/**
* Sets the main text of an issue, which is arbitrary multi-line text.
*
* @param str
* the str
* @return the gh issue builder
*/
public GHIssueBuilder body(String str) {
builder.with("body", str);
return this;
}
/**
* Assignee gh issue builder.
*
* @param user
* the user
* @return the gh issue builder
*/
public GHIssueBuilder assignee(GHUser user) {
if (user != null)
assignees.add(user.getLogin());
return this;
}
/**
* Assignee gh issue builder.
*
* @param user
* the user
* @return the gh issue builder
*/
public GHIssueBuilder assignee(String user) {
if (user != null)
assignees.add(user);
return this;
}
/**
* Milestone gh issue builder.
*
* @param milestone
* the milestone
* @return the gh issue builder
*/
public GHIssueBuilder milestone(GHMilestone milestone) {
if (milestone != null)
builder.with("milestone", milestone.getNumber());
return this;
}
/**
* Label gh issue builder.
*
* @param label
* the label
* @return the gh issue builder
*/
public GHIssueBuilder label(String label) {
if (label != null)
labels.add(label);
return this;
}
/**
* Creates a new issue.
*
* @return the gh issue
* @throws IOException
* the io exception
*/
public GHIssue create() throws IOException {
return builder.with("labels", labels)
.with("assignees", assignees)
.withUrlPath(repo.getApiTailUrl("issues"))
.fetch(GHIssue.class)
.wrap(repo);
}
}

View File

@@ -24,21 +24,32 @@
package org.kohsuke.github;
import java.io.IOException;
import java.util.Date;
import java.net.URL;
import static org.kohsuke.github.internal.Previews.SQUIRREL_GIRL;
/**
* Comment to the issue
*
* @author Kohsuke Kawaguchi
* @see GHIssue#comment(String) GHIssue#comment(String)
* @see GHIssue#listComments() GHIssue#listComments()
*/
public class GHIssueComment {
public class GHIssueComment extends GHObject implements Reactable {
GHIssue owner;
private String body, gravatar_id, user, created_at, updated_at;
private int id;
private String body, gravatar_id, html_url, author_association;
private GHUser user; // not fully populated. beware.
GHIssueComment wrapUp(GHIssue owner) {
this.owner = owner;
return this;
}
/**
* Gets the issue to which this comment is associated.
*
* @return the parent
*/
public GHIssue getParent() {
return owner;
@@ -46,34 +57,98 @@ public class GHIssueComment {
/**
* The comment itself.
*
* @return the body
*/
public String getBody() {
return body;
}
public Date getCreatedAt() {
return GitHub.parseDate(created_at);
}
public Date getUpdatedAt() {
return GitHub.parseDate(updated_at);
}
public int getId() {
return id;
}
/**
* Gets the ID of the user who posted this comment.
*
* @return the user name
*/
@Deprecated
public String getUserName() {
return user;
return user.getLogin();
}
/**
* Gets the user who posted this comment.
*
* @return the user
* @throws IOException
* the io exception
*/
public GHUser getUser() throws IOException {
return owner.root.getUser(user);
return owner == null || owner.root.isOffline() ? user : owner.root.getUser(user.getLogin());
}
@Override
public URL getHtmlUrl() {
return GitHubClient.parseURL(html_url);
}
/**
* Gets author association.
*
* @return the author association
*/
public GHCommentAuthorAssociation getAuthorAssociation() {
return GHCommentAuthorAssociation.valueOf(author_association);
}
/**
* Updates the body of the issue comment.
*
* @param body
* the body
* @throws IOException
* the io exception
*/
public void update(String body) throws IOException {
owner.root.createRequest()
.method("PATCH")
.with("body", body)
.withUrlPath(getApiRoute())
.fetch(GHIssueComment.class);
this.body = body;
}
/**
* Deletes this issue comment.
*
* @throws IOException
* the io exception
*/
public void delete() throws IOException {
owner.root.createRequest().method("DELETE").withUrlPath(getApiRoute()).send();
}
@Preview(SQUIRREL_GIRL)
@Deprecated
public GHReaction createReaction(ReactionContent content) throws IOException {
return owner.root.createRequest()
.method("POST")
.withPreview(SQUIRREL_GIRL)
.with("content", content.getContent())
.withUrlPath(getApiRoute() + "/reactions")
.fetch(GHReaction.class)
.wrap(owner.root);
}
@Preview(SQUIRREL_GIRL)
@Deprecated
public PagedIterable<GHReaction> listReactions() {
return owner.root.createRequest()
.withPreview(SQUIRREL_GIRL)
.withUrlPath(getApiRoute() + "/reactions")
.toIterable(GHReaction[].class, item -> item.wrap(owner.root));
}
private String getApiRoute() {
return "/repos/" + owner.getRepository().getOwnerName() + "/" + owner.getRepository().getName()
+ "/issues/comments/" + getId();
}
}

View File

@@ -0,0 +1,166 @@
package org.kohsuke.github;
import java.util.Date;
/**
* The type GHIssueEvent.
*
* @see <a href="https://developer.github.com/v3/issues/events/">Github documentation for issue events</a>
*
* @author Martin van Zijl
*/
public class GHIssueEvent extends GitHubInteractiveObject {
private long id;
private String node_id;
private String url;
private GHUser actor;
private String event;
private String commit_id;
private String commit_url;
private String created_at;
private GHMilestone milestone;
private GHLabel label;
private GHUser assignee;
private GHIssue issue;
/**
* Gets id.
*
* @return the id
*/
public long getId() {
return id;
}
/**
* Gets node id.
*
* @return the node id
*/
public String getNodeId() {
return node_id;
}
/**
* Gets url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Gets actor.
*
* @return the actor
*/
public GHUser getActor() {
return actor;
}
/**
* Gets event.
*
* @return the event
*/
public String getEvent() {
return event;
}
/**
* Gets commit id.
*
* @return the commit id
*/
public String getCommitId() {
return commit_id;
}
/**
* Gets commit url.
*
* @return the commit url
*/
public String getCommitUrl() {
return commit_url;
}
/**
* Gets created at.
*
* @return the created at
*/
public Date getCreatedAt() {
return GitHubClient.parseDate(created_at);
}
/**
* Gets root.
*
* @return the root
*/
public GitHub getRoot() {
return root;
}
/**
* Gets issue.
*
* @return the issue
*/
public GHIssue getIssue() {
return issue;
}
/**
* Get the {@link GHMilestone} that this issue was added to or removed from. Only present for events "milestoned"
* and "demilestoned", <code>null</code> otherwise.
*
* @return the milestone
*/
public GHMilestone getMilestone() {
return milestone;
}
/**
* Get the {@link GHLabel} that was added to or removed from the issue. Only present for events "labeled" and
* "unlabeled", <code>null</code> otherwise.
*
* @return the label
*/
public GHLabel getLabel() {
return label;
}
/**
* Get the {@link GHUser} that was assigned or unassigned from the issue. Only present for events "assigned" and
* "unassigned", <code>null</code> otherwise.
*
* @return the user
*/
public GHUser getAssignee() {
return assignee;
}
GHIssueEvent wrapUp(GitHub root) {
this.root = root;
return this;
}
GHIssueEvent wrapUp(GHIssue parent) {
this.issue = parent;
this.root = parent.root;
return this;
}
@Override
public String toString() {
return String.format("Issue %d was %s by %s on %s",
getIssue().getNumber(),
getEvent(),
getActor().getLogin(),
getCreatedAt().toString());
}
}

View File

@@ -0,0 +1,117 @@
package org.kohsuke.github;
/**
* Search issues.
*
* @author Kohsuke Kawaguchi
* @see GitHub#searchIssues() GitHub#searchIssues()
*/
public class GHIssueSearchBuilder extends GHSearchBuilder<GHIssue> {
GHIssueSearchBuilder(GitHub root) {
super(root, IssueSearchResult.class);
}
/**
* Search terms.
*/
public GHIssueSearchBuilder q(String term) {
super.q(term);
return this;
}
/**
* Mentions gh issue search builder.
*
* @param u
* the u
* @return the gh issue search builder
*/
public GHIssueSearchBuilder mentions(GHUser u) {
return mentions(u.getLogin());
}
/**
* Mentions gh issue search builder.
*
* @param login
* the login
* @return the gh issue search builder
*/
public GHIssueSearchBuilder mentions(String login) {
return q("mentions:" + login);
}
/**
* Is open gh issue search builder.
*
* @return the gh issue search builder
*/
public GHIssueSearchBuilder isOpen() {
return q("is:open");
}
/**
* Is closed gh issue search builder.
*
* @return the gh issue search builder
*/
public GHIssueSearchBuilder isClosed() {
return q("is:closed");
}
/**
* Is merged gh issue search builder.
*
* @return the gh issue search builder
*/
public GHIssueSearchBuilder isMerged() {
return q("is:merged");
}
/**
* Order gh issue search builder.
*
* @param v
* the v
* @return the gh issue search builder
*/
public GHIssueSearchBuilder order(GHDirection v) {
req.with("order", v);
return this;
}
/**
* Sort gh issue search builder.
*
* @param sort
* the sort
* @return the gh issue search builder
*/
public GHIssueSearchBuilder sort(Sort sort) {
req.with("sort", sort);
return this;
}
/**
* The enum Sort.
*/
public enum Sort {
COMMENTS, CREATED, UPDATED
}
private static class IssueSearchResult extends SearchResult<GHIssue> {
private GHIssue[] items;
@Override
GHIssue[] getItems(GitHub root) {
for (GHIssue i : items)
i.wrap(root);
return items;
}
}
@Override
protected String getApiUrl() {
return "/search/issues";
}
}

View File

@@ -24,7 +24,11 @@
package org.kohsuke.github;
/**
* The enum GHIssueState.
*
* @see GHPullRequestQueryBuilder#state(GHIssueState) GHPullRequestQueryBuilder#state(GHIssueState)
*/
public enum GHIssueState {
OPEN,
CLOSED
}
OPEN, CLOSED, ALL
}

View File

@@ -0,0 +1,79 @@
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.commons.lang3.builder.ToStringBuilder;
/**
* SSH public key.
*
* @author Kohsuke Kawaguchi
*/
@SuppressFBWarnings(value = "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", justification = "JSON API")
public class GHKey extends GitHubInteractiveObject {
protected String url, key, title;
protected boolean verified;
protected int id;
/**
* Gets id.
*
* @return the id
*/
public int getId() {
return id;
}
/**
* Gets key.
*
* @return the key
*/
public String getKey() {
return key;
}
/**
* Gets title.
*
* @return the title
*/
public String getTitle() {
return title;
}
/**
* Something like "https://api.github.com/user/keys/73593"
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Gets root.
*
* @return the root
*/
public GitHub getRoot() {
return root;
}
/**
* Is verified boolean.
*
* @return the boolean
*/
public boolean isVerified() {
return verified;
}
GHKey wrap(GitHub root) {
this.root = root;
return this;
}
public String toString() {
return new ToStringBuilder(this).append("title", title).append("id", id).append("key", key).toString();
}
}

View File

@@ -0,0 +1,264 @@
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JacksonInject;
import com.fasterxml.jackson.annotation.JsonCreator;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
/**
* The type GHLabel.
*
* @author Kohsuke Kawaguchi
* @see <a href="https://developer.github.com/v3/issues/labels/">Labels</a>
* @see GHIssue#getLabels() GHIssue#getLabels()
* @see GHRepository#listLabels() GHRepository#listLabels()
*/
public class GHLabel extends GitHubInteractiveObject {
@Nonnull
private String url, name, color;
@CheckForNull
private String description;
@JsonCreator
private GHLabel(@JacksonInject @Nonnull GitHub root) {
this.root = root;
url = "";
name = "";
color = "";
description = null;
}
@Nonnull
GitHub getApiRoot() {
return Objects.requireNonNull(root);
}
/**
* Gets url.
*
* @return the url
*/
@Nonnull
public String getUrl() {
return url;
}
/**
* Gets name.
*
* @return the name
*/
@Nonnull
public String getName() {
return name;
}
/**
* Color code without leading '#', such as 'f29513'
*
* @return the color
*/
@Nonnull
public String getColor() {
return color;
}
/**
* Purpose of Label
*
* @return the description
*/
@CheckForNull
public String getDescription() {
return description;
}
/**
* Sets color.
*
* @param newColor
* 6-letter hex color code, like "f29513"
* @throws IOException
* the io exception
* @deprecated use {@link #set()} or {@link #update()} instead
*/
@Deprecated
public void setColor(String newColor) throws IOException {
set().color(newColor);
}
/**
* Sets description.
*
* @param newDescription
* Description of label
* @throws IOException
* the io exception
* @deprecated use {@link #set()} or {@link #update()} instead
*/
@Deprecated
public void setDescription(String newDescription) throws IOException {
set().description(newDescription);
}
static Collection<String> toNames(Collection<GHLabel> labels) {
List<String> r = new ArrayList<>();
for (GHLabel l : labels) {
r.add(l.getName());
}
return r;
}
/**
* Begins the creation of a new instance.
*
* Consumer must call {@link Creator#done()} to commit changes.
*
* @param repository
* the repository in which the label will be created.
* @return a {@link Creator}
* @throws IOException
* the io exception
*/
@BetaApi
@Deprecated
static Creator create(GHRepository repository) throws IOException {
return new Creator(repository);
}
/**
* Reads a label from a repository.
*
* @param repository
* the repository to read from
* @param name
* the name of the label
* @return a label
* @throws IOException
* the io exception
*/
static GHLabel read(@Nonnull GHRepository repository, @Nonnull String name) throws IOException {
return repository.root.createRequest()
.withUrlPath(repository.getApiTailUrl("labels"), name)
.fetch(GHLabel.class);
}
/**
* Reads all labels from a repository.
*
* @param repository
* the repository to read from
* @return iterable of all labels
* @throws IOException
* the io exception
*/
static PagedIterable<GHLabel> readAll(@Nonnull final GHRepository repository) throws IOException {
return repository.root.createRequest()
.withUrlPath(repository.getApiTailUrl("labels"))
.toIterable(GHLabel[].class, null);
}
/**
* Begins a batch update
*
* Consumer must call {@link Updater#done()} to commit changes.
*
* @return a {@link Updater}
*/
@BetaApi
@Deprecated
public Updater update() {
return new Updater(this);
}
/**
* Begins a single property update.
*
* @return a {@link Setter}
*/
@BetaApi
@Deprecated
public Setter set() {
return new Setter(this);
}
/**
* Delete this label from the repository.
*
* @throws IOException
* the io exception
*/
public void delete() throws IOException {
root.createRequest().method("DELETE").setRawUrlPath(getUrl()).send();
}
@Override
public boolean equals(final Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
final GHLabel ghLabel = (GHLabel) o;
return Objects.equals(url, ghLabel.url) && Objects.equals(name, ghLabel.name)
&& Objects.equals(color, ghLabel.color) && Objects.equals(description, ghLabel.description);
}
@Override
public int hashCode() {
return Objects.hash(url, name, color, description);
}
/**
* A {@link GHLabelBuilder} that updates a single property per request
*
* {@link #done()} is called automatically after the property is set.
*/
@BetaApi
@Deprecated
public static class Setter extends GHLabelBuilder<GHLabel> {
private Setter(@Nonnull GHLabel base) {
super(GHLabel.class, base.getApiRoot(), base);
requester.method("PATCH").setRawUrlPath(base.getUrl());
}
}
/**
* A {@link GHLabelBuilder} that allows multiple properties to be updated per request.
*
* Consumer must call {@link #done()} to commit changes.
*/
@BetaApi
@Deprecated
public static class Updater extends GHLabelBuilder<Updater> {
private Updater(@Nonnull GHLabel base) {
super(Updater.class, base.getApiRoot(), base);
requester.method("PATCH").setRawUrlPath(base.getUrl());
}
}
/**
* A {@link GHLabelBuilder} that creates a new {@link GHLabel}
*
* Consumer must call {@link #done()} to create the new instance.
*/
@BetaApi
@Deprecated
public static class Creator extends GHLabelBuilder<Creator> {
private Creator(@Nonnull GHRepository repository) {
super(Creator.class, repository.root, null);
requester.method("POST").withUrlPath(repository.getApiTailUrl("labels"));
}
}
}

View File

@@ -0,0 +1,60 @@
package org.kohsuke.github;
import java.io.IOException;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
/**
*
* @param <S>
* Intermediate return type for this builder returned by calls to {@link #with(String, Object)}. If {@link S}
* the same as {@link GHLabel}, this builder will commit changes after each call to
* {@link #with(String, Object)}.
*/
class GHLabelBuilder<S> extends AbstractBuilder<GHLabel, S> {
/**
*
* @param intermediateReturnType
* Intermediate return type for this builder returned by calls to {@link #with(String, Object)}. If
* {@link S} the same as {@link GHLabel}, this builder will commit changes after each call to
* {@link #with(String, Object)}.
* @param root
* the GitHub instance to which updates will be sent
* @param baseInstance
* instance on which to base this builder. If {@code null} a new instance will be created.
*/
protected GHLabelBuilder(@Nonnull Class<S> intermediateReturnType,
@Nonnull GitHub root,
@CheckForNull GHLabel baseInstance) {
super(GHLabel.class, intermediateReturnType, root, baseInstance);
if (baseInstance != null) {
requester.with("name", baseInstance.getName());
requester.with("color", baseInstance.getColor());
requester.with("description", baseInstance.getDescription());
}
}
@Nonnull
@BetaApi
@Deprecated
public S name(String value) throws IOException {
return with("name", value);
}
@Nonnull
@BetaApi
@Deprecated
public S color(String value) throws IOException {
return with("color", value);
}
@Nonnull
@BetaApi
@Deprecated
public S description(String value) throws IOException {
return with("description", value);
}
}

View File

@@ -0,0 +1,221 @@
/*
* The MIT License
*
* Copyright (c) 2016, Duncan Dickinson
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* The GitHub Preview API's license information
*
* @author Duncan Dickinson
* @see GitHub#getLicense(String) GitHub#getLicense(String)
* @see GHRepository#getLicense() GHRepository#getLicense()
* @see <a href="https://developer.github.com/v3/licenses/">https://developer.github.com/v3/licenses/</a>
*/
@SuppressWarnings({ "UnusedDeclaration" })
@SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
justification = "JSON API")
public class GHLicense extends GHObject {
// these fields are always present, even in the short form
protected String key, name;
// the rest is only after populated
protected Boolean featured;
protected String html_url, description, category, implementation, body;
protected List<String> required = new ArrayList<String>();
protected List<String> permitted = new ArrayList<String>();
protected List<String> forbidden = new ArrayList<String>();
/**
* Gets key.
*
* @return a mnemonic for the license
*/
public String getKey() {
return key;
}
/**
* Gets name.
*
* @return the license name
*/
public String getName() {
return name;
}
/**
* Featured licenses are bold in the new repository drop-down
*
* @return True if the license is featured, false otherwise
* @throws IOException
* the io exception
*/
public Boolean isFeatured() throws IOException {
populate();
return featured;
}
public URL getHtmlUrl() throws IOException {
populate();
return GitHubClient.parseURL(html_url);
}
/**
* Gets description.
*
* @return the description
* @throws IOException
* the io exception
*/
public String getDescription() throws IOException {
populate();
return description;
}
/**
* Gets category.
*
* @return the category
* @throws IOException
* the io exception
*/
public String getCategory() throws IOException {
populate();
return category;
}
/**
* Gets implementation.
*
* @return the implementation
* @throws IOException
* the io exception
*/
public String getImplementation() throws IOException {
populate();
return implementation;
}
/**
* Gets required.
*
* @return the required
* @throws IOException
* the io exception
*/
public List<String> getRequired() throws IOException {
populate();
return required;
}
/**
* Gets permitted.
*
* @return the permitted
* @throws IOException
* the io exception
*/
public List<String> getPermitted() throws IOException {
populate();
return permitted;
}
/**
* Gets forbidden.
*
* @return the forbidden
* @throws IOException
* the io exception
*/
public List<String> getForbidden() throws IOException {
populate();
return forbidden;
}
/**
* Gets body.
*
* @return the body
* @throws IOException
* the io exception
*/
public String getBody() throws IOException {
populate();
return body;
}
/**
* Fully populate the data by retrieving missing data.
* <p>
* Depending on the original API call where this object is created, it may not contain everything.
*
* @throws IOException
* the io exception
*/
protected synchronized void populate() throws IOException {
if (description != null)
return; // already populated
if (root == null || root.isOffline()) {
return; // cannot populate, will have to live with what we have
}
URL url = getUrl();
if (url != null) {
root.createRequest().setRawUrlPath(url.toString()).fetchInto(this);
}
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (!(o instanceof GHLicense))
return false;
GHLicense that = (GHLicense) o;
return Objects.equals(getUrl(), that.getUrl());
}
@Override
public int hashCode() {
return Objects.hashCode(getUrl());
}
GHLicense wrap(GitHub root) {
this.root = root;
return this;
}
}

View File

@@ -0,0 +1,86 @@
package org.kohsuke.github;
import java.net.URL;
/**
* Base class for Github Marketplace Account.
*
* @author Paulo Miguel Almeida
* @see GitHub#getMyMarketplacePurchases()
* @see GHMarketplaceListAccountBuilder#createRequest()
*/
public class GHMarketplaceAccount extends GitHubInteractiveObject {
private String url;
private long id;
private String login;
private String email;
private String organizationBillingEmail;
private GHMarketplaceAccountType type;
/**
* Wrap up gh marketplace account.
*
* @param root
* the root
* @return an instance of the GHMarketplaceAccount class
*/
GHMarketplaceAccount wrapUp(GitHub root) {
this.root = root;
return this;
}
/**
* Gets url.
*
* @return the url
*/
public URL getUrl() {
return GitHubClient.parseURL(url);
}
/**
* Gets id.
*
* @return the id
*/
public long getId() {
return id;
}
/**
* Gets login.
*
* @return the login
*/
public String getLogin() {
return login;
}
/**
* Gets email.
*
* @return the email
*/
public String getEmail() {
return email;
}
/**
* Gets organization billing email.
*
* @return the organization billing email
*/
public String getOrganizationBillingEmail() {
return organizationBillingEmail;
}
/**
* Gets type.
*
* @return the type
*/
public GHMarketplaceAccountType getType() {
return type;
}
}

View File

@@ -0,0 +1,53 @@
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
/**
* A Github Marketplace Account Plan.
*
* @author Paulo Miguel Almeida
* @see GHMarketplaceListAccountBuilder#createRequest()
*/
public class GHMarketplaceAccountPlan extends GHMarketplaceAccount {
@SuppressFBWarnings(value = "UWF_UNWRITTEN_FIELD", justification = "Field comes from JSON deserialization")
private GHMarketplacePendingChange marketplacePendingChange;
@SuppressFBWarnings(value = "UWF_UNWRITTEN_FIELD", justification = "Field comes from JSON deserialization")
private GHMarketplacePurchase marketplacePurchase;
/**
* Wrap up gh marketplace account.
*
* @param root
* the root
* @return an instance of the GHMarketplaceAccount class
*/
GHMarketplaceAccountPlan wrapUp(GitHub root) {
super.wrapUp(root);
if (this.marketplacePendingChange != null)
this.marketplacePendingChange.wrapUp(this.root);
if (this.marketplacePurchase != null)
this.marketplacePurchase.wrapUp(this.root);
return this;
}
/**
* Gets marketplace pending change.
*
* @return the marketplace pending change
*/
public GHMarketplacePendingChange getMarketplacePendingChange() {
return marketplacePendingChange;
}
/**
* Gets marketplace purchase.
*
* @return the marketplace purchase
*/
public GHMarketplacePurchase getMarketplacePurchase() {
return marketplacePurchase;
}
}

View File

@@ -0,0 +1,22 @@
package org.kohsuke.github;
import org.apache.commons.lang3.StringUtils;
import java.util.Locale;
/**
* GitHub Marketplace Account type.
*
* @author Paulo Miguel Almeida
* @see GHMarketplaceAccount
*/
public enum GHMarketplaceAccountType {
ORGANIZATION, USER;
/**
* Returns GitHub's internal representation of this event.
*/
String symbol() {
return StringUtils.capitalize(name().toLowerCase(Locale.ENGLISH));
}
}

View File

@@ -0,0 +1,70 @@
package org.kohsuke.github;
import java.io.IOException;
/**
* Returns any accounts associated with a plan, including free plans
*
* @author Paulo Miguel Almeida
* @see GHMarketplacePlan#listAccounts()
*/
public class GHMarketplaceListAccountBuilder extends GitHubInteractiveObject {
private final Requester builder;
private final long planId;
GHMarketplaceListAccountBuilder(GitHub root, long planId) {
this.root = root;
this.builder = root.createRequest();
this.planId = planId;
}
/**
* Sorts the GitHub accounts by the date they were created or last updated. Can be one of created or updated.
* <p>
* If omitted, the default sorting strategy will be "CREATED"
*
* @param sort
* the sort strategy
* @return a GHMarketplaceListAccountBuilder
*/
public GHMarketplaceListAccountBuilder sort(Sort sort) {
this.builder.with("sort", sort);
return this;
}
/**
* Orders the GitHub accounts results, Can be one of asc or desc. Ignored without the sort parameter.
*
* @param direction
* the order strategy
* @return a GHMarketplaceListAccountBuilder
*/
public GHMarketplaceListAccountBuilder direction(GHDirection direction) {
this.builder.with("direction", direction);
return this;
}
/**
* The enum Sort.
*/
public enum Sort {
CREATED, UPDATED
}
/**
* List any accounts associated with the plan specified on construction with all the order/sort parameters set.
* <p>
* GitHub Apps must use a JWT to access this endpoint.
* <p>
* OAuth Apps must use basic authentication with their client ID and client secret to access this endpoint.
*
* @return a paged iterable instance of GHMarketplaceAccountPlan
* @throws IOException
* on error
*/
public PagedIterable<GHMarketplaceAccountPlan> createRequest() throws IOException {
return builder.withUrlPath(String.format("/marketplace_listing/plans/%d/accounts", this.planId))
.toIterable(GHMarketplaceAccountPlan[].class, item -> item.wrapUp(root));
}
}

View File

@@ -0,0 +1,73 @@
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Date;
/**
* A Github Marketplace purchase pending change.
*
* @author Paulo Miguel Almeida
* @see GHMarketplaceListAccountBuilder#createRequest()
*/
public class GHMarketplacePendingChange extends GitHubInteractiveObject {
private long id;
@SuppressFBWarnings(value = "UWF_UNWRITTEN_FIELD", justification = "Field comes from JSON deserialization")
private Long unitCount;
@SuppressFBWarnings(value = "UWF_UNWRITTEN_FIELD", justification = "Field comes from JSON deserialization")
private GHMarketplacePlan plan;
@SuppressFBWarnings(value = "UWF_UNWRITTEN_FIELD", justification = "Field comes from JSON deserialization")
private String effectiveDate;
/**
* Wrap up gh marketplace pending change.
*
* @param root
* the root
* @return an instance of the GHMarketplacePendingChange class
*/
GHMarketplacePendingChange wrapUp(GitHub root) {
this.root = root;
if (plan != null) { // sanity check
this.plan.wrapUp(this.root);
}
return this;
}
/**
* Gets id.
*
* @return the id
*/
public long getId() {
return id;
}
/**
* Gets unit count.
*
* @return the unit count
*/
public Long getUnitCount() {
return unitCount;
}
/**
* Gets plan.
*
* @return the plan
*/
public GHMarketplacePlan getPlan() {
return plan;
}
/**
* Gets effective date.
*
* @return the effective date
*/
public Date getEffectiveDate() {
return GitHubClient.parseDate(effectiveDate);
}
}

View File

@@ -0,0 +1,182 @@
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.net.URL;
import java.util.List;
/**
* A Github Marketplace plan.
*
* @author Paulo Miguel Almeida
* @see GitHub#listMarketplacePlans()
*/
public class GHMarketplacePlan extends GitHubInteractiveObject {
private String url;
private String accountsUrl;
private long id;
private long number;
private String name;
private String description;
private long monthlyPriceInCents;
private long yearlyPriceInCents;
private GHMarketplacePriceModel priceModel;
@JsonProperty("has_free_trial")
private boolean freeTrial; // JavaBeans Spec 1.01 section 8.3.2 forces us to have is<propertyName>
private String unitName;
private String state;
private List<String> bullets;
/**
* Wrap up gh marketplace plan.
*
* @param root
* the root
* @return an instance of the GHMarketplacePlan class
*/
GHMarketplacePlan wrapUp(GitHub root) {
this.root = root;
return this;
}
/**
* Gets url.
*
* @return the url
*/
public URL getUrl() {
return GitHubClient.parseURL(url);
}
/**
* Gets accounts url.
*
* @return the accounts url
*/
public String getAccountsUrl() {
return accountsUrl;
}
/**
* Gets id.
*
* @return the id
*/
public long getId() {
return id;
}
/**
* Gets number.
*
* @return the number
*/
public long getNumber() {
return number;
}
/**
* Gets name.
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Gets description.
*
* @return the description
*/
public String getDescription() {
return description;
}
/**
* Gets monthly price in cents.
*
* @return the monthly price in cents
*/
public long getMonthlyPriceInCents() {
return monthlyPriceInCents;
}
/**
* Gets yearly price in cents.
*
* @return the yearly price in cents
*/
public long getYearlyPriceInCents() {
return yearlyPriceInCents;
}
/**
* Gets price model.
*
* @return the price model
*/
public GHMarketplacePriceModel getPriceModel() {
return priceModel;
}
/**
* Is free trial boolean.
*
* @return the boolean
*/
public boolean isFreeTrial() {
return freeTrial;
}
/**
* Gets unit name.
*
* @return the unit name
*/
public String getUnitName() {
return unitName;
}
/**
* Gets state.
*
* @return the state
*/
public String getState() {
return state;
}
/**
* Gets bullets.
*
* @return the bullets
*/
public List<String> getBullets() {
return bullets;
}
/**
* Starts a builder that list any accounts associated with a plan, including free plans. For per-seat pricing, you
* see the list of accounts that have purchased the plan, including the number of seats purchased. When someone
* submits a plan change that won't be processed until the end of their billing cycle, you will also see the
* upcoming pending change.
*
* <p>
* You use the returned builder to set various properties, then call
* {@link GHMarketplaceListAccountBuilder#createRequest()} to finally list the accounts related to this plan.
*
* <p>
* GitHub Apps must use a JWT to access this endpoint.
* <p>
* OAuth Apps must use basic authentication with their client ID and client secret to access this endpoint.
*
* @return a GHMarketplaceListAccountBuilder instance
* @see <a href=
* "https://developer.github.com/v3/apps/marketplace/#list-all-github-accounts-user-or-organization-on-a-specific-plan">List
* all GitHub accounts (user or organization) on a specific plan</a>
*/
public GHMarketplaceListAccountBuilder listAccounts() {
return new GHMarketplaceListAccountBuilder(root, this.id);
}
}

View File

@@ -0,0 +1,29 @@
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JsonValue;
/**
* GitHub Marketplace plan pricing model.
*
* @author Paulo Miguel Almeida
* @see GHMarketplacePlan
*/
public enum GHMarketplacePriceModel {
FREE("free"), PER_UNIT("per-unit"), FLAT_RATE("flat-rate");
@JsonValue
private final String internalName;
GHMarketplacePriceModel(String internalName) {
this.internalName = internalName;
}
/**
* Returns GitHub's internal representation of this event.
*
* @return a string containing GitHub's internal representation of this event.
*/
public String symbol() {
return internalName;
}
}

View File

@@ -0,0 +1,101 @@
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Date;
/**
* A Github Marketplace purchase.
*
* @author Paulo Miguel Almeida
* @see GHMarketplaceListAccountBuilder#createRequest() GHMarketplaceListAccountBuilder#createRequest()
*/
public class GHMarketplacePurchase extends GitHubInteractiveObject {
private String billingCycle;
private String nextBillingDate;
private boolean onFreeTrial;
private String freeTrialEndsOn;
private Long unitCount;
private String updatedAt;
@SuppressFBWarnings(value = "UWF_UNWRITTEN_FIELD", justification = "Field comes from JSON deserialization")
private GHMarketplacePlan plan;
/**
* Wrap up gh marketplace purchase.
*
* @param root
* the root
* @return an instance of the GHMarketplacePurchase class
*/
GHMarketplacePurchase wrapUp(GitHub root) {
this.root = root;
if (plan != null) { // sanity check
this.plan.wrapUp(this.root);
}
return this;
}
/**
* Gets billing cycle.
*
* @return the billing cycle
*/
public String getBillingCycle() {
return billingCycle;
}
/**
* Gets next billing date.
*
* @return the next billing date
*/
public Date getNextBillingDate() {
return GitHubClient.parseDate(nextBillingDate);
}
/**
* Is on free trial boolean.
*
* @return the boolean
*/
public boolean isOnFreeTrial() {
return onFreeTrial;
}
/**
* Gets free trial ends on.
*
* @return the free trial ends on
*/
public Date getFreeTrialEndsOn() {
return GitHubClient.parseDate(freeTrialEndsOn);
}
/**
* Gets unit count.
*
* @return the unit count
*/
public Long getUnitCount() {
return unitCount;
}
/**
* Gets updated at.
*
* @return the updated at
*/
public Date getUpdatedAt() {
return GitHubClient.parseDate(updatedAt);
}
/**
* Gets plan.
*
* @return the plan
*/
public GHMarketplacePlan getPlan() {
return plan;
}
}

View File

@@ -0,0 +1,112 @@
package org.kohsuke.github;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Date;
/**
* Github Marketplace User Purchase
*
* @author Paulo Miguel Almeida
* @see GitHub#getMyMarketplacePurchases()
*/
public class GHMarketplaceUserPurchase extends GitHubInteractiveObject {
private String billingCycle;
private String nextBillingDate;
private boolean onFreeTrial;
private String freeTrialEndsOn;
private Long unitCount;
private String updatedAt;
@SuppressFBWarnings(value = "UWF_UNWRITTEN_FIELD", justification = "Field comes from JSON deserialization")
private GHMarketplaceAccount account;
@SuppressFBWarnings(value = "UWF_UNWRITTEN_FIELD", justification = "Field comes from JSON deserialization")
private GHMarketplacePlan plan;
/**
* Wrap up GHMarketplaceUserPurchase.
*
* @param root
* the root
* @return an instance of the GHMarketplaceUserPurchase class
*/
GHMarketplaceUserPurchase wrapUp(GitHub root) {
this.root = root;
if (this.account != null)
this.account.wrapUp(this.root);
if (this.plan != null)
this.plan.wrapUp(this.root);
return this;
}
/**
* Gets billing cycle.
*
* @return the billing cycle
*/
public String getBillingCycle() {
return billingCycle;
}
/**
* Gets next billing date.
*
* @return the next billing date
*/
public Date getNextBillingDate() {
return GitHubClient.parseDate(nextBillingDate);
}
/**
* Is on free trial boolean.
*
* @return the boolean
*/
public boolean isOnFreeTrial() {
return onFreeTrial;
}
/**
* Gets free trial ends on.
*
* @return the free trial ends on
*/
public Date getFreeTrialEndsOn() {
return GitHubClient.parseDate(freeTrialEndsOn);
}
/**
* Gets unit count.
*
* @return the unit count
*/
public Long getUnitCount() {
return unitCount;
}
/**
* Gets updated at.
*
* @return the updated at
*/
public Date getUpdatedAt() {
return GitHubClient.parseDate(updatedAt);
}
/**
* Gets account.
*
* @return the account
*/
public GHMarketplaceAccount getAccount() {
return account;
}
/**
* Gets plan.
*
* @return the plan
*/
public GHMarketplacePlan getPlan() {
return plan;
}
}

View File

@@ -0,0 +1,105 @@
package org.kohsuke.github;
import java.io.IOException;
import java.net.URL;
import java.util.Locale;
/**
* Represents a membership of a user in an organization.
*
* @author Kohsuke Kawaguchi
* @see GHMyself#listOrgMemberships() GHMyself#listOrgMemberships()
*/
public class GHMembership extends GitHubInteractiveObject {
String url;
String state;
String role;
GHUser user;
GHOrganization organization;
/**
* Gets url.
*
* @return the url
*/
public URL getUrl() {
return GitHubClient.parseURL(url);
}
/**
* Gets state.
*
* @return the state
*/
public State getState() {
return Enum.valueOf(State.class, state.toUpperCase(Locale.ENGLISH));
}
/**
* Gets role.
*
* @return the role
*/
public Role getRole() {
return Enum.valueOf(Role.class, role.toUpperCase(Locale.ENGLISH));
}
/**
* Gets user.
*
* @return the user
*/
public GHUser getUser() {
return user;
}
/**
* Gets organization.
*
* @return the organization
*/
public GHOrganization getOrganization() {
return organization;
}
/**
* Accepts a pending invitation to an organization.
*
* @throws IOException
* the io exception
* @see GHMyself#getMembership(GHOrganization) GHMyself#getMembership(GHOrganization)
*/
public void activate() throws IOException {
root.createRequest().method("PATCH").with("state", State.ACTIVE).withUrlPath(url).fetchInto(this);
}
GHMembership wrap(GitHub root) {
this.root = root;
if (user != null)
user = root.getUser(user.wrapUp(root));
if (organization != null)
organization.wrapUp(root);
return this;
}
/**
* Role of a user in an organization.
*/
public enum Role {
/**
* Organization owner.
*/
ADMIN,
/**
* Non-owner organization member.
*/
MEMBER;
}
/**
* Whether a role is currently active or waiting for acceptance (pending)
*/
public enum State {
ACTIVE, PENDING;
}
}

View File

@@ -0,0 +1,89 @@
package org.kohsuke.github;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Class that wraps the list of GitHub's IP addresses.
*
* @author Paulo Miguel Almeida
* @see GitHub#getMeta() GitHub#getMeta()
* @see <a href="https://developer.github.com/v3/meta/#meta">Get Meta</a>
*/
public class GHMeta {
@JsonProperty("verifiable_password_authentication")
private boolean verifiablePasswordAuthentication;
private List<String> hooks;
private List<String> git;
private List<String> web;
private List<String> api;
private List<String> pages;
private List<String> importer = new ArrayList<>();
/**
* Is verifiable password authentication boolean.
*
* @return the boolean
*/
public boolean isVerifiablePasswordAuthentication() {
return verifiablePasswordAuthentication;
}
/**
* Gets hooks.
*
* @return the hooks
*/
public List<String> getHooks() {
return Collections.unmodifiableList(hooks);
}
/**
* Gets git.
*
* @return the git
*/
public List<String> getGit() {
return Collections.unmodifiableList(git);
}
/**
* Gets web.
*
* @return the web
*/
public List<String> getWeb() {
return Collections.unmodifiableList(web);
}
/**
* Gets api.
*
* @return the api
*/
public List<String> getApi() {
return Collections.unmodifiableList(api);
}
/**
* Gets pages.
*
* @return the pages
*/
public List<String> getPages() {
return Collections.unmodifiableList(pages);
}
/**
* Gets importer.
*
* @return the importer
*/
public List<String> getImporter() {
return Collections.unmodifiableList(importer);
}
}

View File

@@ -0,0 +1,221 @@
package org.kohsuke.github;
import java.io.IOException;
import java.net.URL;
import java.util.Date;
import java.util.Locale;
/**
* The type GHMilestone.
*
* @author Yusuke Kokubo
*/
public class GHMilestone extends GHObject {
GHRepository owner;
GHUser creator;
private String state, due_on, title, description, html_url;
private int closed_issues, open_issues, number;
protected String closed_at;
/**
* Gets root.
*
* @return the root
*/
public GitHub getRoot() {
return root;
}
/**
* Gets owner.
*
* @return the owner
*/
public GHRepository getOwner() {
return owner;
}
/**
* Gets creator.
*
* @return the creator
* @throws IOException
* the io exception
*/
public GHUser getCreator() throws IOException {
return root.intern(creator);
}
/**
* Gets due on.
*
* @return the due on
*/
public Date getDueOn() {
if (due_on == null)
return null;
return GitHubClient.parseDate(due_on);
}
/**
* When was this milestone closed?
*
* @return the closed at
* @throws IOException
* the io exception
*/
public Date getClosedAt() throws IOException {
return GitHubClient.parseDate(closed_at);
}
/**
* Gets title.
*
* @return the title
*/
public String getTitle() {
return title;
}
/**
* Gets description.
*
* @return the description
*/
public String getDescription() {
return description;
}
/**
* Gets closed issues.
*
* @return the closed issues
*/
public int getClosedIssues() {
return closed_issues;
}
/**
* Gets open issues.
*
* @return the open issues
*/
public int getOpenIssues() {
return open_issues;
}
/**
* Gets number.
*
* @return the number
*/
public int getNumber() {
return number;
}
public URL getHtmlUrl() {
return GitHubClient.parseURL(html_url);
}
/**
* Gets state.
*
* @return the state
*/
public GHMilestoneState getState() {
return Enum.valueOf(GHMilestoneState.class, state.toUpperCase(Locale.ENGLISH));
}
/**
* Closes this milestone.
*
* @throws IOException
* the io exception
*/
public void close() throws IOException {
edit("state", "closed");
}
/**
* Reopens this milestone.
*
* @throws IOException
* the io exception
*/
public void reopen() throws IOException {
edit("state", "open");
}
/**
* Deletes this milestone.
*
* @throws IOException
* the io exception
*/
public void delete() throws IOException {
root.createRequest().method("DELETE").withUrlPath(getApiRoute()).send();
}
private void edit(String key, Object value) throws IOException {
root.createRequest().with(key, value).method("PATCH").withUrlPath(getApiRoute()).send();
}
/**
* Sets title.
*
* @param title
* the title
* @throws IOException
* the io exception
*/
public void setTitle(String title) throws IOException {
edit("title", title);
}
/**
* Sets description.
*
* @param description
* the description
* @throws IOException
* the io exception
*/
public void setDescription(String description) throws IOException {
edit("description", description);
}
/**
* Sets due on.
*
* @param dueOn
* the due on
* @throws IOException
* the io exception
*/
public void setDueOn(Date dueOn) throws IOException {
edit("due_on", GitHubClient.printDate(dueOn));
}
/**
* Gets api route.
*
* @return the api route
*/
protected String getApiRoute() {
return "/repos/" + owner.getOwnerName() + "/" + owner.getName() + "/milestones/" + number;
}
/**
* Wrap gh milestone.
*
* @param repo
* the repo
* @return the gh milestone
*/
public GHMilestone wrap(GHRepository repo) {
this.owner = repo;
this.root = repo.root;
return this;
}
}

View File

@@ -0,0 +1,10 @@
package org.kohsuke.github;
/**
* The enum GHMilestoneState.
*
* @author Yusuke Kokubo
*/
public enum GHMilestoneState {
OPEN, CLOSED
}

View File

@@ -0,0 +1,242 @@
package org.kohsuke.github;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
/**
* Represents the account that's logging into GitHub.
*
* @author Kohsuke Kawaguchi
*/
public class GHMyself extends GHUser {
/**
* Type of repositories returned during listing.
*/
public enum RepositoryListFilter {
/**
* All public and private repositories that current user has access or collaborates to
*/
ALL,
/**
* Public and private repositories owned by current user
*/
OWNER,
/**
* Public repositories that current user has access or collaborates to
*/
PUBLIC,
/**
* Private repositories that current user has access or collaborates to
*/
PRIVATE,
/**
* Public and private repositories that current user is a member
*/
MEMBER;
}
/**
* Gets emails.
*
* @return the emails
* @throws IOException
* the io exception
* @deprecated Use {@link #getEmails2()}
*/
public List<String> getEmails() throws IOException {
List<GHEmail> src = getEmails2();
List<String> r = new ArrayList<String>(src.size());
for (GHEmail e : src) {
r.add(e.getEmail());
}
return r;
}
/**
* Returns the read-only list of e-mail addresses configured for you.
* <p>
* This corresponds to the stuff you configure in https://github.com/settings/emails, and not to be confused with
* {@link #getEmail()} that shows your public e-mail address set in https://github.com/settings/profile
*
* @return Always non-null.
* @throws IOException
* the io exception
*/
public List<GHEmail> getEmails2() throws IOException {
return root.createRequest().withUrlPath("/user/emails").toIterable(GHEmail[].class, null).toList();
}
/**
* Returns the read-only list of all the pulic keys of the current user.
* <p>
* NOTE: When using OAuth authenticaiton, the READ/WRITE User scope is required by the GitHub APIs, otherwise you
* will get a 404 NOT FOUND.
*
* @return Always non-null.
* @throws IOException
* the io exception
*/
public List<GHKey> getPublicKeys() throws IOException {
return root.createRequest().withUrlPath("/user/keys").toIterable(GHKey[].class, null).toList();
}
/**
* Returns the read-only list of all the public verified keys of the current user.
* <p>
* Differently from the getPublicKeys() method, the retrieval of the user's verified public keys does not require
* any READ/WRITE OAuth Scope to the user's profile.
*
* @return Always non-null.
* @throws IOException
* the io exception
*/
public List<GHVerifiedKey> getPublicVerifiedKeys() throws IOException {
return root.createRequest()
.withUrlPath("/users/" + getLogin() + "/keys")
.toIterable(GHVerifiedKey[].class, null)
.toList();
}
/**
* Gets the organization that this user belongs to.
*
* @return the all organizations
* @throws IOException
* the io exception
*/
public GHPersonSet<GHOrganization> getAllOrganizations() throws IOException {
GHPersonSet<GHOrganization> orgs = new GHPersonSet<GHOrganization>();
Set<String> names = new HashSet<String>();
for (GHOrganization o : root.createRequest()
.withUrlPath("/user/orgs")
.toIterable(GHOrganization[].class, null)
.toArray()) {
if (names.add(o.getLogin())) // in case of rumoured duplicates in the data
orgs.add(root.getOrganization(o.getLogin()));
}
return orgs;
}
/**
* Gets the all repositories this user owns (public and private).
*
* @return the all repositories
* @throws IOException
* the io exception
*/
public synchronized Map<String, GHRepository> getAllRepositories() throws IOException {
Map<String, GHRepository> repositories = new TreeMap<String, GHRepository>();
for (GHRepository r : listAllRepositories()) {
repositories.put(r.getName(), r);
}
return Collections.unmodifiableMap(repositories);
}
/**
* Lists up all repositories this user owns (public and private).
*
* Unlike {@link #getAllRepositories()}, this does not wait until all the repositories are returned. Repositories
* are returned by GitHub API with a 30 items per page.
*/
@Override
public PagedIterable<GHRepository> listRepositories() {
return listRepositories(30);
}
/**
* List repositories that are accessible to the authenticated user (public and private) using the specified page
* size.
*
* This includes repositories owned by the authenticated user, repositories that belong to other users where the
* authenticated user is a collaborator, and other organizations' repositories that the authenticated user has
* access to through an organization membership.
*
* @param pageSize
* size for each page of items returned by GitHub. Maximum page size is 100.
*
* Unlike {@link #getRepositories()}, this does not wait until all the repositories are returned.
*/
public PagedIterable<GHRepository> listRepositories(final int pageSize) {
return listRepositories(pageSize, RepositoryListFilter.ALL);
}
/**
* List repositories of a certain type that are accessible by current authenticated user using the specified page
* size.
*
* @param pageSize
* size for each page of items returned by GitHub. Maximum page size is 100.
* @param repoType
* type of repository returned in the listing
* @return the paged iterable
*/
public PagedIterable<GHRepository> listRepositories(final int pageSize, final RepositoryListFilter repoType) {
return root.createRequest()
.with("type", repoType)
.withUrlPath("/user/repos")
.toIterable(GHRepository[].class, item -> item.wrap(root))
.withPageSize(pageSize);
}
/**
* List all repositories paged iterable.
*
* @return the paged iterable
* @deprecated Use {@link #listRepositories()}
*/
@Deprecated
public PagedIterable<GHRepository> listAllRepositories() {
return listRepositories();
}
/**
* List your organization memberships
*
* @return the paged iterable
*/
public PagedIterable<GHMembership> listOrgMemberships() {
return listOrgMemberships(null);
}
/**
* List your organization memberships
*
* @param state
* Filter by a specific state
* @return the paged iterable
*/
public PagedIterable<GHMembership> listOrgMemberships(final GHMembership.State state) {
return root.createRequest()
.with("state", state)
.withUrlPath("/user/memberships/orgs")
.toIterable(GHMembership[].class, item -> item.wrap(root));
}
/**
* Gets your membership in a specific organization.
*
* @param o
* the o
* @return the membership
* @throws IOException
* the io exception
*/
public GHMembership getMembership(GHOrganization o) throws IOException {
return root.createRequest()
.withUrlPath("/user/memberships/orgs/" + o.getLogin())
.fetch(GHMembership.class)
.wrap(root);
}
// public void addEmails(Collection<String> emails) throws IOException {
//// new Requester(root,ApiVersion.V3).withCredential().to("/user/emails");
// root.retrieveWithAuth3()
// }
}

Some files were not shown because too many files have changed in this diff Show More