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

org.sourcelab.github.client.utils.UrlParser Maven / Gradle / Ivy

The newest version!
package org.sourcelab.github.client.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class UrlParser {
    private static final Pattern JOBS_URL_PATTERN =
        Pattern.compile(".*/repos/([^/]+)/([^/]+)/actions/runs/([0-9]+)/jobs");

    private static final Pattern JOBS_CANCEL_URL_PATTERN =
        Pattern.compile(".*/repos/([^/]+)/([^/]+)/actions/runs/([0-9]+)/cancel");

    private static final Pattern JOBS_RERUN_URL_PATTERN =
        Pattern.compile(".*/repos/([^/]+)/([^/]+)/actions/runs/([0-9]+)/rerun");

    /**
     * Parse from Jobs Url.
     */
    public static JobsUrlBits parseJobsUrl(final String jobsUrl) {
        final Matcher matcher = JOBS_URL_PATTERN.matcher(jobsUrl);
        boolean matchFound = matcher.find();
        if (!matchFound || matcher.groupCount() != 3) {
            return null;
        }
        return new JobsUrlBits(matcher.group(1), matcher.group(2), Long.parseLong(matcher.group(3)));
    }

    /**
     * Parse from Jobs Cancel Url.
     */
    public static JobsUrlBits parseJobsCancelUrl(final String cancelUrl) {
        final Matcher matcher = JOBS_CANCEL_URL_PATTERN.matcher(cancelUrl);
        boolean matchFound = matcher.find();
        if (!matchFound || matcher.groupCount() != 3) {
            return null;
        }
        return new JobsUrlBits(matcher.group(1), matcher.group(2), Long.parseLong(matcher.group(3)));
    }

    /**
     * Parse from Jobs ReRun Url.
     */
    public static JobsUrlBits parseJobsRerunUrl(final String rerunUrl) {
        final Matcher matcher = JOBS_RERUN_URL_PATTERN.matcher(rerunUrl);
        boolean matchFound = matcher.find();
        if (!matchFound || matcher.groupCount() != 3) {
            return null;
        }
        return new JobsUrlBits(matcher.group(1), matcher.group(2), Long.parseLong(matcher.group(3)));
    }

    public static class JobsUrlBits
    {
        private String owner;
        private String repo;
        private long runId;

        /**
         * Constructor.
         */
        public JobsUrlBits(final String owner, final String repo, final long runId) {
            this.owner = owner;
            this.repo = repo;
            this.runId = runId;
        }

        public String getOwner() {
            return owner;
        }

        public String getRepo() {
            return repo;
        }

        public long getRunId() {
            return runId;
        }

        @Override
        public String toString() {
            return "JobsUrlBits{"
                + "\n\towner='" + owner + '\''
                + "\n\trepo='" + repo + '\''
                + "\n\trunId=" + runId
                + "\n}";
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy