@@ -77,7 +77,7 @@ public static Payload from(String eventName, Map<String, Object> data) {
7777 String repo = null ;
7878
7979 if (REPOSITORY_EVENTS .contains (eventName )) {
80- Map <String , Object > m = MapUtils .getMap (data , REPO_NAME_KEY , Collections . emptyMap ());
80+ Map <String , Object > m = MapUtils .getMap (data , REPO_NAME_KEY , Map . of ());
8181 fullRepoName = MapUtils .getString (m , "full_name" );
8282
8383 if (fullRepoName != null ) {
@@ -90,7 +90,7 @@ public static Payload from(String eventName, Map<String, Object> data) {
9090 repo = as [1 ];
9191 }
9292 } else if (ORGANIZATION_EVENTS .contains (eventName )) {
93- Map <String , Object > m = MapUtils .getMap (data , ORGANIZATION_KEY , Collections . emptyMap ());
93+ Map <String , Object > m = MapUtils .getMap (data , ORGANIZATION_KEY , Map . of ());
9494 org = MapUtils .getString (m , "login" );
9595 } else {
9696 return null ;
@@ -115,8 +115,8 @@ protected Payload(String eventName, String fullRepoName, String org, String repo
115115
116116 public String getHost () {
117117 try {
118- Map <String , Object > repo = MapUtils .getMap (data , REPO_NAME_KEY , Collections . emptyMap ());
119- String url = MapUtils .getString (repo , "git_url" );
118+ Map <String , Object > repository = MapUtils .getMap (data , REPO_NAME_KEY , Map . of ());
119+ String url = MapUtils .getString (repository , "git_url" );
120120 return new URI (url ).getHost ();
121121 } catch (Exception e ) {
122122 return null ;
@@ -170,11 +170,11 @@ public String getHead() {
170170 }
171171
172172 public Map <String , Set <String >> getFiles () {
173- if (!eventName . toLowerCase (). equals ( PUSH_EVENT )) {
174- return Collections . emptyMap ();
173+ if (!PUSH_EVENT . equalsIgnoreCase ( eventName )) {
174+ return Map . of ();
175175 }
176176
177- List <Map <String , Object >> commits = MapUtils .getList (data , "commits" , Collections . emptyList ());
177+ List <Map <String , Object >> commits = MapUtils .getList (data , "commits" , List . of ());
178178 Map <String , Set <String >> files = new HashMap <>();
179179 for (Map <String , Object > c : commits ) {
180180 append (c , "added" , files );
@@ -184,20 +184,48 @@ public Map<String, Set<String>> getFiles() {
184184 return files ;
185185 }
186186
187+ public boolean isPullRequestFromDifferentRepo () {
188+ Map <String , Object > pullRequest = getPullRequestAttribute (this .raw ());
189+ String baseCloneUrl = getPullRequestCloneUrl (pullRequest , BASE_KEY );
190+ String headCloneUrl = getPullRequestCloneUrl (pullRequest , HEAD_KEY );
191+
192+ return !Objects .equals (baseCloneUrl , headCloneUrl );
193+ }
194+
195+ /**
196+ * @return <code>true</code> when event contains `pull_request` attribute.<br/>
197+ * NOTE: this does <em>not</em> indicate the payload is from a <code>pull_request</code>
198+ * event. It may be from another event related to a pull request such as
199+ * <code>pull_request_review</code> or <code>pull_request_review_comment</code>
200+ */
201+ public boolean hasPullRequestEntry () {
202+ return raw ().containsKey (PULL_REQUEST_EVENT );
203+ }
204+
205+ public String getPullRequestBaseUrl () {
206+ Map <String , Object > pullRequest = getPullRequestAttribute (this .raw ());
207+ return getPullRequestCloneUrl (pullRequest , BASE_KEY );
208+ }
209+
210+ public String getPullRequestHeadUrl () {
211+ Map <String , Object > pullRequest = getPullRequestAttribute (this .raw ());
212+ return getPullRequestCloneUrl (pullRequest , HEAD_KEY );
213+ }
214+
187215 private static void append (Map <String , Object > c , String name , Map <String , Set <String >> result ) {
188- List <String > value = MapUtils .getList (c , name , Collections . emptyList ());
216+ List <String > value = MapUtils .getList (c , name , List . of ());
189217 result .compute (name , (k , v ) -> (v == null ) ? new HashSet <>(value ) : Stream .concat (v .stream (), value .stream ()).collect (Collectors .toSet ()));
190218 }
191219
192220 public String getSender () {
193- Map <String , Object > sender = MapUtils .getMap (data , "sender" , Collections . emptyMap ());
221+ Map <String , Object > sender = MapUtils .getMap (data , "sender" , Map . of ());
194222 return MapUtils .getString (sender , "login" );
195223 }
196224
197225 public String getSenderLdapDn () {
198226 Object result = ConfigurationUtils .get (data , "sender" , "ldap_dn" );
199- if (result instanceof String ) {
200- return ( String ) result ;
227+ if (result instanceof String s ) {
228+ return s ;
201229 }
202230 return null ;
203231 }
@@ -215,7 +243,7 @@ public Map<String, Object> raw() {
215243 }
216244
217245 private static String getRef (Map <String , Object > event ) {
218- String ref = MapUtils .getString (event , "ref" );
246+ String ref = MapUtils .getString (event , REF_KEY );
219247 if (ref == null ) {
220248 return null ;
221249 }
@@ -224,15 +252,25 @@ private static String getRef(Map<String, Object> event) {
224252 }
225253
226254 private static String getPullRequestHead (Map <String , Object > event ) {
227- Map <String , Object > pr = MapUtils .getMap (event , PULL_REQUEST_EVENT , Collections . emptyMap ());
228- Map <String , Object > base = MapUtils .getMap (pr , "head" , Collections . emptyMap ());
229- return MapUtils .getString (base , "ref" );
255+ Map <String , Object > pr = MapUtils .getMap (event , PULL_REQUEST_EVENT , Map . of ());
256+ Map <String , Object > base = MapUtils .getMap (pr , HEAD_KEY , Map . of ());
257+ return MapUtils .getString (base , REF_KEY );
230258 }
231259
232260 private static String getBranchPullRequest (Map <String , Object > event ) {
233- Map <String , Object > pr = MapUtils .getMap (event , PULL_REQUEST_EVENT , Collections .emptyMap ());
234- Map <String , Object > base = MapUtils .getMap (pr , "base" , Collections .emptyMap ());
235- return MapUtils .getString (base , "ref" );
261+ Map <String , Object > pr = MapUtils .getMap (event , PULL_REQUEST_EVENT , Map .of ());
262+ Map <String , Object > base = MapUtils .getMap (pr , BASE_KEY , Map .of ());
263+ return MapUtils .getString (base , REF_KEY );
264+ }
265+
266+ private static Map <String , Object > getPullRequestAttribute (Map <String , Object > event ) {
267+ return MapUtils .getMap (event , PULL_REQUEST_EVENT , Map .of ());
268+ }
269+
270+ private static String getPullRequestCloneUrl (Map <String , Object > pullRequest , String baseOrHead ) {
271+ Map <String , Object > head = MapUtils .getMap (pullRequest , baseOrHead , Map .of ());
272+ Map <String , Object > headRepo = MapUtils .getMap (head , "repo" , Map .of ());
273+ return MapUtils .getString (headRepo , "clone_url" , "" );
236274 }
237275
238276 @ Override
0 commit comments