diff options
Diffstat (limited to 'src/main/java/com/gitblit/auth/github/GitHubOAuthConfig.java')
-rw-r--r-- | src/main/java/com/gitblit/auth/github/GitHubOAuthConfig.java | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/auth/github/GitHubOAuthConfig.java b/src/main/java/com/gitblit/auth/github/GitHubOAuthConfig.java new file mode 100644 index 00000000..1a2fb756 --- /dev/null +++ b/src/main/java/com/gitblit/auth/github/GitHubOAuthConfig.java @@ -0,0 +1,78 @@ +// 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); + } + } +} |