From ed86bfb79bea44b8c3db42d2e341794f4caf1008 Mon Sep 17 00:00:00 2001 From: Ivan Porto Carrero Date: Tue, 16 Sep 2014 20:41:32 -0700 Subject: [PATCH] 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 +