// Copyright (C) 2013 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.gitblit.auth.github; import java.net.MalformedURLException; import java.net.URL; import com.gitblit.IStoredSettings; import com.google.common.base.CharMatcher; import com.google.inject.Inject; import com.google.inject.Singleton; @Singleton class GitHubOAuthConfig { private static final String GITHUB_URL = "https://github.com"; private static final String GITHUB_API_URL = "https://api.github.com"; protected static final String CONF_SECTION = "github"; private static final String GITHUB_OAUTH_AUTHORIZE = "/login/oauth/authorize"; public static final String GITHUB_OAUTH_ACCESS_TOKEN = "/login/oauth/access_token"; private static final String GITHUB_GET_USER = "/user"; //private static final String GITHUB_OAUTH_FINAL = "/oauth"; static final String GITHUB_LOGIN = "/login"; private final String gitHubUrl; private final String gitHubApiUrl; final String gitHubUserUrl; final String gitHubClientId; final String gitHubClientSecret; final String httpHeader; final String gitHubOAuthUrl; final String oAuthFinalRedirectUrl; final String gitHubOAuthAccessTokenUrl; final boolean autoLogin; @Inject GitHubOAuthConfig(IStoredSettings settings) throws MalformedURLException { httpHeader = settings.getString("httpHeader", "GITHUB_USER"); gitHubUrl = GITHUB_URL; gitHubApiUrl = GITHUB_API_URL; gitHubClientId = settings.getString("clientId", "4711"); gitHubClientSecret = settings.getString("clientSecret", "4712"); gitHubOAuthUrl = getUrl(gitHubUrl, GITHUB_OAUTH_AUTHORIZE); gitHubOAuthAccessTokenUrl = getUrl(gitHubUrl, GITHUB_OAUTH_ACCESS_TOKEN); gitHubUserUrl = getUrl(gitHubApiUrl, GITHUB_GET_USER); oAuthFinalRedirectUrl = settings.getString("canonicalWebUrl", "http://locahost:8080"); autoLogin = false; } private static String trimTrailingSlash(String url) { return CharMatcher.is('/').trimTrailingFrom(url); } private String getUrl(String baseUrl, String path) throws MalformedURLException { if (baseUrl.indexOf("://") > 0) { return new URL(new URL(baseUrl), path).toExternalForm(); } else { return baseUrl + trimTrailingSlash(baseUrl) + "/" + CharMatcher.is('/').trimLeadingFrom(path); } } }