package com.airbnb.chancery; import com.airbnb.chancery.github.GithubClient; import com.airbnb.chancery.model.CallbackPayload; import com.airbnb.chancery.model.Repository; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import javax.validation.constraints.NotNull; @Slf4j public class RefLogger extends FilteringSubscriber { private final PayloadExpressionEvaluator refTemplate; private final GithubClient ghClient; public RefLogger(RefLoggerConfig config, GithubClient ghClient) { super(config.getRefFilter()); this.ghClient = ghClient; refTemplate = new PayloadExpressionEvaluator(config.getRefTemplate()); } @Override Logger getLogger() { return log; } @Override protected void handleCallback(@NotNull CallbackPayload callbackPayload) throws Exception { if (callbackPayload.isDeleted()) return; final String ref = refTemplate.evaluateForPayload(callbackPayload); final Repository repo = callbackPayload.getRepository(); final String hash = callbackPayload.getAfter(); final String owner = repo.getOwner().getName(); final String repoName = repo.getName(); log.info("Creating ref {} to {} in {}/{}", ref, hash, owner, repoName); ghClient.createReference(owner, repoName, ref, hash); log.info("Created ref {} to {} in {}/{}", ref, hash, owner, repoName); } }