| /******************************************************************************* |
| * Copyright (c) 2011 Red Hat and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * David Green <david.green@tasktop.com> - initial contribution |
| * Christian Trutz <christian.trutz@gmail.com> - initial contribution |
| * Chris Aniszczyk <caniszczyk@gmail.com> - initial contribution |
| *******************************************************************************/ |
| package org.eclipse.mylyn.internal.github.core; |
| |
| import java.io.IOException; |
| import java.util.regex.Pattern; |
| |
| import org.eclipse.core.runtime.ILog; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.egit.github.core.RepositoryId; |
| import org.eclipse.egit.github.core.client.GitHubClient; |
| import org.eclipse.egit.github.core.client.RequestException; |
| import org.eclipse.mylyn.commons.net.AuthenticationCredentials; |
| import org.eclipse.mylyn.commons.net.AuthenticationType; |
| import org.eclipse.mylyn.tasks.core.TaskRepository; |
| |
| /** |
| * GitHub class |
| */ |
| public class GitHub { |
| |
| /** BUNDLE_ID */ |
| public static final String BUNDLE_ID = "org.eclipse.mylyn.github.core"; //$NON-NLS-1$ |
| |
| /** CONNECTOR_KIND */ |
| public static final String CONNECTOR_KIND = "github"; //$NON-NLS-1$ |
| |
| /** HTTP_WWW_GITHUB_ORG */ |
| public static final String HTTP_WWW_GITHUB_ORG = "http://www.github.org"; //$NON-NLS-1$ |
| |
| /** HTTP_GITHUB_COM */ |
| public static final String HTTP_GITHUB_COM = "http://github.com"; //$NON-NLS-1$ |
| |
| /** URL_PATTERN */ |
| public static final Pattern URL_PATTERN = Pattern.compile("(?:" //$NON-NLS-1$ |
| + Pattern.quote(HTTP_WWW_GITHUB_ORG) + "|" //$NON-NLS-1$ |
| + Pattern.quote(HTTP_GITHUB_COM) + ")/([^/]+)/([^/]+)"); //$NON-NLS-1$ |
| |
| /** USER_AGENT */ |
| public static final String USER_AGENT = "GitHubEclipse/1.3.0"; //$NON-NLS-1$ |
| |
| /** REPOSITORY_SEGMENTS */ |
| public static final String REPOSITORY_SEGMENTS = "/user/repository"; //$NON-NLS-1$ |
| |
| /** |
| * Configure client with standard configuration |
| * |
| * @param client |
| * @return given client |
| */ |
| public static GitHubClient configureClient(GitHubClient client) { |
| return client.setUserAgent(USER_AGENT); |
| } |
| |
| /** |
| * Set credentials on client from task repository |
| * |
| * @param client |
| * @param repository |
| * @return specified client |
| */ |
| public static GitHubClient addCredentials(GitHubClient client, |
| TaskRepository repository) { |
| AuthenticationCredentials credentials = repository |
| .getCredentials(AuthenticationType.REPOSITORY); |
| if (credentials != null) |
| client.setCredentials(credentials.getUserName(), |
| credentials.getPassword()); |
| return client; |
| } |
| |
| /** |
| * Create status of severity with message |
| * |
| * @param severity |
| * @param message |
| * @return status |
| */ |
| public static IStatus createStatus(int severity, String message) { |
| return new Status(severity, BUNDLE_ID, message); |
| } |
| |
| /** |
| * Create status of severity with message and throwable |
| * |
| * @param severity |
| * @param message |
| * @param e |
| * @return status |
| */ |
| public static IStatus createStatus(int severity, String message, Throwable e) { |
| return new Status(severity, BUNDLE_ID, message, e); |
| } |
| |
| /** |
| * Create error status from message |
| * |
| * @param message |
| * @return status |
| */ |
| public static IStatus createErrorStatus(String message) { |
| return createStatus(IStatus.ERROR, message); |
| } |
| |
| /** |
| * Create error status from message and throwable |
| * |
| * @param message |
| * @param t |
| * @return status |
| */ |
| public static IStatus createErrorStatus(String message, Throwable t) { |
| return createStatus(IStatus.ERROR, message, t); |
| } |
| |
| /** |
| * Create error status from throwable |
| * |
| * @param e |
| * @return status |
| */ |
| public static IStatus createErrorStatus(Throwable e) { |
| return createStatus(IStatus.ERROR, |
| "Unexpected error: " + e.getLocalizedMessage(), e); //$NON-NLS-1$ |
| } |
| |
| /** |
| * Create error status from {@link IOException} that wraps it in a |
| * {@link GitHubException} if it is a {@link RequestException} |
| * |
| * @param e |
| * @return status |
| */ |
| public static IStatus createWrappedStatus(IOException e) { |
| return createErrorStatus(GitHubException.wrap(e)); |
| } |
| |
| /** |
| * Get log |
| * |
| * @return log |
| */ |
| public static ILog getLog() { |
| return Platform.getLog(Platform.getBundle(BUNDLE_ID)); |
| } |
| |
| /** |
| * Log message and throwable as error status |
| * |
| * @param message |
| * @param t |
| */ |
| public static void logError(String message, Throwable t) { |
| getLog().log(createErrorStatus(message, t)); |
| } |
| |
| /** |
| * Log throwable as error status |
| * |
| * @param t |
| */ |
| public static void logError(Throwable t) { |
| getLog().log(createErrorStatus(t.getMessage(), t)); |
| } |
| |
| /** |
| * Get repository for url |
| * |
| * @param repositoryUrl |
| * @return repository or null if not present in url |
| */ |
| public static RepositoryId getRepository(String repositoryUrl) { |
| return RepositoryId.createFromUrl(repositoryUrl); |
| } |
| |
| /** |
| * Create url with github.com host |
| * |
| * @param user |
| * @param project |
| * @return url |
| * |
| * @see #createGitHubUrlAlternate(String, String) |
| */ |
| public static String createGitHubUrl(String user, String project) { |
| return HTTP_GITHUB_COM + '/' + user + '/' + project; |
| } |
| |
| /** |
| * Create url with github.org host |
| * |
| * @param user |
| * @param project |
| * @return url |
| * |
| * @see #createGitHubUrl(String, String) |
| */ |
| public static String createGitHubUrlAlternate(String user, String project) { |
| return HTTP_WWW_GITHUB_ORG + '/' + user + '/' + project; |
| } |
| } |