def getForkedProjectName()

in jenkins-pipeline-shared-libraries/vars/githubscm.groovy [428:455]


def getForkedProjectName(String group, String repository, String owner, String credentialsId = 'kie-ci1-token', int page = 1, int perPage = 100, replays = 3) {
    if (group == owner) {
        return repository
    }
    def result = null
    withCredentials([string(credentialsId: credentialsId, variable: 'OAUTHTOKEN')]) {
        def forkedProjects = null

        def curlResult = sh(returnStdout: true, script: "curl -H \"Authorization: token ${OAUTHTOKEN}\" 'https://api.github.com/repos/${group}/${repository}/forks?per_page=${perPage}&page=${page}'")?.trim()
        if (curlResult) {
            forkedProjects = readJSON text: curlResult
        }
        if (result == null && forkedProjects != null && forkedProjects.size() > 0) {
            try {
                def forkedProject = forkedProjects.find { it.owner.login == owner }
                result = forkedProject ? forkedProject.name : getForkedProjectName(group, repository, owner, credentialsId, ++page, perPage)
            } catch (MissingPropertyException e) {
                if (--replays <= 0) {
                    throw new Exception("Error getting forked project name for ${group}/${repository}/forks?per_page=${perPage}&page=${page}. Communication error, please relaunch job.")
                } else {
                    println("[ERROR] Getting forked project name for ${group}/${repository}/forks?per_page=${perPage}&page=${page}. Replaying... [${replays}]")
                    result = getForkedProjectName(group, repository, owner, credentialsId, page, perPage, replays)
                }
            }
        }
    }
    return result
}