From 64ccd14614182c517995a88b888f0d7b7212f668 Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Mon, 6 Mar 2017 20:07:57 -0500 Subject: support publishing to basic-auth protected maven repositories --- stage1/Stage1Lib.scala | 14 +++++++++++--- stage1/cbt.scala | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'stage1') diff --git a/stage1/Stage1Lib.scala b/stage1/Stage1Lib.scala index 87d3a79..91e63f1 100644 --- a/stage1/Stage1Lib.scala +++ b/stage1/Stage1Lib.scala @@ -56,18 +56,26 @@ class Stage1Lib( logger: Logger ) extends BaseLib{ def write(file: File, content: String, options: OpenOption*): File = Stage0Lib.write(file, content, options:_*) + def addHttpCredentials( connection: HttpURLConnection, credentials: String ): Unit = { + val encoding = new sun.misc.BASE64Encoder().encode(credentials.getBytes) + connection.setRequestProperty("Authorization", "Basic " ++ encoding) + } + def download(url: URL, target: File, sha1: Option[String], replace: Boolean = false): Boolean = { if( target.exists && !replace ){ - logger.resolver(green("found ") ++ url.string) + logger.resolver(green("found ") ++ url.show) true } else { val incomplete = ( target ++ ".incomplete" ).toPath; val connection = Stage0Lib.openConnectionConsideringProxy(url) + Option(url.getUserInfo).filter(_ != "").foreach( + addHttpCredentials(connection,_) + ) if(connection.getResponseCode != HttpURLConnection.HTTP_OK){ - logger.resolver(blue("not found: ") ++ url.string) + logger.resolver(blue("not found: ") ++ url.show) false } else { - System.err.println(blue("downloading ") ++ url.string) + System.err.println(blue("downloading ") ++ url.show) logger.resolver(blue("to ") ++ target.string) target.getParentFile.mkdirs val stream = connection.getInputStream diff --git a/stage1/cbt.scala b/stage1/cbt.scala index d28789c..0305dd2 100644 --- a/stage1/cbt.scala +++ b/stage1/cbt.scala @@ -65,7 +65,7 @@ object `package`{ } implicit class URLExtensionMethods( url: URL ){ def ++( s: String ): URL = new URL( url.toString ++ s ) - def string = url.toString + def show = "/[^/@]+@".r.replaceFirstIn( url.toString, "/" ) // remove credentials when showing url for security reasons } implicit class SeqExtensions[T](seq: Seq[T]){ def maxOption(implicit ev: Ordering[T]): Option[T] = try{ Some(seq.max) } catch { -- cgit v1.2.3