Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions obp-api/src/main/resources/props/sample.props.template
Original file line number Diff line number Diff line change
Expand Up @@ -847,6 +847,13 @@ featured_apis=elasticSearchWarehouseV300
# redis_port=6379
# In case isn't defined default value is root
# rate_limiting.exclude_endpoints=root
## Default rate limiting for a new consumer
# rate_limiting_per_second = -1
# rate_limiting_per_minute = -1
# rate_limiting_per_hour = -1
# rate_limiting_per_day = -1
# rate_limiting_per_week = -1
# rate_limiting_per_month = -1
# -----------------------------------------------------

# -- Migration Scripts ----------------------------
Expand Down
7 changes: 7 additions & 0 deletions obp-api/src/main/scala/code/api/util/APIUtil.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3309,6 +3309,13 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
val reqHeaders = result._2.map(_.requestHeaders).getOrElse(Nil)
// Berlin Group checks
BerlinGroupCheck.validate(body, verb, url, reqHeaders, result)
} map {
result =>
val excludeFunctions = getPropsValue("rate_limiting.exclude_endpoints", "root").split(",").toList
cc.resourceDocument.map(_.partialFunctionName) match {
case Some(functionName) if excludeFunctions.exists(_ == functionName) => result
case _ => RateLimitingUtil.underCallLimits(result)
}
} map { result =>
result._1 match {
case Empty if result._2.flatMap(_.consumer).isDefined => // There is no error and Consumer is defined
Expand Down
6 changes: 6 additions & 0 deletions obp-api/src/main/scala/code/api/util/Glossary.scala
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,12 @@ object Glossary extends MdcLoggable {
|"""
)

glossaryItems += GlossaryItem(
title = "Roles of Open Bank Project",
description =
s"""<ol>${ApiRole.availableRoles.sorted.map(i => "<li>" + i + "</li>").mkString}</ol>""".stripMargin
)




Expand Down
12 changes: 6 additions & 6 deletions obp-api/src/main/scala/code/model/OAuth.scala
Original file line number Diff line number Diff line change
Expand Up @@ -582,22 +582,22 @@ class Consumer extends LongKeyedMapper[Consumer] with CreatedUpdated{
object createdByUserId extends MappedString(this, 36)

object perSecondCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue: Long = APIUtil.getPropsAsLongValue("rate_limiting_per_second", -1)
}
object perMinuteCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue: Long = APIUtil.getPropsAsLongValue("rate_limiting_per_minute", -1)
}
object perHourCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue: Long = APIUtil.getPropsAsLongValue("rate_limiting_per_hour", -1)
}
object perDayCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue: Long = APIUtil.getPropsAsLongValue("rate_limiting_per_day", -1)
}
object perWeekCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue : Long = APIUtil.getPropsAsLongValue("rate_limiting_per_week", -1)
}
object perMonthCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue : Long = APIUtil.getPropsAsLongValue("rate_limiting_per_month", -1)
}
object clientCertificate extends MappedString(this, 4000)
object company extends MappedString(this, 100) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package code.ratelimiting

import java.util.Date
import code.api.util.APIUtil

import java.util.Date
import code.util.{MappedUUID, UUIDString}
import net.liftweb.common.{Box, Full}
import net.liftweb.mapper._
import net.liftweb.util.Helpers.tryo

import com.openbankproject.commons.ExecutionContext.Implicits.global

import scala.concurrent.Future

object MappedRateLimitingProvider extends RateLimitingProviderTrait {
Expand Down Expand Up @@ -180,22 +181,22 @@ class RateLimiting extends RateLimitingTrait with LongKeyedMapper[RateLimiting]
object ConsumerId extends MappedString(this, 250)
object BankId extends UUIDString(this)
object PerSecondCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue: Long = APIUtil.getPropsAsLongValue("rate_limiting_per_second", -1)
}
object PerMinuteCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue: Long = APIUtil.getPropsAsLongValue("rate_limiting_per_minute", -1)
}
object PerHourCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue: Long = APIUtil.getPropsAsLongValue("rate_limiting_per_hour", -1)
}
object PerDayCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue: Long = APIUtil.getPropsAsLongValue("rate_limiting_per_day", -1)
}
object PerWeekCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue: Long = APIUtil.getPropsAsLongValue("rate_limiting_per_week", -1)
}
object PerMonthCallLimit extends MappedLong(this) {
override def defaultValue = -1
override def defaultValue: Long = APIUtil.getPropsAsLongValue("rate_limiting_per_month", -1)
}
object FromDate extends MappedDateTime(this)
object ToDate extends MappedDateTime(this)
Expand Down