feat: add gitlab webhook http entrypoint

This commit is contained in:
2026-05-28 15:18:25 +08:00
parent d44f5f74fe
commit 8d24b6082d
2 changed files with 65 additions and 0 deletions
@@ -0,0 +1,20 @@
package com.onixbyte.deltaforceguide.controller;
import com.onixbyte.deltaforceguide.domain.dto.GitLabWebhookRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/webhook")
public class WebhookController {
private static final Logger log = LoggerFactory.getLogger(WebhookController.class);
@PostMapping("/gitlab")
public void gitlabWebhook(
@RequestBody GitLabWebhookRequest request
) {
log.info("request={}", request);
}
}
@@ -0,0 +1,45 @@
package com.onixbyte.deltaforceguide.domain.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import java.time.OffsetDateTime;
import java.util.List;
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
@JsonIgnoreProperties(ignoreUnknown = true)
public record GitLabWebhookRequest(
String objectKind,
String eventType,
GitLabWebhookObjectAttributes objectAttributes
) {
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
@JsonIgnoreProperties(ignoreUnknown = true)
public record GitLabWebhookLabel(
Long id,
String title,
@JsonProperty("color")
String colour,
Long projectId,
String createdAt,
String updatedAt,
Boolean template,
String description,
String type,
Long groupId
) {}
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
@JsonIgnoreProperties(ignoreUnknown = true)
public record GitLabWebhookObjectAttributes(
Long id,
String title,
String description,
List<GitLabWebhookLabel> labels
) {}
}