Skip to content

Commit

Permalink
Adding Salesforce credential. (#330)
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelbranco80 authored Jan 17, 2024
1 parent d436d5f commit e648302
Show file tree
Hide file tree
Showing 7 changed files with 151 additions and 1 deletion.
4 changes: 4 additions & 0 deletions hard-rebuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ cd ../sql-client
rm -rf target/
sbt clean publishLocal

cd ../snapi-parser
rm -rf target/
sbt clean publishLocal

cd ../snapi-frontend
rm -rf target/
sbt clean publishLocal
Expand Down
11 changes: 11 additions & 0 deletions snapi-frontend/src/main/scala/raw/creds/api/Credentials.scala
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,17 @@ final case class SnowflakeCredential(
val port = None
}

final case class SalesforceCredential(
url: String,
username: String,
password: String,
securityToken: String,
clientId: String,
apiVersion: String,
customObjects: Seq[String],
options: Map[String, String]
) extends Credential

final case class Secret(name: String, value: String) extends Credential

// Http credentials
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,23 @@ trait CredentialsService extends RawService {

def unregisterDropboxToken(user: AuthenticatedUser): Boolean

/** Salesforce */

def registerSalesforceCredential(
user: AuthenticatedUser,
name: String,
salesforceCredential: SalesforceCredential
): Boolean

def getSalesforceCredential(user: AuthenticatedUser, name: String): Option[SalesforceCredential]

def existsSalesforceCredential(user: AuthenticatedUser, name: String): Boolean =
getSalesforceCredential(user, name).isDefined

def listSalesforceCredentials(user: AuthenticatedUser): List[String]

def unregisterSalesforceCredential(user: AuthenticatedUser, name: String): Boolean

/** Http Credentials */

protected def validateNewHttpCredentialName(name: String) = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,57 @@ class ClientCredentials(serverAddress: URI)(implicit settings: RawSettings) exte
}
}

/** Salesforce */

def registerSalesforceCredential(
user: AuthenticatedUser,
name: String,
salesforceCredential: SalesforceCredential
): Boolean = {
try {
restClient.doJsonPostWithEmptyResponse(
"2/salesforce/register",
RegisterSalesforceCredential(user, name, salesforceCredential),
withAuth = false
)
true
} catch {
case ex: ClientAPIException if ex.errorCode == "salesforceCredentialAlreadyExists" => false
}
}

def getSalesforceCredential(user: AuthenticatedUser, name: String): Option[SalesforceCredential] = {
try {
Some(
restClient
.doJsonPost[SalesforceCredential]("2/salesforce/get", GetSalesforceCredential(user, name), withAuth = false)
)
} catch {
case ex: ClientAPIException if ex.errorCode == "salesforceCredentialNotFound" => None
}
}

def existsSalesforceCredential(user: AuthenticatedUser, name: String): Boolean =
getSalesforceCredential(user, name).isDefined

def listSalesforceCredentials(user: AuthenticatedUser): List[String] = {
restClient.doJsonPost[List[String]]("2/salesforce/list", ListSalesforceCredentials(user), withAuth = false)
}

def unregisterSalesforceCredential(user: AuthenticatedUser, name: String): Boolean = {
try {
restClient.doJsonPostWithEmptyResponse(
"2/salesforce/unregister",
UnregisterSalesforceCredential(user, name),
HttpStatus.SC_NO_CONTENT,
withAuth = false
)
true
} catch {
case ex: ClientAPIException if ex.errorCode == "salesforceCredentialNotFound" => false
}
}

/** HTTP Credentials */

def listHttpCredentials(user: AuthenticatedUser): List[HttpCredentialId] = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,43 @@ class ClientCredentialsService(implicit settings: RawSettings) extends Credentia
}
}

/** Named Dropbox Tokens * */
/** Salesforce */

override def registerSalesforceCredential(
user: AuthenticatedUser,
name: String,
salesforceCredential: SalesforceCredential
): Boolean = {
try {
client.registerSalesforceCredential(user, name, salesforceCredential)
} catch {
case ex: APIException => throw new ClientCredentialsException(ex.getMessage, ex)
}
}

override def getSalesforceCredential(user: AuthenticatedUser, name: String): Option[SalesforceCredential] = {
try {
client.getSalesforceCredential(user, name)
} catch {
case ex: APIException => throw new ClientCredentialsException(ex.getMessage, ex)
}
}

override def listSalesforceCredentials(user: AuthenticatedUser): List[String] = {
try {
client.listSalesforceCredentials(user)
} catch {
case ex: APIException => throw new ClientCredentialsException(ex.getMessage, ex)
}
}

override def unregisterSalesforceCredential(user: AuthenticatedUser, name: String): Boolean = {
try {
client.unregisterSalesforceCredential(user, name)
} catch {
case ex: APIException => throw new ClientCredentialsException(ex.getMessage, ex)
}
}

/** Http Credentials */

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,26 @@ class LocalCredentialsService extends CredentialsService {
false
}

override def registerSalesforceCredential(
user: AuthenticatedUser,
name: String,
salesforceCredential: SalesforceCredential
): Boolean = {
false
}

override def getSalesforceCredential(user: AuthenticatedUser, name: String): Option[SalesforceCredential] = {
None
}

override def listSalesforceCredentials(user: AuthenticatedUser): List[String] = {
List.empty
}

override def unregisterSalesforceCredential(user: AuthenticatedUser, name: String): Boolean = {
false
}

override protected def doRegisterNewHttpCredential(
user: AuthenticatedUser,
name: String,
Expand Down Expand Up @@ -123,4 +143,5 @@ class LocalCredentialsService extends CredentialsService {
}

override def doStop(): Unit = {}

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,16 @@ final case class RegisterDropboxCredential(user: AuthenticatedUser, token: Dropb
final case class GetDropboxCredential(user: AuthenticatedUser)
final case class UnregisterDropboxCredential(user: AuthenticatedUser)

final case class RegisterSalesforceCredential(
user: AuthenticatedUser,
name: String,
salesforceCredential: SalesforceCredential
)
final case class GetSalesforceCredential(user: AuthenticatedUser, name: String)
final case class ListSalesforceCredentials(user: AuthenticatedUser)

final case class UnregisterSalesforceCredential(user: AuthenticatedUser, name: String)

final case class RegisterHttpCredential(user: AuthenticatedUser, credential: HttpCredential)
final case class ListHttpCredentials(user: AuthenticatedUser)
final case class GetHttpCredential(user: AuthenticatedUser, name: String)
Expand Down

0 comments on commit e648302

Please sign in to comment.