From ed86bfb79bea44b8c3db42d2e341794f4caf1008 Mon Sep 17 00:00:00 2001 From: Ivan Porto Carrero Date: Tue, 16 Sep 2014 20:41:32 -0700 Subject: [PATCH 1/2] adds basic auth support --- .../swagger/codegen/BasicGenerator.scala | 26 +++++++++++-------- .../codegen/model/AuthorizationModels.scala | 1 + 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/main/scala/com/wordnik/swagger/codegen/BasicGenerator.scala b/src/main/scala/com/wordnik/swagger/codegen/BasicGenerator.scala index 38a84d862b3..3701f9634be 100644 --- a/src/main/scala/com/wordnik/swagger/codegen/BasicGenerator.scala +++ b/src/main/scala/com/wordnik/swagger/codegen/BasicGenerator.scala @@ -16,6 +16,8 @@ package com.wordnik.swagger.codegen +import java.util.Base64 + import com.wordnik.swagger.codegen._ import com.wordnik.swagger.codegen.util._ import com.wordnik.swagger.codegen.language.CodegenConfig @@ -187,18 +189,20 @@ abstract class BasicGenerator extends CodegenConfig with PathUtil { } def authenticate(apiKey: Option[String]): Option[ApiKeyValue] = { - Option(System.getProperty("header")) match { - case Some(e) => { - // this is ugly and will be replaced with proper arg parsing like in ScalaAsyncClientGenerator soon - val authInfo = e.split(":") - Some(ApiKeyValue(authInfo(0), "header", authInfo(1))) - } - case _ => { - apiKey.map{ key => - Some(ApiKeyValue("api_key", "query", key)) - }.getOrElse(None) - } + val headerAuth = sys.props.get("header") map { e => + // this is ugly and will be replaced with proper arg parsing like in ScalaAsyncClientGenerator soon + val authInfo = e.split(":") + ApiKeyValue(authInfo(0), "header", authInfo(1)) } + val basicAuth = sys.props.get("auth.basic") map { e => + val creds = if (e.contains(":")) Base64.getEncoder.encodeToString(e.getBytes) else e + ApiKeyValue("Authorization", "header", s"Basic $creds") + } + val apiKeyAuth = apiKey map { key => + ApiKeyValue("api_key", "query", key) + } + + headerAuth orElse basicAuth orElse apiKeyAuth } def extractApiOperations(apiListings: List[ApiListing], allModels: HashMap[String, Model] )(implicit basePath:String) = { diff --git a/src/main/scala/com/wordnik/swagger/codegen/model/AuthorizationModels.scala b/src/main/scala/com/wordnik/swagger/codegen/model/AuthorizationModels.scala index 2249557bcd7..9cc369d8239 100644 --- a/src/main/scala/com/wordnik/swagger/codegen/model/AuthorizationModels.scala +++ b/src/main/scala/com/wordnik/swagger/codegen/model/AuthorizationModels.scala @@ -44,3 +44,4 @@ case class AuthorizationCodeGrant( trait AuthorizationValue case class ApiKeyValue(keyName: String, passAs: String, value: String) extends AuthorizationValue + From 86d56b978a85bd98284c2a8413c247b8ab9f4d79 Mon Sep 17 00:00:00 2001 From: Ivan Porto Carrero Date: Tue, 16 Sep 2014 20:52:07 -0700 Subject: [PATCH 2/2] also work on java 7 --- build.sbt | 1 + project/build.properties | 2 +- .../scala/com/wordnik/swagger/codegen/BasicGenerator.scala | 5 ++--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build.sbt b/build.sbt index 49971a19594..bcc9df96b82 100644 --- a/build.sbt +++ b/build.sbt @@ -21,6 +21,7 @@ libraryDependencies ++= Seq( "org.json4s" %% "json4s-jackson" % "3.2.10", "io.backchat.inflector" %% "scala-inflector" % "1.3.5", "commons-io" % "commons-io" % "2.3", + "net.iharder" % "base64" % "2.3.8", "ch.qos.logback" % "logback-classic" % "1.0.13" % "provided", "org.rogach" %% "scallop" % "0.9.5", "junit" % "junit" % "4.11" % "test", diff --git a/project/build.properties b/project/build.properties index 8cbb5226c45..507528966aa 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=0.13.0 \ No newline at end of file +sbt.version=0.13.5 \ No newline at end of file diff --git a/src/main/scala/com/wordnik/swagger/codegen/BasicGenerator.scala b/src/main/scala/com/wordnik/swagger/codegen/BasicGenerator.scala index 3701f9634be..254fda3fb48 100644 --- a/src/main/scala/com/wordnik/swagger/codegen/BasicGenerator.scala +++ b/src/main/scala/com/wordnik/swagger/codegen/BasicGenerator.scala @@ -16,8 +16,6 @@ package com.wordnik.swagger.codegen -import java.util.Base64 - import com.wordnik.swagger.codegen._ import com.wordnik.swagger.codegen.util._ import com.wordnik.swagger.codegen.language.CodegenConfig @@ -30,6 +28,7 @@ import com.wordnik.swagger.util.ValidationException import java.io.{ File, FileWriter } +import net.iharder.Base64 import org.json4s.jackson.JsonMethods._ import org.json4s.jackson.Serialization.write @@ -195,7 +194,7 @@ abstract class BasicGenerator extends CodegenConfig with PathUtil { ApiKeyValue(authInfo(0), "header", authInfo(1)) } val basicAuth = sys.props.get("auth.basic") map { e => - val creds = if (e.contains(":")) Base64.getEncoder.encodeToString(e.getBytes) else e + val creds = if (e.contains(":")) Base64.encodeBytes(e.getBytes) else e ApiKeyValue("Authorization", "header", s"Basic $creds") } val apiKeyAuth = apiKey map { key =>