package org.jenkinsci.plugins.statusbadges;

import hudson.Extension;
import hudson.model.Job;
import hudson.model.UnprotectedRootAction;
import hudson.model.AbstractProject;
import java.io.IOException;

import org.kohsuke.stapler.HttpResponse;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;

import java.awt.FontFormatException;

/**
 * Exposes the build status badge via unprotected URL. http://localhost:8080/statusbadges-build/icon?job=[JOBNAME]
 */
@Extension
public class PublicBuildAction
    implements UnprotectedRootAction
{
    private final ImageResolver iconResolver;

    private final BuildStatus buildStatus;

    public PublicBuildAction()
    {
        iconResolver = new ImageResolver();
        buildStatus = new BuildStatus();
    }

    @Override
    public String getUrlName()
    {
        return "statusbadges-build";
    }

    @Override
    public String getIconFileName()
    {
        return null;
    }

    @Override
    public String getDisplayName()
    {
        return null;
    }

    public HttpResponse doIcon( StaplerRequest req, StaplerResponse rsp, @QueryParameter String job,
                                @QueryParameter String style )
        throws IOException, FontFormatException
    {
        Job<?, ?> project = buildStatus.getProject( job, req, rsp );
        return iconResolver.getBuildImage( project.getIconColor(), style );
    }

}