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(