// Path: ostara-service/src/main/java/org/ostara/config/Config.java
// public class Config {
// 	private static Config m_instance = new Config();
// 	private String userName;
// 	private String password;
// 	private String organization;
// 	private String gitAPIUrl;
// 	private String migrationJarName;
// 	private String ostaraCmdMavenRepoUrl;
// 	
// 	public static Config getInstance() {
// 		return m_instance;
// 	}
// 	
// 	
// 	private Config() {	
// 	}
// 	
// 	
// 	public void load(InputStream in)
// 	{
// 		
// 		try {
// 			Properties prop = new Properties();
// 			if (in != null) {
// 				prop.load(in);
// 				userName=prop.getProperty("userName");
// 				password=prop.getProperty("password");
// 				organization=prop.getProperty("organization");
// 				gitAPIUrl=prop.getProperty("gitAPIUrl");
// 				ostaraCmdMavenRepoUrl=prop.getProperty("ostaraCmdMavenRepoUrl");
// 			} else {
// 				System.err.println("no config file found");
// 			}
// 
// 		} catch (IOException e) {
// 			
// 			e.printStackTrace();
// 		}
// 	
// //		System.out.println(config);
// 	}
// 
// 
// 	public String getUserName() {
// 		return userName;
// 	}
// 
// 
// 	public void setUserName(String userName) {
// 		this.userName = userName;
// 	}
// 
// 
// 	public String getPassword() {
// 		return password;
// 	}
// 
// 
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 
// 
// 	public String getOrganization() {
// 		return organization;
// 	}
// 
// 
// 	public void setOrganization(String organization) {
// 		this.organization = organization;
// 	}
// 
// 
// 	public String getGitAPIUrl() {
// 		return gitAPIUrl;
// 	}
// 	
// 	public String getGitAPIUserUrl() {
// 		return getGitAPIUrl() + "/user";
// 	}
// 
// 
// 	public void setGitAPIUrl(String gitAPIUrl) {
// 		this.gitAPIUrl = gitAPIUrl;
// 	}
// 
// 
// 	public void setMigrationJarName(String migrationJarName) {
// 		this.migrationJarName = migrationJarName;
// 	}
// 	
// 	public String getMigrationJarName() {
// 		return this.migrationJarName;
// 	}
// 
// 	public String getMigrationWorkdir() {
// 		return SystemUtils.JAVA_IO_TMPDIR + "/migration";
// 	}
// 
// 	public String getOstaraCmdMavenRepoUrl() {
// 		return ostaraCmdMavenRepoUrl;
// 	}
// 
// }
// 
// Path: ostara-service/src/main/java/org/ostara/service/git/auth/Auth.java
// public class Auth {
// 	private String _userName = null;
// 	private String _password = null;
// 	private String _gitOtp;
// 
// 	public Auth(String userName, String password, String gitOtp) {
// 		_userName = userName;
// 		_password = password;
// 		_gitOtp = gitOtp;
// 	}
// 	
// 	public Object authorize() {
// 		Map<String, String> userObj = ReadJsonFromUrlBasicAuth.read(Config.getInstance().getGitAPIUserUrl(), getBasicAuthToken(), _gitOtp);
// 		if(userObj == null){
// 			Map<String, String> unauthorized = new HashMap<String, String>();
// 			unauthorized.put("error", "401");
// 			
// 			return unauthorized; 
// 		} else
// 		if(userObj.containsKey(ReadJsonFromUrlBasicAuth.X_GIT_HUB_OTP_HEADER)) {
// 			Map<String, String> unauthorized = new HashMap<String, String>();
// 			unauthorized.put("error", "401");
// 			unauthorized.put(ReadJsonFromUrlBasicAuth.X_GIT_HUB_OTP_HEADER, String.valueOf(Boolean.TRUE));
// 			
// 			return unauthorized; 
// 		} else{
// 			AuthToken authToken = AuthToken.getinstance();
// 			String userAuthToken = authToken.generate(userObj);
// 			UserInfo userInfo = new UserInfo(userAuthToken,  userObj.get("login"), userObj.get("email"));
// 			userInfo.set_fullname(userObj.get("name"));
// 			userInfo.set_gravatar(userObj.get("avatar_url"));
// 			return userInfo;
// 			
// 		}
// 	}
// 
// 	private String getBasicAuthToken() {
// 		String encoding = (String.format("%s:%s", _userName, _password));
// 
// 		byte[] authEncBytes = Base64.encodeBase64(encoding.getBytes());
// 		return new String(authEncBytes);
// 	}
// }


import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.QueryParam;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import org.apache.commons.lang.StringUtils;
import org.ostara.config.Config;
import org.ostara.service.git.auth.Auth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * 
 */
package org.ostara.service;



/**
 * @author ramahadevan
 */


public class GitServiceImpl implements GitService {
	private static Logger logger = LoggerFactory.getLogger(GitServiceImpl.class);
	
   @Context
   private HttpServletRequest servletRequest;
	
