All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kohsuke.github.GHAppCreateTokenBuilder Maven / Gradle / Ivy

The newest version!
package org.kohsuke.github;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

// TODO: Auto-generated Javadoc
/**
 * Creates a access token for a GitHub App Installation.
 *
 * @author Paulo Miguel Almeida
 * @see GHAppInstallation#createToken(Map) GHAppInstallation#createToken(Map)
 * @see GHAppInstallation#createToken() GHAppInstallation#createToken()
 */
public class GHAppCreateTokenBuilder extends GitHubInteractiveObject {

    /** The builder. */
    protected final Requester builder;
    private final String apiUrlTail;

    /**
     * Instantiates a new GH app create token builder.
     *
     * @param root
     *            the root
     * @param apiUrlTail
     *            the api url tail
     */
    @BetaApi
    GHAppCreateTokenBuilder(GitHub root, String apiUrlTail) {
        super(root);
        this.apiUrlTail = apiUrlTail;
        this.builder = root.createRequest();
    }

    /**
     * Instantiates a new GH app create token builder.
     *
     * @param root
     *            the root
     * @param apiUrlTail
     *            the api url tail
     * @param permissions
     *            the permissions
     */
    @BetaApi
    GHAppCreateTokenBuilder(GitHub root, String apiUrlTail, Map permissions) {
        this(root, apiUrlTail);
        permissions(permissions);
    }

    /**
     * By default the installation token has access to all repositories that the installation can access. To restrict
     * the access to specific repositories, you can provide the repository_ids when creating the token. When you omit
     * repository_ids, the response does not contain neither the repositories nor the permissions key.
     *
     * @param repositoryIds
     *            Array containing the repositories Ids
     * @return a GHAppCreateTokenBuilder
     */
    @BetaApi
    public GHAppCreateTokenBuilder repositoryIds(List repositoryIds) {
        this.builder.with("repository_ids", repositoryIds);
        return this;
    }

    /**
     * By default the installation token has access to all repositories that the installation can access. To restrict
     * the access to specific repositories, you can provide repository names when creating the token.
     *
     * @param repositories
     *            Array containing the repository names
     * @return a GHAppCreateTokenBuilder
     */
    @BetaApi
    public GHAppCreateTokenBuilder repositories(List repositories) {
        this.builder.with("repositories", repositories);
        return this;
    }

    /**
     * Set the permissions granted to the access token. The permissions object includes the permission names and their
     * access type.
     *
     * @param permissions
     *            Map containing the permission names and types.
     * @return a GHAppCreateTokenBuilder
     */
    @BetaApi
    public GHAppCreateTokenBuilder permissions(Map permissions) {
        Map retMap = new HashMap<>();
        for (Map.Entry entry : permissions.entrySet()) {
            retMap.put(entry.getKey(), GitHubRequest.transformEnum(entry.getValue()));
        }
        builder.with("permissions", retMap);
        return this;
    }

    /**
     * Creates an app token with all the parameters.
     * 

* You must use a JWT to access this endpoint. * * @return a GHAppInstallationToken * @throws IOException * on error */ public GHAppInstallationToken create() throws IOException { return builder.method("POST").withUrlPath(apiUrlTail).fetch(GHAppInstallationToken.class); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy