Endpoint getConsumers written as a New Style Endpoint

This commit is contained in:
Marko Milić 2018-09-10 14:52:53 +02:00
parent fe4f6b2e84
commit 73fb7aefbe
12 changed files with 85 additions and 3 deletions

View File

@ -67,7 +67,8 @@ object NewStyle {
(nameOf(Implementations3_1_0.callsLimit), ApiVersion.v3_1_0.toString),
(nameOf(Implementations3_1_0.checkFundsAvailable), ApiVersion.v3_1_0.toString),
(nameOf(Implementations3_1_0.getConsumer), ApiVersion.v3_1_0.toString),
(nameOf(Implementations3_1_0.getConsumersForCurrentUser), ApiVersion.v3_1_0.toString)
(nameOf(Implementations3_1_0.getConsumersForCurrentUser), ApiVersion.v3_1_0.toString),
(nameOf(Implementations3_1_0.getConsumers), ApiVersion.v3_1_0.toString)
)

View File

@ -682,6 +682,46 @@ trait APIMethods310 {
}
resourceDocs += ResourceDoc(
getConsumers,
implementedInApiVersion,
"getConsumers",
"GET",
"/management/consumers",
"Get Consumers",
s"""Get the all Consumers.
|
|""",
emptyObjectJson,
consumersJson310,
List(
UserNotLoggedIn,
UserHasMissingRoles,
UnknownError
),
Catalogs(notCore, notPSD2, notOBWG),
List(apiTagConsumer, apiTagApi),
Some(List(canGetConsumers)))
lazy val getConsumers: OBPEndpoint = {
case "management" :: "consumers" :: Nil JsonGet _ => {
cc =>
for {
(Full(u), callContext) <- extractCallContext(UserNotLoggedIn, cc)
_ <- Helper.booleanToFuture(failMsg = UserHasMissingRoles + CanGetConsumers) {
hasEntitlement("", u.userId, ApiRole.canGetConsumers)
}
consumers <- Consumers.consumers.vend.getConsumersFuture()
users <- Users.users.vend.getUsersByUserIdsFuture(consumers.map(_.createdByUserId.get))
} yield {
(createConsumersJson(consumers, users), callContext.map(_.copy(httpCode = Some(200))))
}
}
}
}
}

View File

@ -213,4 +213,10 @@ object JSONFactory310{
consumers.map(createConsumerJSON(_, user))
}
def createConsumersJson(consumers: List[Consumer], users: List[User]): List[ConsumerJson] = {
consumers.map(
c => createConsumerJSON(c, users.filter(_.userId==c.createdByUserId.get).headOption)
)
}
}

View File

@ -191,7 +191,7 @@ object OBPAPI3_1_0 extends OBPRestHelper with APIMethods130 with APIMethods140 w
Implementations2_1_0.getRoles ::
Implementations2_1_0.getEntitlementsByBankAndUser ::
// Implementations2_1_0.getConsumer ::
Implementations2_1_0.getConsumers ::
// Implementations2_1_0.getConsumers ::
Implementations2_1_0.enableDisableConsumers ::
Implementations2_1_0.addCardForBank ::
// Implementations2_1_0.getUsers ::
@ -294,6 +294,7 @@ object OBPAPI3_1_0 extends OBPRestHelper with APIMethods130 with APIMethods140 w
Implementations3_1_0.checkFundsAvailable ::
Implementations3_1_0.getConsumer ::
Implementations3_1_0.getConsumersForCurrentUser ::
Implementations3_1_0.getConsumers ::
Nil
val allResourceDocs = Implementations3_1_0.resourceDocs ++

View File

