001package io.prometheus.client.exporter; 002 003import java.io.IOException; 004import java.io.UnsupportedEncodingException; 005import java.net.HttpURLConnection; 006 007public class BasicAuthHttpConnectionFactory implements HttpConnectionFactory { 008 private final HttpConnectionFactory originConnectionFactory; 009 private final String basicAuthHeader; 010 011 public BasicAuthHttpConnectionFactory(HttpConnectionFactory connectionFactory, String user, String password) { 012 this.originConnectionFactory = connectionFactory; 013 this.basicAuthHeader = encode(user, password); 014 } 015 016 public BasicAuthHttpConnectionFactory(String user, String password) { 017 this(new DefaultHttpConnectionFactory(), user, password); 018 } 019 020 @Override 021 public HttpURLConnection create(String url) throws IOException { 022 HttpURLConnection connection = originConnectionFactory.create(url); 023 connection.setRequestProperty("Authorization", basicAuthHeader); 024 return connection; 025 } 026 027 private String encode(String user, String password) { 028 try { 029 byte[] credentialsBytes = (user + ":" + password).getBytes("UTF-8"); 030 String encoded = Base64.encodeToString(credentialsBytes); 031 return String.format("Basic %s", encoded); 032 } catch (UnsupportedEncodingException e) { 033 throw new IllegalArgumentException(e); 034 } 035 } 036}