GHAutolinkBuilder.java

package org.kohsuke.github;

import java.io.IOException;

// TODO: Auto-generated Javadoc
/**
 * The type Gh autolink builder.
 *
 * @see GHRepository#createAutolink()
 * @see GHAutolink
 */
public class GHAutolinkBuilder {

    private final GHRepository repo;
    private final Requester req;
    private String keyPrefix;
    private String urlTemplate;
    private Boolean isAlphanumeric;

    /**
     * Instantiates a new Gh autolink builder.
     *
     * @param repo
     *            the repo
     */
    GHAutolinkBuilder(GHRepository repo) {
        this.repo = repo;
        req = repo.root().createRequest();
    }

    /**
     * With key prefix gh autolink builder.
     *
     * @param keyPrefix
     *            the key prefix
     * @return the gh autolink builder
     */
    public GHAutolinkBuilder withKeyPrefix(String keyPrefix) {
        this.keyPrefix = keyPrefix;
        return this;
    }

    /**
     * With url template gh autolink builder.
     *
     * @param urlTemplate
     *            the url template
     * @return the gh autolink builder
     */
    public GHAutolinkBuilder withUrlTemplate(String urlTemplate) {
        this.urlTemplate = urlTemplate;
        return this;
    }

    /**
     * With is alphanumeric gh autolink builder.
     *
     * @param isAlphanumeric
     *            the is alphanumeric
     * @return the gh autolink builder
     */
    public GHAutolinkBuilder withIsAlphanumeric(boolean isAlphanumeric) {
        this.isAlphanumeric = isAlphanumeric;
        return this;
    }

    private String getApiTail() {
        return String.format("/repos/%s/%s/autolinks", repo.getOwnerName(), repo.getName());
    }

    /**
     * Create gh autolink.
     *
     * @return the gh autolink
     * @throws IOException
     *             the io exception
     */
    public GHAutolink create() throws IOException {
        GHAutolink autolink = req.method("POST")
                .with("key_prefix", keyPrefix)
                .with("url_template", urlTemplate)
                .with("is_alphanumeric", isAlphanumeric)
                .withHeader("Accept", "application/vnd.github+json")
                .withUrlPath(getApiTail())
                .fetch(GHAutolink.class);

        return autolink.lateBind(repo);
    }

}