From e2876fb23ef25551d76f40474fbec9f869caa693 Mon Sep 17 00:00:00 2001 From: richardgilmore Date: Sun, 26 Apr 2020 14:45:58 +0100 Subject: [PATCH] Allow authenticating via custom HTTP headers --- .../lmcoursier/CoursierConfiguration.scala | 2 ++ .../lmcoursier/definitions/Authentication.scala | 17 +++++++++++++++-- .../lmcoursier/definitions/ToCoursier.scala | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/CoursierConfiguration.scala b/modules/lm-coursier/src/main/scala/lmcoursier/CoursierConfiguration.scala index acfd65b8c..45ea1b886 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/CoursierConfiguration.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/CoursierConfiguration.scala @@ -75,6 +75,8 @@ import scala.concurrent.duration.Duration withStrict(Some(strict)) def withTtl(ttl: Duration): CoursierConfiguration = withTtl(Some(ttl)) + def addRepositoryAuthentication(repositoryId: String, authentication: Authentication): CoursierConfiguration = + withAuthenticationByRepositoryId(authenticationByRepositoryId :+ (repositoryId, authentication)) } object CoursierConfiguration { diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Authentication.scala b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Authentication.scala index 264b1ff5f..1a28fbb9d 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Authentication.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Authentication.scala @@ -1,15 +1,28 @@ package lmcoursier.definitions -import dataclass.data +import dataclass._ @data class Authentication( user: String, password: String, optional: Boolean = false, - realmOpt: Option[String] = None + realmOpt: Option[String] = None, + @since + headers: Seq[(String,String)] = Nil ) { override def toString(): String = withPassword("****") + .withHeaders( + headers.map { + case (k, v) => (k, "****") + } + ) .productIterator .mkString("Authentication(", ", ", ")") } + +object Authentication { + + def apply(headers: Seq[(String, String)]): Authentication = + Authentication("", "", optional = false, None, headers) +} diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala index 23a2222ab..57bdece37 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala @@ -27,6 +27,7 @@ object ToCoursier { coursier.core.Authentication(authentication.user, authentication.password) .withOptional(authentication.optional) .withRealmOpt(authentication.realmOpt) + .withHttpHeaders(authentication.headers) def module(module: Module): coursier.core.Module = coursier.core.Module(