@ -29,6 +29,7 @@ trait ConsumersProvider {
def getConsumerByConsumerKeyFuture(consumerKey: String): Future[Box[Consumer]]
def getConsumerByConsumerIdFuture(consumerId: String): Future[Box[Consumer]]
def getConsumersByUserIdFuture(userId: String): Future[List[Consumer]]
def getConsumersFuture(): Future[List[Consumer]]
def createConsumer(key: Option[String], secret: Option[String], isActive: Option[Boolean], name: Option[String], appType: Option[AppType], description: Option[String], developerEmail: Option[String], redirectURL: Option[String], createdByUserId: Option[String]): Box[Consumer]
def updateConsumer(id: Long, key: Option[String], secret: Option[String], isActive: Option[Boolean], name: Option[String], appType: Option[AppType], description: Option[String], developerEmail: Option[String], redirectURL: Option[String], createdByUserId: Option[String]): Box[Consumer]
def updateConsumerCallLimits(id: Long, perMinute: Option[String], perHour: Option[String], perDay: Option[String], perWeek: Option[String], perMonth: Option[String]): Future[Box[Consumer]]
@ -44,6 +45,7 @@ class RemotedataConsumersCaseClasses {
case class getConsumerByConsumerKeyFuture(consumerKey: String)
case class getConsumerByConsumerIdFuture(consumerId: String)
case class getConsumersByUserIdFuture(userId: String)
case class getConsumersFuture()
case class createConsumer(key: Option[String], secret: Option[String], isActive: Option[Boolean], name: Option[String], appType: Option[AppType], description: Option[String], developerEmail: Option[String], redirectURL: Option[String], createdByUserId: Option[String])
case class updateConsumer(id: Long, key: Option[String], secret: Option[String], isActive: Option[Boolean], name: Option[String], appType: Option[AppType], description: Option[String], developerEmail: Option[String], redirectURL: Option[String], createdByUserId: Option[String])
case class updateConsumerCallLimits(id: Long, perMinute: Option[String], perHour: Option[String], perDay: Option[String], perWeek: Option[String], perMonth: Option[String])

View File

@ -106,10 +106,17 @@ object MappedConsumersProvider extends ConsumersProvider {
def getConsumersByUserId(userId: String): List[Consumer] = {
Consumer.findAll(By(Consumer.createdByUserId, userId))
}
def getConsumersByUserIdFuture(userId: String): Future[List[Consumer]] = {
override def getConsumersByUserIdFuture(userId: String): Future[List[Consumer]] = {
Future(getConsumersByUserId(userId))
}
def getConsumers(): List[Consumer] = {
Consumer.findAll()
}
override def getConsumersFuture(): Future[List[Consumer]] = {
Future(getConsumers())
}
override def createConsumer(key: Option[String],
secret: Option[String],
isActive: Option[Boolean],

View File

@ -41,6 +41,9 @@ object RemotedataConsumers extends ObpActorInit with ConsumersProvider {
def getConsumersByUserIdFuture(id: String): Future[List[Consumer]] =
(actor ? cc.getConsumersByUserIdFuture(id)).mapTo[List[Consumer]]
def getConsumersFuture(): Future[List[Consumer]] =
(actor ? cc.getConsumersFuture()).mapTo[List[Consumer]]
def createConsumer(key: Option[String], secret: Option[String], isActive: Option[Boolean], name: Option[String], appType: Option[AppType], description: Option[String], developerEmail: Option[String], redirectURL: Option[String], createdByUserId: Option[String]): Box[Consumer] =
extractFutureToBox(actor ? cc.createConsumer(key, secret, isActive, name, appType, description, developerEmail, redirectURL, createdByUserId))

View File

@ -37,6 +37,10 @@ class RemotedataConsumersActor extends Actor with ObpActorHelper with MdcLoggabl
logger.debug("getConsumersByUserIdFuture(" + id +")")
sender ! (mapper.getConsumersByUserId(id))
case cc.getConsumersFuture() =>
logger.debug("getConsumersFuture()")
sender ! (mapper.getConsumers())
case cc.createConsumer(key: Option[String], secret: Option[String], isActive: Option[Boolean], name: Option[String], appType: Option[AppType], description: Option[String], developerEmail: Option[String], redirectURL: Option[String], createdByUserId: Option[String]) =>
logger.debug("createConsumer(" + "*****" + ", " + "*****" + ", " + isActive.getOrElse("None") + ", " + name.getOrElse("None") + ", " + appType.getOrElse("None") + ", " + description.getOrElse("None") + ", " + developerEmail.getOrElse("None") + ", " + redirectURL.getOrElse("None") + ", " + createdByUserId.getOrElse("None") + ")")
sender ! extractResult(mapper.createConsumer(key, secret, isActive, name, appType, description, developerEmail, redirectURL, createdByUserId))

View File

@ -42,6 +42,9 @@ object RemotedataUsers extends ObpActorInit with Users {
def getUserByUserIdFuture(userId : String) : Future[Box[User]] =
(actor ? cc.getUserByUserIdFuture(userId)).mapTo[Box[User]]
def getUsersByUserIdsFuture(userIds : List[String]) : Future[List[User]] =
(actor ? cc.getUsersByUserIdsFuture(userIds)).mapTo[List[User]]
def getUserByUserName(userName : String) : Box[ResourceUser] =
extractFutureToBox(actor ? cc.getUserByUserName(userName))

View File

@ -48,6 +48,11 @@ class RemotedataUsersActor extends Actor with ObpActorHelper with MdcLoggable {
logger.debug("getUserByUserIdFuture(" + userId +")")
sender ! (mapper.getUserByUserId(userId))
case cc.getUsersByUserIdsFuture(userIds: List[String]) =>
logger.debug("getUsersByUserIdsFuture(" + userIds +")")
sender ! extractResult(mapper.getUsersByUserIdsFuture(userIds))
case cc.getUserByUserName(userName: String) =>
logger.debug("getUserByUserName(" + userName +")")
sender ! extractResult(mapper.getUserByUserName(userName))

View File

@ -70,6 +70,14 @@ object LiftUsers extends Users with MdcLoggable{
}
}
def getUsersByUserIds(userIds : List[String]) : List[User] = {
ResourceUser.findAll(ByList(ResourceUser.userId_, userIds))
}
def getUsersByUserIdsFuture(userIds : List[String]) : Future[List[User]] = {
Future(getUsersByUserIds(userIds))
}
override def getUserByUserName(userName: String): Box[ResourceUser] = {
ResourceUser.find(By(ResourceUser.name_, userName))
}

View File

@ -39,6 +39,7 @@ trait Users {
//resourceuser has two ids: id(Long)and userid_(String), this method use userid_(String)
def getUserByUserId(userId : String) : Box[User]
def getUserByUserIdFuture(userId : String) : Future[Box[User]]
def getUsersByUserIdsFuture(userIds : List[String]) : Future[List[User]]
// find ResourceUser by Resourceuser user name
def getUserByUserName(userName: String) : Box[ResourceUser]
@ -71,6 +72,7 @@ class RemotedataUsersCaseClasses {
case class getOrCreateUserByProviderIdFuture(provider : String, idGivenByProvider : String)
case class getUserByUserId(userId : String)
case class getUserByUserIdFuture(userId : String)
case class getUsersByUserIdsFuture(userId : List[String])
case class getUserByUserName(userName : String)
case class getUserByUserNameFuture(userName : String)
case class getUserByEmail(email : String)