WebHook.java

package io.featureprobe.api.hook;

import io.featureprobe.api.base.hook.ICallback;
import io.featureprobe.api.base.hook.IHookRule;
import io.featureprobe.api.base.model.CallbackResult;
import io.featureprobe.api.base.model.HookContext;
import io.featureprobe.api.event.WebHookPostEvent;
import lombok.Data;
import org.springframework.context.ApplicationEventPublisher;

@Data
public class WebHook {

    private Long organizationId;

    private String name;

    private ICallback hook;

    private IHookRule rule;

    private String url;

    private String secretKey;

    public void callback(HookContext hookContext, ApplicationEventPublisher eventPublisher) {
        if (rule.isHid(hookContext)) {
            CallbackResult result = hook.callback(hookContext, url, secretKey);
            WebHookPostEvent postEvent = new WebHookPostEvent(organizationId, name, result, this);
            eventPublisher.publishEvent(postEvent);
        }
    }

}