	@Override
	public Object authenticate(String username) {
		try {
			String _pwd = servletRequest.getHeader("password");
			String _gitOtp = servletRequest.getHeader("gitOtp");
// Path: ostara-service/src/main/java/org/ostara/config/Config.java
// public class Config {
// 	private static Config m_instance = new Config();
// 	private String userName;
// 	private String password;
// 	private String organization;
// 	private String gitAPIUrl;
// 	private String migrationJarName;
// 	private String ostaraCmdMavenRepoUrl;
// 	
// 	public static Config getInstance() {
// 		return m_instance;
// 	}
// 	
// 	
// 	private Config() {	
// 	}
// 	
// 	
// 	public void load(InputStream in)
// 	{
// 		
// 		try {
// 			Properties prop = new Properties();
// 			if (in != null) {
// 				prop.load(in);
// 				userName=prop.getProperty("userName");
// 				password=prop.getProperty("password");
// 				organization=prop.getProperty("organization");
// 				gitAPIUrl=prop.getProperty("gitAPIUrl");
// 				ostaraCmdMavenRepoUrl=prop.getProperty("ostaraCmdMavenRepoUrl");
// 			} else {
// 				System.err.println("no config file found");
// 			}
// 
// 		} catch (IOException e) {
// 			
// 			e.printStackTrace();
// 		}
// 	
// //		System.out.println(config);
// 	}
// 
// 
// 	public String getUserName() {
// 		return userName;
// 	}
// 
// 
// 	public void setUserName(String userName) {
// 		this.userName = userName;
// 	}
// 
// 
// 	public String getPassword() {
// 		return password;
// 	}
// 
// 
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 
// 
// 	public String getOrganization() {
// 		return organization;
// 	}
// 
// 
// 	public void setOrganization(String organization) {
// 		this.organization = organization;
// 	}
// 
// 
// 	public String getGitAPIUrl() {
// 		return gitAPIUrl;
// 	}
// 	
// 	public String getGitAPIUserUrl() {
// 		return getGitAPIUrl() + "/user";
// 	}
// 
// 
// 	public void setGitAPIUrl(String gitAPIUrl) {
// 		this.gitAPIUrl = gitAPIUrl;
// 	}
// 
// 
// 	public void setMigrationJarName(String migrationJarName) {
// 		this.migrationJarName = migrationJarName;
// 	}
// 	
// 	public String getMigrationJarName() {
// 		return this.migrationJarName;
// 	}
// 
// 	public String getMigrationWorkdir() {
// 		return SystemUtils.JAVA_IO_TMPDIR + "/migration";
// 	}
// 
// 	public String getOstaraCmdMavenRepoUrl() {
// 		return ostaraCmdMavenRepoUrl;
// 	}
// 
// }
// 
// Path: ostara-service/src/main/java/org/ostara/service/git/auth/Auth.java
// public class Auth {
// 	private String _userName = null;
// 	private String _password = null;
// 	private String _gitOtp;
// 
// 	public Auth(String userName, String password, String gitOtp) {
// 		_userName = userName;
// 		_password = password;
// 		_gitOtp = gitOtp;
// 	}
// 	
// 	public Object authorize() {
// 		Map<String, String> userObj = ReadJsonFromUrlBasicAuth.read(Config.getInstance().getGitAPIUserUrl(), getBasicAuthToken(), _gitOtp);
// 		if(userObj == null){
// 			Map<String, String> unauthorized = new HashMap<String, String>();
// 			unauthorized.put("error", "401");
// 			
// 			return unauthorized; 
// 		} else
// 		if(userObj.containsKey(ReadJsonFromUrlBasicAuth.X_GIT_HUB_OTP_HEADER)) {
// 			Map<String, String> unauthorized = new HashMap<String, String>();
// 			unauthorized.put("error", "401");
// 			unauthorized.put(ReadJsonFromUrlBasicAuth.X_GIT_HUB_OTP_HEADER, String.valueOf(Boolean.TRUE));
// 			
// 			return unauthorized; 
// 		} else{
// 			AuthToken authToken = AuthToken.getinstance();
// 			String userAuthToken = authToken.generate(userObj);
// 			UserInfo userInfo = new UserInfo(userAuthToken,  userObj.get("login"), userObj.get("email"));
// 			userInfo.set_fullname(userObj.get("name"));
// 			userInfo.set_gravatar(userObj.get("avatar_url"));
// 			return userInfo;
// 			
// 		}
// 	}
// 
// 	private String getBasicAuthToken() {
// 		String encoding = (String.format("%s:%s", _userName, _password));
// 
// 		byte[] authEncBytes = Base64.encodeBase64(encoding.getBytes());
// 		return new String(authEncBytes);
// 	}
// }


// Path: ostara-service/src/main/java/org/ostara/service/GitServiceImpl.java
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.QueryParam;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import org.apache.commons.lang.StringUtils;
import org.ostara.config.Config;
import org.ostara.service.git.auth.Auth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 
 */
package org.ostara.service;



/**
 * @author ramahadevan
 */


public class GitServiceImpl implements GitService {
	private static Logger logger = LoggerFactory.getLogger(GitServiceImpl.class);
	
   @Context
   private HttpServletRequest servletRequest;
	
	@Override
	public Object authenticate(String username) {
		try {
			String _pwd = servletRequest.getHeader("password");
			String _gitOtp = servletRequest.getHeader("gitOtp");
			Auth auth = new Auth(username, _pwd, _gitOtp);