package com.rtlabs.webhooks.api;

import jakarta.validation.constraints.Pattern;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1/webhooks/payments")
public class PaymentWebhookController {

  private final SignatureVerifier signatureVerifier;

  public PaymentWebhookController(SignatureVerifier signatureVerifier) {
    this.signatureVerifier = signatureVerifier;
  }

  @PostMapping
  public ResponseEntity<Void> receive(
      @RequestHeader("X-Signature")
      @Pattern(regexp = "^([A-Fa-f0-9]+:)+[A-Fa-f0-9]+$", message = "signature malformed")
      String signature,
      @RequestBody String payload) {
    signatureVerifier.verify(signature, payload);
    return ResponseEntity.ok().build();
  }
}
