Package com.cloudbees.sdk.boot2

Source Code of com.cloudbees.sdk.boot2.RemoteRepositoryDecoratorImpl

package com.cloudbees.sdk.boot2;

import com.cloudbees.sdk.boot.Launcher;
import com.cloudbees.sdk.maven.RemoteRepositoryDecorator;
import org.sonatype.aether.repository.Authentication;
import org.sonatype.aether.repository.Proxy;
import org.sonatype.aether.repository.RemoteRepository;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* Honors the proxy setting in ~/.bees/bees.config
*
* <p>
* This duplicates the code in bees-driver somewhat, but it's necessary to avoid bringing in
* larger dependencies.
*
* @author Kohsuke Kawaguchi
*/
class RemoteRepositoryDecoratorImpl extends RemoteRepositoryDecorator {
    private Properties properties;

    private String proxyHost;
    private String proxyPort;
    private String proxyUser;
    private String proxyPass;

    private void loadBeesConfig() {
        if (properties!=null)   return; // already loaded

        properties = new Properties();

        File config = new File(Launcher.getLocalRepository(), "bees.config");
        if (!config.exists())   return; // nothing to load

        try {
            InputStream fis = new FileInputStream(config);
            try {
                properties.load(fis);
            } finally {
                fis.close();
            }

            proxyHost = properties.getProperty("proxy.host");
            proxyPort = properties.getProperty("proxy.port");
            proxyUser = properties.getProperty("proxy.user");
            proxyPass = properties.getProperty("proxy.password");
        } catch (IOException e) {
            LOGGER.log(Level.SEVERE, "Failed to load configurations from "+config);
        }
    }

    @Override
    public RemoteRepository decorate(RemoteRepository repo) {
        loadBeesConfig();

        if (proxyHost != null && proxyPort!=null) {
            String proxyType = Proxy.TYPE_HTTP;
            if (repo.getUrl().startsWith("https"))
                proxyType = Proxy.TYPE_HTTPS;
            Proxy proxy = new Proxy(proxyType, proxyHost, Integer.parseInt(proxyPort), null);
            if (proxyUser != null) {
                Authentication authentication = new Authentication(proxyUser, proxyPass);
                proxy.setAuthentication(authentication);
            }
            repo.setProxy(proxy);
        }

        return repo;
    }

    private static final Logger LOGGER = Logger.getLogger(RemoteRepositoryDecoratorImpl.class.getName());
}
TOP

Related Classes of com.cloudbees.sdk.boot2.RemoteRepositoryDecoratorImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.