blob: 5a7daf94a9fd2c634a7b6de0ba258f622c2c7b4e [file] [log] [blame]
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* 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 org.jetbrains.plugins.github.extensions;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.AuthData;
import git4idea.remote.GitHttpAuthDataProvider;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.github.util.GithubAuthData;
import org.jetbrains.plugins.github.util.GithubSettings;
import org.jetbrains.plugins.github.util.GithubUrlUtil;
/**
* @author Kirill Likhodedov
*/
public class GithubHttpAuthDataProvider implements GitHttpAuthDataProvider {
@Nullable
@Override
public AuthData getAuthData(@NotNull String url) {
if (!GithubUrlUtil.isGithubUrl(url)) {
return null;
}
GithubSettings settings = GithubSettings.getInstance();
if (!settings.isValidGitAuth()) {
return null;
}
String host1 = GithubUrlUtil.getHostFromUrl(settings.getHost());
String host2 = GithubUrlUtil.getHostFromUrl(url);
if (!host1.equalsIgnoreCase(host2)) {
return null;
}
GithubAuthData auth = settings.getAuthData();
switch (auth.getAuthType()) {
case BASIC:
GithubAuthData.BasicAuth basicAuth = auth.getBasicAuth();
assert basicAuth != null;
if (StringUtil.isEmptyOrSpaces(basicAuth.getLogin()) || StringUtil.isEmptyOrSpaces(basicAuth.getPassword())) {
return null;
}
return new AuthData(basicAuth.getLogin(), basicAuth.getPassword());
case TOKEN:
GithubAuthData.TokenAuth tokenAuth = auth.getTokenAuth();
assert tokenAuth != null;
if (StringUtil.isEmptyOrSpaces(tokenAuth.getToken())) {
return null;
}
return new AuthData(tokenAuth.getToken(), "x-oauth-basic");
default:
return null;
}
}
@Override
public void forgetPassword(@NotNull String url) {
GithubSettings.getInstance().setValidGitAuth(false);
}
}