Skip to content
Snippets Groups Projects

fix: update GH API requests to handle rest client param encoding

Merged Martin Lowe requested to merge malowe/main/fix-gh-calls into main
1 unresolved thread
12 files
+ 121
60
Compare changes
  • Side-by-side
  • Inline
Files
12
@@ -14,6 +14,7 @@ package org.eclipsefoundation.git.eca.api.models;
import jakarta.annotation.Nullable;
import org.eclipsefoundation.git.eca.dto.GithubWebhookTracking;
import org.eclipsefoundation.utils.helper.TransformationHelper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
@@ -55,6 +56,13 @@ public abstract class GithubWebhookRequest {
* @return the reconstructed request.
*/
public static GithubWebhookRequest buildFromTracking(GithubWebhookTracking tracking) {
String[] repoNameParts = tracking.getRepositoryFullName().split("\\/");
if (repoNameParts.length != 2) {
throw new IllegalStateException("A repo full name should always have 2 parts, organization name and repo name: "
+ TransformationHelper.formatLog(tracking.getRepositoryFullName()));
}
String org = repoNameParts[0];
String repo = repoNameParts[1];
return builder()
.setInstallation(Installation.builder().setId(tracking.getInstallationId()).build())
.setPullRequest(PullRequest
@@ -66,6 +74,8 @@ public abstract class GithubWebhookRequest {
.setRepository(Repository
.builder()
.setFullName(tracking.getRepositoryFullName())
.setName(repo)
.setOwner(RepositoryOwner.builder().setLogin(org).build())
.setHtmlUrl("https://github.com/" + tracking.getRepositoryFullName())
.build())
.build();
@@ -92,6 +102,10 @@ public abstract class GithubWebhookRequest {
public abstract String getFullName();
public abstract String getName();
public abstract RepositoryOwner getOwner();
public abstract String getHtmlUrl();
public static Builder builder() {
@@ -103,12 +117,35 @@ public abstract class GithubWebhookRequest {
public abstract static class Builder {
public abstract Builder setFullName(String fullName);
public abstract Builder setName(String name);
public abstract Builder setOwner(RepositoryOwner owner);
public abstract Builder setHtmlUrl(String htmlUrl);
public abstract Repository build();
}
}
@AutoValue
@JsonDeserialize(builder = AutoValue_GithubWebhookRequest_RepositoryOwner.Builder.class)
public abstract static class RepositoryOwner {
public abstract String getLogin();
public static Builder builder() {
return new AutoValue_GithubWebhookRequest_RepositoryOwner.Builder();
}
@AutoValue.Builder
@JsonPOJOBuilder(withPrefix = "set")
public abstract static class Builder {
public abstract Builder setLogin(String fullName);
public abstract RepositoryOwner build();
}
}
@AutoValue
@JsonDeserialize(builder = AutoValue_GithubWebhookRequest_PullRequest.Builder.class)
public abstract static class PullRequest {
Loading