mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 11:06:49 +00:00
Merge upstream/develop into develop after conflict resolution
This commit is contained in:
commit
f5dd612088
@ -41,6 +41,7 @@ jobs:
|
||||
cache: maven
|
||||
- name: Build with Maven
|
||||
run: |
|
||||
set -o pipefail
|
||||
cp obp-api/src/main/resources/props/sample.props.template obp-api/src/main/resources/props/production.default.props
|
||||
echo connector=star > obp-api/src/main/resources/props/test.default.props
|
||||
echo starConnector_supported_types=mapped,internal >> obp-api/src/main/resources/props/test.default.props
|
||||
@ -76,7 +77,44 @@ jobs:
|
||||
echo ResetPasswordUrlEnabled=true >> obp-api/src/main/resources/props/test.default.props
|
||||
|
||||
echo consents.allowed=true >> obp-api/src/main/resources/props/test.default.props
|
||||
MAVEN_OPTS="-Xmx3G -Xss2m" mvn clean package -Pprod
|
||||
MAVEN_OPTS="-Xmx3G -Xss2m" mvn clean package -Pprod 2>&1 | tee maven-build.log
|
||||
|
||||
- name: Report failing tests (if any)
|
||||
if: always()
|
||||
run: |
|
||||
echo "Checking build log for failing tests via grep..."
|
||||
if [ ! -f maven-build.log ]; then
|
||||
echo "No maven-build.log found; skipping failure scan."
|
||||
exit 0
|
||||
fi
|
||||
if grep -n "\*\*\* FAILED \*\*\*" maven-build.log; then
|
||||
echo "Failing tests detected above."
|
||||
exit 1
|
||||
else
|
||||
echo "No failing tests detected in maven-build.log."
|
||||
fi
|
||||
|
||||
- name: Upload Maven build log
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: maven-build-log
|
||||
if-no-files-found: ignore
|
||||
path: |
|
||||
maven-build.log
|
||||
|
||||
- name: Upload test reports
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: test-reports
|
||||
if-no-files-found: ignore
|
||||
path: |
|
||||
obp-api/target/surefire-reports/**
|
||||
obp-commons/target/surefire-reports/**
|
||||
**/target/scalatest-reports/**
|
||||
**/target/site/surefire-report.html
|
||||
**/target/site/surefire-report/*
|
||||
|
||||
- name: Save .war artifact
|
||||
run: |
|
||||
@ -95,7 +133,7 @@ jobs:
|
||||
docker push docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }} --all-tags
|
||||
echo docker done
|
||||
|
||||
- uses: sigstore/cosign-installer@main
|
||||
- uses: sigstore/cosign-installer@4d14d7f17e7112af04ea6108fbb4bfc714c00390
|
||||
|
||||
- name: Write signing key to disk (only needed for `cosign sign --key`)
|
||||
run: echo "${{ secrets.COSIGN_PRIVATE_KEY }}" > cosign.key
|
||||
@ -116,4 +154,3 @@ jobs:
|
||||
COSIGN_PASSWORD: "${{secrets.COSIGN_PASSWORD}}"
|
||||
|
||||
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@ name: Build and publish container non develop
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '*'
|
||||
- '**'
|
||||
- '!develop'
|
||||
|
||||
env:
|
||||
@ -40,6 +40,7 @@ jobs:
|
||||
cache: maven
|
||||
- name: Build with Maven
|
||||
run: |
|
||||
set -o pipefail
|
||||
cp obp-api/src/main/resources/props/sample.props.template obp-api/src/main/resources/props/production.default.props
|
||||
echo connector=star > obp-api/src/main/resources/props/test.default.props
|
||||
echo starConnector_supported_types=mapped,internal >> obp-api/src/main/resources/props/test.default.props
|
||||
@ -75,7 +76,44 @@ jobs:
|
||||
echo ResetPasswordUrlEnabled=true >> obp-api/src/main/resources/props/test.default.props
|
||||
|
||||
echo consents.allowed=true >> obp-api/src/main/resources/props/test.default.props
|
||||
MAVEN_OPTS="-Xmx3G -Xss2m" mvn clean package -Pprod
|
||||
MAVEN_OPTS="-Xmx3G -Xss2m" mvn clean package -Pprod 2>&1 | tee maven-build.log
|
||||
|
||||
- name: Report failing tests (if any)
|
||||
if: always()
|
||||
run: |
|
||||
echo "Checking build log for failing tests via grep..."
|
||||
if [ ! -f maven-build.log ]; then
|
||||
echo "No maven-build.log found; skipping failure scan."
|
||||
exit 0
|
||||
fi
|
||||
if grep -n "\*\*\* FAILED \*\*\*" maven-build.log; then
|
||||
echo "Failing tests detected above."
|
||||
exit 1
|
||||
else
|
||||
echo "No failing tests detected in maven-build.log."
|
||||
fi
|
||||
|
||||
- name: Upload Maven build log
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: maven-build-log
|
||||
if-no-files-found: ignore
|
||||
path: |
|
||||
maven-build.log
|
||||
|
||||
- name: Upload test reports
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: test-reports
|
||||
if-no-files-found: ignore
|
||||
path: |
|
||||
obp-api/target/surefire-reports/**
|
||||
obp-commons/target/surefire-reports/**
|
||||
**/target/scalatest-reports/**
|
||||
**/target/site/surefire-report.html
|
||||
**/target/site/surefire-report/*
|
||||
|
||||
- name: Save .war artifact
|
||||
run: |
|
||||
@ -94,7 +132,7 @@ jobs:
|
||||
docker push docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }} --all-tags
|
||||
echo docker done
|
||||
|
||||
- uses: sigstore/cosign-installer@main
|
||||
- uses: sigstore/cosign-installer@4d14d7f17e7112af04ea6108fbb4bfc714c00390
|
||||
|
||||
- name: Write signing key to disk (only needed for `cosign sign --key`)
|
||||
run: echo "${{ secrets.COSIGN_PRIVATE_KEY }}" > cosign.key
|
||||
@ -111,4 +149,3 @@ jobs:
|
||||
COSIGN_PASSWORD: "${{secrets.COSIGN_PASSWORD}}"
|
||||
|
||||
|
||||
|
||||
|
||||
41
.github/workflows/build_pull_request.yml
vendored
41
.github/workflows/build_pull_request.yml
vendored
@ -36,6 +36,7 @@ jobs:
|
||||
cache: maven
|
||||
- name: Build with Maven
|
||||
run: |
|
||||
set -o pipefail
|
||||
cp obp-api/src/main/resources/props/sample.props.template obp-api/src/main/resources/props/production.default.props
|
||||
echo connector=star > obp-api/src/main/resources/props/test.default.props
|
||||
echo starConnector_supported_types=mapped,internal >> obp-api/src/main/resources/props/test.default.props
|
||||
@ -65,14 +66,50 @@ jobs:
|
||||
echo COUNTERPARTY_OTP_INSTRUCTION_TRANSPORT=dummy >> obp-api/src/main/resources/props/test.default.props
|
||||
echo SEPA_CREDIT_TRANSFERS_OTP_INSTRUCTION_TRANSPORT=dummy >> obp-api/src/main/resources/props/test.default.props
|
||||
|
||||
|
||||
echo allow_oauth2_login=true >> obp-api/src/main/resources/props/test.default.props
|
||||
echo oauth2.jwk_set.url=https://www.googleapis.com/oauth2/v3/certs >> obp-api/src/main/resources/props/test.default.props
|
||||
|
||||
echo ResetPasswordUrlEnabled=true >> obp-api/src/main/resources/props/test.default.props
|
||||
|
||||
echo consents.allowed=true >> obp-api/src/main/resources/props/test.default.props
|
||||
MAVEN_OPTS="-Xmx3G -Xss2m" mvn clean package -Pprod
|
||||
MAVEN_OPTS="-Xmx3G -Xss2m" mvn clean package -Pprod 2>&1 | tee maven-build.log
|
||||
|
||||
- name: Report failing tests (if any)
|
||||
if: always()
|
||||
run: |
|
||||
echo "Checking build log for failing tests via grep..."
|
||||
if [ ! -f maven-build.log ]; then
|
||||
echo "No maven-build.log found; skipping failure scan."
|
||||
exit 0
|
||||
fi
|
||||
if grep -n "\*\*\* FAILED \*\*\*" maven-build.log; then
|
||||
echo "Failing tests detected above."
|
||||
exit 1
|
||||
else
|
||||
echo "No failing tests detected in maven-build.log."
|
||||
fi
|
||||
|
||||
- name: Upload Maven build log
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: maven-build-log
|
||||
if-no-files-found: ignore
|
||||
path: |
|
||||
maven-build.log
|
||||
|
||||
- name: Upload test reports
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: test-reports
|
||||
if-no-files-found: ignore
|
||||
path: |
|
||||
obp-api/target/surefire-reports/**
|
||||
obp-commons/target/surefire-reports/**
|
||||
**/target/scalatest-reports/**
|
||||
**/target/site/surefire-report.html
|
||||
**/target/site/surefire-report/*
|
||||
|
||||
- name: Save .war artifact
|
||||
run: |
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@ -44,3 +44,4 @@ project/project
|
||||
coursier
|
||||
metals.sbt
|
||||
obp-http4s-runner/src/main/resources/git.properties
|
||||
test-results
|
||||
@ -1,10 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to flush Redis, build the project, and run Jetty
|
||||
# Script to flush Redis, build the project, and run both Jetty and http4s servers
|
||||
#
|
||||
# This script should be run from the OBP-API root directory:
|
||||
# cd /path/to/OBP-API
|
||||
# ./flushall_build_and_run.sh
|
||||
#
|
||||
# The http4s server will run in the background on port 8081
|
||||
# The Jetty server will run in the foreground on port 8080
|
||||
|
||||
set -e # Exit on error
|
||||
|
||||
@ -27,4 +30,29 @@ echo "=========================================="
|
||||
echo "Building and running with Maven..."
|
||||
echo "=========================================="
|
||||
export MAVEN_OPTS="-Xss128m --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED"
|
||||
mvn install -pl .,obp-commons && mvn jetty:run -pl obp-api
|
||||
mvn install -pl .,obp-commons
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "Building http4s runner..."
|
||||
echo "=========================================="
|
||||
export MAVEN_OPTS="-Xms3G -Xmx6G -XX:MaxMetaspaceSize=2G"
|
||||
mvn -pl obp-http4s-runner -am clean package -DskipTests=true -Dmaven.test.skip=true
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "Starting http4s server in background..."
|
||||
echo "=========================================="
|
||||
java -jar obp-http4s-runner/target/obp-http4s-runner.jar > http4s-server.log 2>&1 &
|
||||
HTTP4S_PID=$!
|
||||
echo "http4s server started with PID: $HTTP4S_PID (port 8081)"
|
||||
echo "Logs are being written to: http4s-server.log"
|
||||
echo ""
|
||||
echo "To stop http4s server later: kill $HTTP4S_PID"
|
||||
echo ""
|
||||
|
||||
echo "=========================================="
|
||||
echo "Starting Jetty server (foreground)..."
|
||||
echo "=========================================="
|
||||
export MAVEN_OPTS="-Xss128m --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED"
|
||||
mvn jetty:run -pl obp-api
|
||||
|
||||
@ -586,8 +586,15 @@
|
||||
<forkMode>once</forkMode>
|
||||
<junitxml>.</junitxml>
|
||||
<filereports>WDF TestSuite.txt</filereports>
|
||||
<argLine>-Drun.mode=test -XX:MaxMetaspaceSize=512m -Xms512m -Xmx512m --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.jar=ALL-UNNAMED --add-opens java.base/java.security=ALL-UNNAMED</argLine>
|
||||
<!-- Increased memory for faster test execution -->
|
||||
<argLine>-Drun.mode=test -XX:MaxMetaspaceSize=1G -Xms2G -Xmx4G -XX:+UseG1GC -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:+UseStringDeduplication --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.jar=ALL-UNNAMED --add-opens java.base/java.security=ALL-UNNAMED</argLine>
|
||||
<tagsToExclude>code.external</tagsToExclude>
|
||||
<testFailureIgnore>${maven.test.failure.ignore}</testFailureIgnore>
|
||||
<!-- Disable parallel test execution to avoid shared database state issues -->
|
||||
<!-- Tests share an in-memory H2 database which causes conflicts when run in parallel -->
|
||||
<!-- <parallel>true</parallel>-->
|
||||
<!-- <threadCount>4</threadCount>-->
|
||||
<parallel>false</parallel>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
@ -597,6 +604,49 @@
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-report-plugin</artifactId>
|
||||
<version>3.5.2</version>
|
||||
<configuration>
|
||||
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
|
||||
<outputDirectory>${project.build.directory}/surefire-reports</outputDirectory>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>surefire-html-report</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>report-only</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>delete-surefire-xml-after-html</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<delete>
|
||||
<fileset dir="${project.build.directory}/surefire-reports">
|
||||
<include name="TEST-*.xml"/>
|
||||
<include name="TESTS-*.xml"/>
|
||||
</fileset>
|
||||
</delete>
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<!-- add src/main/java to source dirs -->
|
||||
@ -623,15 +673,26 @@
|
||||
<version>4.8.1</version>
|
||||
<configuration>
|
||||
<fork>true</fork>
|
||||
<recompileMode>incremental</recompileMode>
|
||||
<useZincServer>true</useZincServer>
|
||||
<jvmArgs>
|
||||
<jvmArg>-Xms4G</jvmArg>
|
||||
<jvmArg>-Xmx12G</jvmArg>
|
||||
<jvmArg>-Xss4m</jvmArg>
|
||||
<jvmArg>-XX:MaxMetaspaceSize=4G</jvmArg>
|
||||
<jvmArg>-XX:+UseG1GC</jvmArg>
|
||||
<jvmArg>-XX:+TieredCompilation</jvmArg>
|
||||
<jvmArg>-XX:TieredStopAtLevel=1</jvmArg>
|
||||
</jvmArgs>
|
||||
<args>
|
||||
<arg>-deprecation</arg>
|
||||
<arg>-feature</arg>
|
||||
<!-- Enable language features to suppress warnings -->
|
||||
<arg>-language:implicitConversions</arg>
|
||||
<arg>-language:reflectiveCalls</arg>
|
||||
<arg>-language:postfixOps</arg>
|
||||
<!-- Suppress auto-application deprecation warning -->
|
||||
<arg>-Wconf:cat=deprecation&msg=auto-application:s</arg>
|
||||
</args>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
@ -624,6 +624,14 @@ webui_agree_terms_url =
|
||||
#webui_post_consumer_registration_more_info_text = Please tell us more your Application and / or Startup using this link.
|
||||
#webui_post_consumer_registration_submit_button_value=Register consumer
|
||||
|
||||
# OBP Portal URL - base URL for the OBP Portal service
|
||||
webui_obp_portal_url = http://localhost:5174
|
||||
|
||||
# External Consumer Registration URL - used to redirect "Get API Key" links to an external service
|
||||
# If not set, defaults to webui_obp_portal_url + "/consumer-registration"
|
||||
# Set this to redirect to a custom URL for consumer registration
|
||||
webui_external_consumer_registration_url = http://localhost:5174/consumer-registration
|
||||
|
||||
|
||||
## Display For Banks section
|
||||
webui_display_for_banks_section = true
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package code.api.AUOpenBanking.v1_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.AUOpenBanking.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil.{defaultBankId, _}
|
||||
import code.api.util.ApiTag._
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package code.api.AUOpenBanking.v1_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package code.api.AUOpenBanking.v1_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package code.api.AUOpenBanking.v1_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package code.api.AUOpenBanking.v1_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package code.api.AUOpenBanking.v1_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.AUOpenBanking.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package code.api.AUOpenBanking.v1_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.BahrainOBF.v1_0_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package code.api.MxOF
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import scala.language.implicitConversions
|
||||
import code.api.Constant
|
||||
import code.api.MxOF.JSONFactory_MXOF_0_0_1.createGetAtmsResponse
|
||||
import code.api.util.APIUtil._
|
||||
|
||||
@ -27,6 +27,8 @@ TESOBE (http://www.tesobe.com/)
|
||||
|
||||
package code.api
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import scala.language.implicitConversions
|
||||
import code.api.Constant._
|
||||
import code.api.OAuthHandshake._
|
||||
import code.api.util.APIUtil._
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.Polish.v2_1_1_1
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.Polish.v2_1_1_1
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.Polish.v2_1_1_1
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.Polish.v2_1_1_1
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.ResourceDocs1_4_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.Constant.HostName
|
||||
import code.api.OBPRestHelper
|
||||
import code.api.cache.Caching
|
||||
@ -16,7 +17,7 @@ import net.liftweb.http.{GetRequest, InMemoryResponse, PlainTextResponse, Req, S
|
||||
object ResourceDocs140 extends OBPRestHelper with ResourceDocsAPIMethods with MdcLoggable {
|
||||
val version = ApiVersion.v1_4_0 // "1.4.0" // We match other api versions so API explorer can easily use the path.
|
||||
val versionStatus = ApiVersionStatus.STABLE.toString
|
||||
val routes = List(
|
||||
val routes: Seq[OBPEndpoint] = List(
|
||||
ImplementationsResourceDocs.getResourceDocsObp,
|
||||
ImplementationsResourceDocs.getBankLevelDynamicResourceDocsObp,
|
||||
ImplementationsResourceDocs.getResourceDocsSwagger,
|
||||
@ -31,7 +32,7 @@ object ResourceDocs140 extends OBPRestHelper with ResourceDocsAPIMethods with Md
|
||||
object ResourceDocs200 extends OBPRestHelper with ResourceDocsAPIMethods with MdcLoggable {
|
||||
val version = ApiVersion.v2_0_0 // "2.0.0" // We match other api versions so API explorer can easily use the path.
|
||||
val versionStatus = ApiVersionStatus.STABLE.toString
|
||||
val routes = List(
|
||||
val routes: Seq[OBPEndpoint] = List(
|
||||
ImplementationsResourceDocs.getResourceDocsObp,
|
||||
ImplementationsResourceDocs.getResourceDocsSwagger,
|
||||
ImplementationsResourceDocs.getBankLevelDynamicResourceDocsObp,
|
||||
@ -46,7 +47,7 @@ object ResourceDocs200 extends OBPRestHelper with ResourceDocsAPIMethods with Md
|
||||
object ResourceDocs210 extends OBPRestHelper with ResourceDocsAPIMethods with MdcLoggable {
|
||||
val version: ApiVersion = ApiVersion.v2_1_0 // "2.1.0" // We match other api versions so API explorer can easily use the path.
|
||||
val versionStatus = ApiVersionStatus.STABLE.toString
|
||||
val routes = List(
|
||||
val routes: Seq[OBPEndpoint] = List(
|
||||
ImplementationsResourceDocs.getResourceDocsObp,
|
||||
ImplementationsResourceDocs.getResourceDocsSwagger,
|
||||
ImplementationsResourceDocs.getBankLevelDynamicResourceDocsObp,
|
||||
@ -60,7 +61,7 @@ object ResourceDocs210 extends OBPRestHelper with ResourceDocsAPIMethods with Md
|
||||
object ResourceDocs220 extends OBPRestHelper with ResourceDocsAPIMethods with MdcLoggable {
|
||||
val version: ApiVersion = ApiVersion.v2_2_0 // "2.2.0" // We match other api versions so API explorer can easily use the path.
|
||||
val versionStatus = ApiVersionStatus.STABLE.toString
|
||||
val routes = List(
|
||||
val routes: Seq[OBPEndpoint] = List(
|
||||
ImplementationsResourceDocs.getResourceDocsObp,
|
||||
ImplementationsResourceDocs.getResourceDocsSwagger,
|
||||
ImplementationsResourceDocs.getBankLevelDynamicResourceDocsObp,
|
||||
@ -74,7 +75,7 @@ object ResourceDocs220 extends OBPRestHelper with ResourceDocsAPIMethods with Md
|
||||
object ResourceDocs300 extends OBPRestHelper with ResourceDocsAPIMethods with MdcLoggable {
|
||||
val version : ApiVersion = ApiVersion.v3_0_0 // = "3.0.0" // We match other api versions so API explorer can easily use the path.
|
||||
val versionStatus = ApiVersionStatus.STABLE.toString
|
||||
val routes = List(
|
||||
val routes: Seq[OBPEndpoint] = List(
|
||||
ImplementationsResourceDocs.getResourceDocsObp,
|
||||
ImplementationsResourceDocs.getResourceDocsSwagger,
|
||||
ImplementationsResourceDocs.getBankLevelDynamicResourceDocsObp,
|
||||
@ -87,7 +88,7 @@ object ResourceDocs300 extends OBPRestHelper with ResourceDocsAPIMethods with Md
|
||||
object ResourceDocs310 extends OBPRestHelper with ResourceDocsAPIMethods with MdcLoggable {
|
||||
val version: ApiVersion = ApiVersion.v3_1_0 // = "3.0.0" // We match other api versions so API explorer can easily use the path.
|
||||
val versionStatus = ApiVersionStatus.STABLE.toString
|
||||
val routes = List(
|
||||
val routes: Seq[OBPEndpoint] = List(
|
||||
ImplementationsResourceDocs.getResourceDocsObp,
|
||||
ImplementationsResourceDocs.getResourceDocsSwagger,
|
||||
ImplementationsResourceDocs.getBankLevelDynamicResourceDocsObp,
|
||||
@ -102,7 +103,7 @@ object ResourceDocs300 extends OBPRestHelper with ResourceDocsAPIMethods with Md
|
||||
object ResourceDocs400 extends OBPRestHelper with ResourceDocsAPIMethods with MdcLoggable {
|
||||
val version: ApiVersion = ApiVersion.v4_0_0 // = "4.0.0" // We match other api versions so API explorer can easily use the path.
|
||||
val versionStatus = ApiVersionStatus.STABLE.toString
|
||||
val routes = List(
|
||||
val routes: Seq[OBPEndpoint] = List(
|
||||
ImplementationsResourceDocs.getResourceDocsObpV400,
|
||||
ImplementationsResourceDocs.getResourceDocsSwagger,
|
||||
ImplementationsResourceDocs.getBankLevelDynamicResourceDocsObp,
|
||||
@ -117,7 +118,7 @@ object ResourceDocs300 extends OBPRestHelper with ResourceDocsAPIMethods with Md
|
||||
object ResourceDocs500 extends OBPRestHelper with ResourceDocsAPIMethods with MdcLoggable {
|
||||
val version: ApiVersion = ApiVersion.v5_0_0
|
||||
val versionStatus = ApiVersionStatus.STABLE.toString
|
||||
val routes = List(
|
||||
val routes: Seq[OBPEndpoint] = List(
|
||||
ImplementationsResourceDocs.getResourceDocsObpV400,
|
||||
ImplementationsResourceDocs.getResourceDocsSwagger,
|
||||
ImplementationsResourceDocs.getBankLevelDynamicResourceDocsObp,
|
||||
@ -132,7 +133,7 @@ object ResourceDocs300 extends OBPRestHelper with ResourceDocsAPIMethods with Md
|
||||
object ResourceDocs510 extends OBPRestHelper with ResourceDocsAPIMethods with MdcLoggable {
|
||||
val version: ApiVersion = ApiVersion.v5_1_0
|
||||
val versionStatus = ApiVersionStatus.BLEEDING_EDGE.toString
|
||||
val routes = List(
|
||||
val routes: Seq[OBPEndpoint] = List(
|
||||
ImplementationsResourceDocs.getResourceDocsObpV400,
|
||||
ImplementationsResourceDocs.getResourceDocsSwagger,
|
||||
ImplementationsResourceDocs.getBankLevelDynamicResourceDocsObp,
|
||||
@ -148,7 +149,7 @@ object ResourceDocs300 extends OBPRestHelper with ResourceDocsAPIMethods with Md
|
||||
object ResourceDocs600 extends OBPRestHelper with ResourceDocsAPIMethods with MdcLoggable {
|
||||
val version: ApiVersion = ApiVersion.v6_0_0
|
||||
val versionStatus = ApiVersionStatus.BLEEDING_EDGE.toString
|
||||
val routes = List(
|
||||
val routes: Seq[OBPEndpoint] = List(
|
||||
ImplementationsResourceDocs.getResourceDocsObpV400,
|
||||
ImplementationsResourceDocs.getResourceDocsSwagger,
|
||||
ImplementationsResourceDocs.getResourceDocsOpenAPI31,
|
||||
|
||||
@ -32,12 +32,14 @@ import com.openbankproject.commons.model.{BankId, ListResult, User}
|
||||
import com.openbankproject.commons.util.ApiStandards._
|
||||
import com.openbankproject.commons.util.{ApiVersion, ScannedApiVersion}
|
||||
import net.liftweb.common.{Box, Empty, Full}
|
||||
import net.liftweb.http.{InMemoryResponse, LiftRules, PlainTextResponse, S}
|
||||
import net.liftweb.http.{LiftRules, S}
|
||||
import net.liftweb.http.{InMemoryResponse, LiftRules, PlainTextResponse}
|
||||
import net.liftweb.json
|
||||
import net.liftweb.json.JsonAST.{JField, JString, JValue}
|
||||
import net.liftweb.json._
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import scala.collection.immutable
|
||||
import scala.collection.immutable.{List, Nil}
|
||||
import scala.concurrent.Future
|
||||
|
||||
@ -180,8 +182,8 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
requestedApiVersion match
|
||||
{
|
||||
// only `obp` standard show the `localResourceDocs`
|
||||
case version: ScannedApiVersion
|
||||
if(version.apiStandard == obp.toString) =>
|
||||
case version: ScannedApiVersion
|
||||
if(version.apiStandard == obp.toString) =>
|
||||
activePlusLocalResourceDocs ++= localResourceDocs
|
||||
case _ => ; // all other standards only show their own apis.
|
||||
}
|
||||
@ -222,7 +224,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param requestedApiVersion
|
||||
* @param resourceDocTags
|
||||
* @param partialFunctionNames
|
||||
@ -289,9 +291,9 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
val allDocs = staticDocs.map(_ ++ filteredDocs)
|
||||
|
||||
resourceDocsToResourceDocJson(allDocs, resourceDocTags, partialFunctionNames, isVersion4OrHigher, locale)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
def getResourceDocsObpDynamicCached(
|
||||
resourceDocTags: Option[List[ResourceDocTag]],
|
||||
partialFunctionNames: Option[List[String]],
|
||||
@ -326,7 +328,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
}
|
||||
|
||||
resourceDocsToResourceDocJson(Some(filteredDocs), resourceDocTags, partialFunctionNames, isVersion4OrHigher, locale)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -351,7 +353,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
def getResourceDocsDescription(isBankLevelResourceDoc: Boolean) = {
|
||||
|
||||
val endpointBankIdPath = if (isBankLevelResourceDoc) "/banks/BANK_ID" else ""
|
||||
|
||||
|
||||
s"""Get documentation about the RESTful resources on this server including example bodies for POST and PUT requests.
|
||||
|
|
||||
|This is the native data format used to document OBP endpoints. Each endpoint has a Resource Doc (a Scala case class) defined in the source code.
|
||||
@ -372,8 +374,8 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
| if set content=dynamic, only show dynamic endpoints, if content=static, only show the static endpoints. if omit this parameter, we will show all the endpoints.
|
||||
|
|
||||
| You may need some other language resource docs, now we support en_GB and es_ES at the moment.
|
||||
|
|
||||
| You can filter with api-collection-id, but api-collection-id can not be used with others together. If api-collection-id is used in URL, it will ignore all other parameters.
|
||||
|
|
||||
| You can filter with api-collection-id, but api-collection-id can not be used with others together. If api-collection-id is used in URL, it will ignore all other parameters.
|
||||
|
|
||||
|See the Resource Doc endpoint for more information.
|
||||
|
|
||||
@ -400,8 +402,8 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
|</ul>
|
||||
"""
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
localResourceDocs += ResourceDoc(
|
||||
getResourceDocsObp,
|
||||
implementedInApiVersion,
|
||||
@ -411,7 +413,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
"Get Resource Docs.",
|
||||
getResourceDocsDescription(false),
|
||||
EmptyBody,
|
||||
EmptyBody,
|
||||
EmptyBody,
|
||||
UnknownError :: Nil,
|
||||
List(apiTagDocumentation, apiTagApi),
|
||||
Some(List(canReadResourceDoc))
|
||||
@ -428,7 +430,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
getApiLevelResourceDocs(cc,requestedApiVersionString, tags, partialFunctions, locale, contentParam, apiCollectionIdParam,false)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
localResourceDocs += ResourceDoc(
|
||||
getResourceDocsObpV400,
|
||||
implementedInApiVersion,
|
||||
@ -443,7 +445,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
List(apiTagDocumentation, apiTagApi),
|
||||
Some(List(canReadResourceDoc))
|
||||
)
|
||||
|
||||
|
||||
lazy val getResourceDocsObpV400 : OBPEndpoint = {
|
||||
case "resource-docs" :: requestedApiVersionString :: "obp" :: Nil JsonGet _ => {
|
||||
val (tags, partialFunctions, locale, contentParam, apiCollectionIdParam) = ResourceDocsAPIMethodsUtil.getParams()
|
||||
@ -470,7 +472,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
case true => authenticatedAccess(cc) // If set resource_docs_requires_role=true, we need check the authentication
|
||||
}
|
||||
_ <- resourceDocsRequireRole match {
|
||||
case false => Future()
|
||||
case false => Future(())
|
||||
case true => // If set resource_docs_requires_role=true, we need check the roles as well
|
||||
NewStyle.function.hasAtLeastOneEntitlement(failMsg = UserHasMissingRoles + canReadResourceDoc.toString)("", u.map(_.userId).getOrElse(""), ApiRole.canReadResourceDoc :: Nil, cc.callContext)
|
||||
}
|
||||
@ -494,7 +496,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
Some(isVersion4OrHigher)
|
||||
)
|
||||
json <- locale match {
|
||||
case _ if (apiCollectionIdParam.isDefined) =>
|
||||
case _ if (apiCollectionIdParam.isDefined) =>
|
||||
NewStyle.function.tryons(s"$UnknownError Can not prepare OBP resource docs.", 500, callContext) {
|
||||
val operationIds = MappedApiCollectionEndpointsProvider.getApiCollectionEndpoints(apiCollectionIdParam.getOrElse("")).map(_.operationId).map(getObpFormatOperationId)
|
||||
val resourceDocs = ResourceDoc.getResourceDocs(operationIds)
|
||||
@ -594,7 +596,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
}
|
||||
(_, callContext) <- NewStyle.function.getBank(BankId(bankId), Option(cc))
|
||||
_ <- resourceDocsRequireRole match {
|
||||
case false => Future()
|
||||
case false => Future(())
|
||||
case true => // If set resource_docs_requires_role=true, we need check the the roles as well
|
||||
NewStyle.function.hasAtLeastOneEntitlement(failMsg = UserHasMissingRoles + ApiRole.canReadDynamicResourceDocsAtOneBank.toString)(
|
||||
bankId, u.map(_.userId).getOrElse(""), ApiRole.canReadDynamicResourceDocsAtOneBank::Nil, cc.callContext
|
||||
@ -651,7 +653,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
|See the Resource Doc endpoint for more information.
|
||||
|
|
||||
| Note: Resource Docs are cached, TTL is ${GET_DYNAMIC_RESOURCE_DOCS_TTL} seconds
|
||||
|
|
||||
|
|
||||
|Following are more examples:
|
||||
|${getObpApiRoot}/v3.1.0/resource-docs/v3.1.0/swagger
|
||||
|${getObpApiRoot}/v3.1.0/resource-docs/v3.1.0/swagger?tags=Account,Bank
|
||||
@ -698,7 +700,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
Some(isVersion4OrHigher)
|
||||
)
|
||||
cacheValueFromRedis = Caching.getStaticSwaggerDocCache(cacheKey)
|
||||
|
||||
|
||||
swaggerJValue <- if (cacheValueFromRedis.isDefined) {
|
||||
NewStyle.function.tryons(s"$UnknownError Can not convert internal swagger file from cache.", 400, cc.callContext) {json.parse(cacheValueFromRedis.get)}
|
||||
} else {
|
||||
@ -751,7 +753,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
| • All endpoints are given one or more tags which are used for grouping
|
||||
| • Empty values will return error OBP-10053
|
||||
|
|
||||
|**functions** - Filter by function names (comma-separated list)
|
||||
|**functions** - Filter by function names (comma-separated list)
|
||||
| • Example: ?functions=getBanks,bankById
|
||||
| • Each endpoint is implemented in the OBP Scala code by a 'function'
|
||||
| • Empty values will return error OBP-10054
|
||||
@ -819,26 +821,26 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
List(apiTagDocumentation, apiTagApi)
|
||||
)
|
||||
|
||||
// Note: OpenAPI 3.1 YAML endpoint (/resource-docs/API_VERSION/openapi.yaml)
|
||||
// is implemented using Lift's serve mechanism in ResourceDocs140.scala to properly
|
||||
// Note: OpenAPI 3.1 YAML endpoint (/resource-docs/API_VERSION/openapi.yaml)
|
||||
// is implemented using Lift's serve mechanism in ResourceDocs140.scala to properly
|
||||
// handle YAML content type. It provides the same functionality as the JSON endpoint
|
||||
// but returns OpenAPI documentation in YAML format instead of JSON.
|
||||
|
||||
/**
|
||||
* OpenAPI 3.1 endpoint with comprehensive parameter validation.
|
||||
*
|
||||
*
|
||||
* This endpoint generates OpenAPI 3.1 documentation with the following validated query parameters:
|
||||
* - tags: Comma-separated list of tags to filter endpoints (e.g., ?tags=Account,Bank)
|
||||
* - functions: Comma-separated list of function names to filter endpoints
|
||||
* - content: Filter type - "static", "dynamic", or "all"
|
||||
* - content: Filter type - "static", "dynamic", or "all"
|
||||
* - locale: Language code for localization (e.g., "en_GB", "es_ES")
|
||||
* - api-collection-id: UUID to filter by specific API collection
|
||||
*
|
||||
*
|
||||
* Parameter validation guards ensure:
|
||||
* - Empty parameters (e.g., ?tags=) return 400 error
|
||||
* - Invalid content values return 400 error with valid options
|
||||
* - All parameters are properly trimmed and sanitized
|
||||
*
|
||||
*
|
||||
* Examples:
|
||||
* - ?content=static&tags=Account-Firehose
|
||||
* - ?tags=Account,Bank&functions=getBanks,bankById
|
||||
@ -848,7 +850,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
case "resource-docs" :: requestedApiVersionString :: "openapi" :: Nil JsonGet _ => {
|
||||
cc => {
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
|
||||
|
||||
// Early validation for empty parameters using underlying S to bypass ObpS filtering
|
||||
if (S.param("tags").exists(_.trim.isEmpty)) {
|
||||
Full(errorJsonResponse(InvalidTagsParameter, 400))
|
||||
@ -892,7 +894,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
Some(isVersion4OrHigher)
|
||||
)
|
||||
cacheValueFromRedis = Caching.getStaticSwaggerDocCache(cacheKey)
|
||||
|
||||
|
||||
openApiJValue <- if (cacheValueFromRedis.isDefined) {
|
||||
NewStyle.function.tryons(s"$UnknownError Can not convert internal openapi file from cache.", 400, cc.callContext) {json.parse(cacheValueFromRedis.get)}
|
||||
} else {
|
||||
@ -926,8 +928,8 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
}
|
||||
}
|
||||
|
||||
// Note: The OpenAPI 3.1 YAML endpoint (/resource-docs/API_VERSION/openapi.yaml)
|
||||
// is implemented using Lift's serve mechanism in ResourceDocs140.scala to properly
|
||||
// Note: The OpenAPI 3.1 YAML endpoint (/resource-docs/API_VERSION/openapi.yaml)
|
||||
// is implemented using Lift's serve mechanism in ResourceDocs140.scala to properly
|
||||
// handle YAML content type and response format, rather than as a standard OBPEndpoint.
|
||||
|
||||
|
||||
@ -1026,7 +1028,7 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
|
||||
example_request_body = endpointMappingRequestBodyExample,
|
||||
success_response_body = endpointMappingRequestBodyExample
|
||||
)
|
||||
|
||||
|
||||
case doc if ( doc.operation_id == buildOperationId(APIMethods400.Implementations4_0_0.implementedInApiVersion, nameOf(APIMethods400.Implementations4_0_0.getDynamicEndpoint)) ||
|
||||
doc.operation_id == buildOperationId(APIMethods400.Implementations4_0_0.implementedInApiVersion, nameOf(APIMethods400.Implementations4_0_0.getBankLevelDynamicEndpoint))) =>
|
||||
doc.copy(success_response_body = ExampleValue.dynamicEndpointResponseBodyEmptyExample)
|
||||
@ -1162,7 +1164,7 @@ object ResourceDocsAPIMethodsUtil extends MdcLoggable{
|
||||
}
|
||||
logger.debug(s"partialFunctionNames is $partialFunctionNames")
|
||||
|
||||
val locale = ObpS.param(PARAM_LOCALE).or(ObpS.param("language")) // we used language before, so keep it there.
|
||||
val locale = ObpS.param(PARAM_LOCALE).or(ObpS.param("language")) // we used language before, so keep it there.
|
||||
logger.debug(s"locale is $locale")
|
||||
|
||||
// So we can produce a reduced list of resource docs to prevent manual editing of swagger files.
|
||||
@ -1177,8 +1179,8 @@ object ResourceDocsAPIMethodsUtil extends MdcLoggable{
|
||||
if x.trim.nonEmpty
|
||||
} yield x.trim
|
||||
logger.debug(s"apiCollectionIdParam is $apiCollectionIdParam")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
(tags, partialFunctionNames, locale, contentParam, apiCollectionIdParam)
|
||||
}
|
||||
@ -1190,8 +1192,8 @@ We don't assume a default catalog (as API Explorer does)
|
||||
so the caller must specify any required filtering by catalog explicitly.
|
||||
*/
|
||||
def filterResourceDocs(
|
||||
allResources: List[ResourceDoc],
|
||||
resourceDocTags: Option[List[ResourceDocTag]],
|
||||
allResources: List[ResourceDoc],
|
||||
resourceDocTags: Option[List[ResourceDocTag]],
|
||||
partialFunctionNames: Option[List[String]]
|
||||
) : List[ResourceDoc] = {
|
||||
|
||||
@ -1233,7 +1235,7 @@ so the caller must specify any required filtering by catalog explicitly.
|
||||
// tags param was not mentioned in url or was empty, so return all
|
||||
case None => filteredResources3
|
||||
}
|
||||
|
||||
|
||||
|
||||
val resourcesToUse = filteredResources4.toSet.toList
|
||||
|
||||
@ -1255,3 +1257,4 @@ so the caller must specify any required filtering by catalog explicitly.
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.ResourceDocs1_4_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.Constant
|
||||
import code.api.Constant._
|
||||
import code.api.UKOpenBanking.v2_0_0.JSONFactory_UKOpenBanking_200
|
||||
|
||||
@ -889,7 +889,7 @@ object SwaggerJSONFactory extends MdcLoggable {
|
||||
* @return a list of include original list and nested objects
|
||||
*/
|
||||
private def getAllEntities(entities: List[AnyRef]) = {
|
||||
val notNullEntities = entities.filter(null !=)
|
||||
val notNullEntities = entities.filter(null.!=)
|
||||
val notSupportYetEntity = entities.filter(_.getClass.getSimpleName.equals(NotSupportedYet.getClass.getSimpleName.replace("$","")))
|
||||
val existsEntityTypes: Set[universe.Type] = notNullEntities.map(ReflectUtils.getType).toSet
|
||||
|
||||
@ -919,10 +919,10 @@ object SwaggerJSONFactory extends MdcLoggable {
|
||||
val entityType = ReflectUtils.getType(obj)
|
||||
val constructorParamList = ReflectUtils.getPrimaryConstructor(entityType).paramLists.headOption.getOrElse(Nil)
|
||||
// if exclude current obj, the result list tail will be Nil
|
||||
val resultTail = if(excludeTypes.exists(entityType =:=)) Nil else List(obj)
|
||||
val resultTail = if(excludeTypes.exists(entityType.=:=)) Nil else List(obj)
|
||||
|
||||
val refValues: List[Any] = constructorParamList
|
||||
.filter(it => isSwaggerRefType(it.info) && !excludeTypes.exists(_ =:= it.info))
|
||||
.filter(it => isSwaggerRefType(it.info) && !excludeTypes.exists(_.=:=(it.info)))
|
||||
.map(it => {
|
||||
val paramName = it.name.toString
|
||||
val value = ReflectUtils.invokeMethod(obj, paramName)
|
||||
@ -1009,7 +1009,7 @@ object SwaggerJSONFactory extends MdcLoggable {
|
||||
val errorMessages: Set[AnyRef] = resourceDocList.flatMap(_.error_response_bodies).toSet
|
||||
|
||||
val errorDefinitions = ErrorMessages.allFields
|
||||
.filterNot(null ==)
|
||||
.filterNot(null.==)
|
||||
.filter(it => errorMessages.contains(it._2))
|
||||
.toList
|
||||
.map(it => {
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.STET.v1_4
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.APIFailureNewStyle
|
||||
import code.api.STET.v1_4.JSONFactory_STET_1_4._
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.STET.v1_4
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.STET.v1_4
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.Constant
|
||||
import code.api.UKOpenBanking.v3_1_0.JSONFactory_UKOpenBanking_310.ConsentPostBodyUKV310
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.Constant
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.Constant
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.ApiTag
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.UKOpenBanking.v3_1_0
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.v1_3.JvalueCaseClass
|
||||
import code.api.util.APIUtil.{defaultBankId, _}
|
||||
import code.api.util.ApiTag._
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.builder.AccountInformationServiceAISApi
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.APIFailureNewStyle
|
||||
import code.api.Constant.{SYSTEM_READ_ACCOUNTS_BERLIN_GROUP_VIEW_ID, SYSTEM_READ_BALANCES_BERLIN_GROUP_VIEW_ID, SYSTEM_READ_TRANSACTIONS_BERLIN_GROUP_VIEW_ID}
|
||||
import code.api.berlin.group.ConstantsBG
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.builder.CommonServicesApi
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.ConstantsBG
|
||||
import code.api.berlin.group.v1_3.{JvalueCaseClass, OBP_BERLIN_GROUP_1_3}
|
||||
import code.api.builder.AccountInformationServiceAISApi.APIMethods_AccountInformationServiceAISApi
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.builder.ConfirmationOfFundsServicePIISApi
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.ConstantsBG
|
||||
import code.api.berlin.group.v1_3.JSONFactory_BERLIN_GROUP_1_3._
|
||||
import code.api.berlin.group.v1_3.{JvalueCaseClass, OBP_BERLIN_GROUP_1_3}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.builder.PaymentInitiationServicePISApi
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.ConstantsBG
|
||||
import code.api.berlin.group.v1_3.JSONFactory_BERLIN_GROUP_1_3.{CancelPaymentResponseJson, CancelPaymentResponseLinks, LinkHrefJson, UpdatePaymentPsuDataJson, checkAuthorisationConfirmation, checkSelectPsuAuthenticationMethod, checkTransactionAuthorisation, checkUpdatePsuAuthentication, createCancellationTransactionRequestJson}
|
||||
import code.api.berlin.group.v1_3.model.TransactionStatus.mapTransactionStatus
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.builder.SigningBasketsApi
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.berlin.group.ConstantsBG
|
||||
import code.api.berlin.group.v1_3.JSONFactory_BERLIN_GROUP_1_3.{PostSigningBasketJsonV13, UpdatePaymentPsuDataJson, createSigningBasketResponseJson, createStartSigningBasketAuthorisationJson, getSigningBasketResponseJson, getSigningBasketStatusResponseJson}
|
||||
import code.api.berlin.group.v1_3.{JSONFactory_BERLIN_GROUP_1_3, JvalueCaseClass}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.dynamic.endpoint.helper
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import code.api.util.APIUtil.{OBPEndpoint, OBPReturnType, futureToBoxedResponse, scalaFutureToLaFuture}
|
||||
import code.api.util.DynamicUtil.{Sandbox, Validation}
|
||||
import code.api.util.{CallContext, CustomJsonFormats, DynamicUtil}
|
||||
@ -34,7 +35,7 @@ trait DynamicCompileEndpoint {
|
||||
}
|
||||
|
||||
private def validateDependencies() = {
|
||||
val dependencies = DynamicUtil.getDynamicCodeDependentMethods(this.getClass, "process" == )
|
||||
val dependencies = DynamicUtil.getDynamicCodeDependentMethods(this.getClass, "process".==)
|
||||
Validation.validateDependency(dependencies)
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.dynamic.endpoint.helper
|
||||
|
||||
import scala.language.existentials
|
||||
import org.apache.pekko.http.scaladsl.model.{HttpMethods, HttpMethod => PekkoHttpMethod}
|
||||
import code.DynamicData.{DynamicDataProvider, DynamicDataT}
|
||||
import code.DynamicEndpoint.{DynamicEndpointProvider, DynamicEndpointT}
|
||||
@ -677,7 +678,7 @@ object DynamicEndpointHelper extends RestHelper {
|
||||
schemas += schema
|
||||
}
|
||||
// check whether this schema already recurse two times
|
||||
if(schemas.count(schema ==) > 3) {
|
||||
if(schemas.count(schema.==) > 3) {
|
||||
return JObject(Nil)
|
||||
}
|
||||
|
||||
|
||||
@ -26,6 +26,9 @@ TESOBE (http://www.tesobe.com/)
|
||||
*/
|
||||
|
||||
package code.api.util
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import scala.language.reflectiveCalls
|
||||
import bootstrap.liftweb.CustomDBVendor
|
||||
import cats.effect.IO
|
||||
import code.accountholders.AccountHolders
|
||||
@ -1772,9 +1775,9 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
|
||||
|
||||
private val reversedRequestUrl = requestUrlPartPath.reverse
|
||||
def getPathParams(url: List[String]): Map[String, String] =
|
||||
reversedRequestUrl.zip(url.reverse) collect {
|
||||
reversedRequestUrl.zip(url.reverse).collect {
|
||||
case pair @(k, _) if isPathVariable(k) => pair
|
||||
} toMap
|
||||
}.toMap
|
||||
|
||||
/**
|
||||
* According errorResponseBodies whether contains UserNotLoggedIn and UserHasMissingRoles do validation.
|
||||
@ -4031,7 +4034,7 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
|
||||
def parseDate(date: String): Option[Date] = {
|
||||
val currentSupportFormats = List(DateWithDayFormat, DateWithSecondsFormat, DateWithMsFormat, DateWithMsRollbackFormat)
|
||||
val parsePosition = new ParsePosition(0)
|
||||
currentSupportFormats.toStream.map(_.parse(date, parsePosition)).find(null !=)
|
||||
currentSupportFormats.toStream.map(_.parse(date, parsePosition)).find(null.!=)
|
||||
}
|
||||
|
||||
private def passesPsd2ServiceProviderCommon(cc: Option[CallContext], serviceProvider: String) = {
|
||||
@ -4427,7 +4430,7 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
|
||||
|
||||
private def getClassPool(classLoader: ClassLoader) = {
|
||||
import scala.concurrent.duration._
|
||||
Caching.memoizeSyncWithImMemory(Some(classLoader.toString()))(DurationInt(30) days) {
|
||||
Caching.memoizeSyncWithImMemory(Some(classLoader.toString()))(DurationInt(30).days) {
|
||||
val classPool: ClassPool = ClassPool.getDefault
|
||||
classPool.appendClassPath(new LoaderClassPath(classLoader))
|
||||
classPool
|
||||
@ -4528,7 +4531,7 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
|
||||
*/
|
||||
def getObpTrace(clazzName: String, methodName: String, signature: String, exclude: List[(String, String, String)] = Nil): List[(String, String, String)] = {
|
||||
import scala.concurrent.duration._
|
||||
Caching.memoizeSyncWithImMemory(Some(clazzName + methodName + signature))(DurationInt(30) days) {
|
||||
Caching.memoizeSyncWithImMemory(Some(clazzName + methodName + signature))(DurationInt(30).days) {
|
||||
// List:: className->methodName->signature, find all the dependent methods for one
|
||||
val methods = getDependentMethods(clazzName, methodName, signature)
|
||||
|
||||
|
||||
@ -32,11 +32,12 @@ object AfterApiAuth extends MdcLoggable{
|
||||
*/
|
||||
def innerLoginUserInitAction(authUser: Box[AuthUser]) = {
|
||||
authUser.map { u => // Init actions
|
||||
logger.info("AfterApiAuth.innerLoginUserInitAction started successfully")
|
||||
logger.debug("AfterApiAuth.innerLoginUserInitAction started successfully")
|
||||
sofitInitAction(u)
|
||||
} match {
|
||||
case Full(_) => logger.warn("AfterApiAuth.innerLoginUserInitAction completed successfully")
|
||||
case userInitActionFailure => logger.warn("AfterApiAuth.innerLoginUserInitAction: " + userInitActionFailure)
|
||||
case Full(_) => logger.debug("AfterApiAuth.innerLoginUserInitAction completed successfully")
|
||||
case Empty => // Init actions are not started at all
|
||||
case userInitActionFailure => logger.error("AfterApiAuth.innerLoginUserInitAction: " + userInitActionFailure)
|
||||
}
|
||||
}
|
||||
/**
|
||||
|
||||
@ -86,19 +86,19 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanGetCustomersAtAllBanks(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetCustomersAtAllBanks = CanGetCustomersAtAllBanks()
|
||||
|
||||
|
||||
case class CanGetCustomersMinimalAtAllBanks(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetCustomersMinimalAtAllBanks = CanGetCustomersMinimalAtAllBanks()
|
||||
|
||||
|
||||
case class CanGetCustomersAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canGetCustomersAtOneBank = CanGetCustomersAtOneBank()
|
||||
|
||||
|
||||
case class CanGetCustomersMinimalAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canGetCustomersMinimalAtOneBank = CanGetCustomersMinimalAtOneBank()
|
||||
|
||||
|
||||
case class CanGetCustomerOverview(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canGetCustomerOverview = CanGetCustomerOverview()
|
||||
|
||||
|
||||
case class CanGetCustomerOverviewFlat(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canGetCustomerOverviewFlat = CanGetCustomerOverviewFlat()
|
||||
|
||||
@ -127,7 +127,7 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanUpdateAgentStatusAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canUpdateAgentStatusAtAnyBank = CanUpdateAgentStatusAtAnyBank()
|
||||
|
||||
|
||||
case class CanUpdateAgentStatusAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canUpdateAgentStatusAtOneBank = CanUpdateAgentStatusAtOneBank()
|
||||
|
||||
@ -136,10 +136,10 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanUpdateCustomerNumber(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canUpdateCustomerNumber = CanUpdateCustomerNumber()
|
||||
|
||||
|
||||
case class CanUpdateCustomerMobilePhoneNumber(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canUpdateCustomerMobilePhoneNumber = CanUpdateCustomerMobilePhoneNumber()
|
||||
|
||||
lazy val canUpdateCustomerMobilePhoneNumber = CanUpdateCustomerMobilePhoneNumber()
|
||||
|
||||
case class CanUpdateCustomerIdentity(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canUpdateCustomerIdentity = CanUpdateCustomerIdentity()
|
||||
|
||||
@ -160,28 +160,28 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanCreateCustomerAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canCreateCustomerAtAnyBank = CanCreateCustomerAtAnyBank()
|
||||
|
||||
|
||||
case class CanGetCorrelatedUsersInfo(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canGetCorrelatedUsersInfo = CanGetCorrelatedUsersInfo()
|
||||
|
||||
lazy val canGetCorrelatedUsersInfo = CanGetCorrelatedUsersInfo()
|
||||
|
||||
case class CanGetCorrelatedUsersInfoAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetCorrelatedUsersInfoAtAnyBank = CanGetCorrelatedUsersInfoAtAnyBank()
|
||||
|
||||
case class CanCreateUserCustomerLink(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canCreateUserCustomerLink = CanCreateUserCustomerLink()
|
||||
|
||||
|
||||
case class CanDeleteUserCustomerLink(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canDeleteUserCustomerLink = CanDeleteUserCustomerLink()
|
||||
|
||||
|
||||
case class CanGetUserCustomerLink(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canGetUserCustomerLink = CanGetUserCustomerLink()
|
||||
|
||||
case class CanCreateUserCustomerLinkAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canCreateUserCustomerLinkAtAnyBank = CanCreateUserCustomerLinkAtAnyBank()
|
||||
|
||||
|
||||
case class CanGetUserCustomerLinkAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetUserCustomerLinkAtAnyBank = CanGetUserCustomerLinkAtAnyBank()
|
||||
|
||||
|
||||
case class CanDeleteUserCustomerLinkAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canDeleteUserCustomerLinkAtAnyBank = CanDeleteUserCustomerLinkAtAnyBank()
|
||||
|
||||
@ -193,10 +193,10 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanCreateAccountAttributeAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canCreateAccountAttributeAtOneBank = CanCreateAccountAttributeAtOneBank()
|
||||
|
||||
|
||||
case class CanUpdateAccountAttribute(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canUpdateAccountAttribute = CanUpdateAccountAttribute()
|
||||
|
||||
|
||||
case class CanGetAnyUser (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetAnyUser = CanGetAnyUser()
|
||||
|
||||
@ -226,10 +226,10 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanCreateEntitlementAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canCreateEntitlementAtOneBank = CanCreateEntitlementAtOneBank()
|
||||
|
||||
|
||||
case class CanCreateSystemViewPermission(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canCreateSystemViewPermission = CanCreateSystemViewPermission()
|
||||
|
||||
|
||||
case class CanDeleteSystemViewPermission(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canDeleteSystemViewPermission = CanDeleteSystemViewPermission()
|
||||
|
||||
@ -305,16 +305,16 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanGetCustomerAccountLink(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canGetCustomerAccountLink = CanGetCustomerAccountLink()
|
||||
|
||||
|
||||
case class CanGetCustomerAccountLinks(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canGetCustomerAccountLinks = CanGetCustomerAccountLinks()
|
||||
|
||||
|
||||
case class CanCreateBranch(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canCreateBranch = CanCreateBranch()
|
||||
|
||||
case class CanUpdateBranch(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canUpdateBranch = CanUpdateBranch()
|
||||
|
||||
|
||||
case class CanCreateBranchAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canCreateBranchAtAnyBank = CanCreateBranchAtAnyBank()
|
||||
|
||||
@ -325,14 +325,14 @@ object ApiRole extends MdcLoggable{
|
||||
lazy val canDeleteBranchAtAnyBank = CanDeleteBranchAtAnyBank()
|
||||
|
||||
case class CanCreateAtm(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canCreateAtm = CanCreateAtm()
|
||||
|
||||
lazy val canCreateAtm = CanCreateAtm()
|
||||
|
||||
case class CanDeleteAtm(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canDeleteAtm = CanDeleteAtm()
|
||||
|
||||
case class CanDeleteAtmAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canDeleteAtmAtAnyBank = CanDeleteAtmAtAnyBank()
|
||||
|
||||
|
||||
case class CanUpdateAtm(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canUpdateAtm = CanUpdateAtm()
|
||||
|
||||
@ -344,22 +344,22 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanCreateCounterparty(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canCreateCounterparty = CanCreateCounterparty()
|
||||
|
||||
|
||||
case class CanCreateCounterpartyAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canCreateCounterpartyAtAnyBank = CanCreateCounterpartyAtAnyBank()
|
||||
|
||||
case class CanDeleteCounterparty(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canDeleteCounterparty = CanDeleteCounterparty()
|
||||
|
||||
|
||||
case class CanDeleteCounterpartyAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canDeleteCounterpartyAtAnyBank = CanDeleteCounterpartyAtAnyBank()
|
||||
|
||||
|
||||
case class CanGetCounterparty(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canGetCounterparty = CanGetCounterparty()
|
||||
|
||||
lazy val canGetCounterparty = CanGetCounterparty()
|
||||
|
||||
case class CanGetCounterpartiesAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetCounterpartiesAtAnyBank = CanGetCounterpartiesAtAnyBank()
|
||||
|
||||
|
||||
case class CanGetCounterparties(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canGetCounterparties = CanGetCounterparties()
|
||||
|
||||
@ -368,10 +368,10 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanGetAllApiCollections(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetAllApiCollections = CanGetAllApiCollections()
|
||||
|
||||
|
||||
case class CanGetCounterpartyAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetCounterpartyAtAnyBank = CanGetCounterpartyAtAnyBank()
|
||||
|
||||
|
||||
case class CanCreateProduct(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canCreateProduct = CanCreateProduct()
|
||||
|
||||
@ -395,7 +395,7 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanReadMetrics (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canReadMetrics = CanReadMetrics()
|
||||
|
||||
|
||||
case class CanGetMetricsAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canGetMetricsAtOneBank = CanGetMetricsAtOneBank()
|
||||
|
||||
@ -419,19 +419,19 @@ object ApiRole extends MdcLoggable{
|
||||
case class CanDeleteCacheKey(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canDeleteCacheKey = CanDeleteCacheKey()
|
||||
lazy val canGetConfig = CanGetConfig()
|
||||
|
||||
|
||||
case class CanGetAdapterInfo(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetAdapterInfo = CanGetAdapterInfo()
|
||||
|
||||
|
||||
case class CanGetAdapterInfoAtOneBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetAdapterInfoAtOneBank = CanGetAdapterInfoAtOneBank()
|
||||
|
||||
|
||||
case class CanGetDatabaseInfo(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetDatabaseInfo = CanGetDatabaseInfo()
|
||||
|
||||
|
||||
case class CanGetMigrations(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetMigrations = CanGetMigrations()
|
||||
|
||||
|
||||
case class CanGetCallContext(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetCallContext = CanGetCallContext()
|
||||
|
||||
@ -446,10 +446,10 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanUseAccountFirehoseAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canUseAccountFirehoseAtAnyBank = CanUseAccountFirehoseAtAnyBank()
|
||||
|
||||
|
||||
case class CanUseAccountFirehose(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canUseAccountFirehose = CanUseAccountFirehose()
|
||||
|
||||
|
||||
case class CanUseCustomerFirehoseAtAnyBank(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canUseCustomerFirehoseAtAnyBank = CanUseCustomerFirehoseAtAnyBank()
|
||||
|
||||
@ -467,38 +467,38 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanUnlockUser (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canUnlockUser = CanUnlockUser()
|
||||
|
||||
|
||||
case class CanLockUser (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canLockUser = CanLockUser()
|
||||
|
||||
|
||||
case class CanDeleteUser (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canDeleteUser = CanDeleteUser()
|
||||
|
||||
case class CanValidateUser (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canValidateUser = CanValidateUser()
|
||||
|
||||
|
||||
case class CanGetUsersWithAttributes (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetUsersWithAttributes = CanGetUsersWithAttributes()
|
||||
|
||||
|
||||
case class CanCreateNonPersonalUserAttribute (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canCreateNonPersonalUserAttribute = CanCreateNonPersonalUserAttribute()
|
||||
|
||||
|
||||
case class CanGetNonPersonalUserAttributes (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetNonPersonalUserAttributes = CanGetNonPersonalUserAttributes()
|
||||
|
||||
|
||||
case class CanDeleteNonPersonalUserAttribute (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canDeleteNonPersonalUserAttribute = CanDeleteNonPersonalUserAttribute()
|
||||
|
||||
// v6.0.0 User Attribute roles (consistent naming - "user attributes" means non-personal)
|
||||
case class CanCreateUserAttribute (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canCreateUserAttribute = CanCreateUserAttribute()
|
||||
|
||||
|
||||
case class CanGetUserAttributes (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetUserAttributes = CanGetUserAttributes()
|
||||
|
||||
|
||||
case class CanUpdateUserAttribute (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canUpdateUserAttribute = CanUpdateUserAttribute()
|
||||
|
||||
|
||||
case class CanDeleteUserAttribute (requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canDeleteUserAttribute = CanDeleteUserAttribute()
|
||||
|
||||
@ -510,7 +510,7 @@ object ApiRole extends MdcLoggable{
|
||||
|
||||
case class CanCreateRateLimits(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canCreateRateLimits = CanCreateRateLimits()
|
||||
|
||||
|
||||
case class CanDeleteRateLimits(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canDeleteRateLimits = CanDeleteRateLimits()
|
||||
|
||||
@ -1173,17 +1173,17 @@ object ApiRole extends MdcLoggable{
|
||||
lazy val canCreateGroupAtAllBanks = CanCreateGroupAtAllBanks()
|
||||
case class CanCreateGroupAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canCreateGroupAtOneBank = CanCreateGroupAtOneBank()
|
||||
|
||||
|
||||
case class CanUpdateGroupAtAllBanks(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canUpdateGroupAtAllBanks = CanUpdateGroupAtAllBanks()
|
||||
case class CanUpdateGroupAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canUpdateGroupAtOneBank = CanUpdateGroupAtOneBank()
|
||||
|
||||
|
||||
case class CanDeleteGroupAtAllBanks(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canDeleteGroupAtAllBanks = CanDeleteGroupAtAllBanks()
|
||||
case class CanDeleteGroupAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canDeleteGroupAtOneBank = CanDeleteGroupAtOneBank()
|
||||
|
||||
|
||||
case class CanGetGroupsAtAllBanks(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetGroupsAtAllBanks = CanGetGroupsAtAllBanks()
|
||||
case class CanGetGroupsAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
@ -1194,12 +1194,12 @@ object ApiRole extends MdcLoggable{
|
||||
lazy val canAddUserToGroupAtAllBanks = CanAddUserToGroupAtAllBanks()
|
||||
case class CanAddUserToGroupAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canAddUserToGroupAtOneBank = CanAddUserToGroupAtOneBank()
|
||||
|
||||
|
||||
case class CanRemoveUserFromGroupAtAllBanks(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canRemoveUserFromGroupAtAllBanks = CanRemoveUserFromGroupAtAllBanks()
|
||||
case class CanRemoveUserFromGroupAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
lazy val canRemoveUserFromGroupAtOneBank = CanRemoveUserFromGroupAtOneBank()
|
||||
|
||||
|
||||
case class CanGetUserGroupMembershipsAtAllBanks(requiresBankId: Boolean = false) extends ApiRole
|
||||
lazy val canGetUserGroupMembershipsAtAllBanks = CanGetUserGroupMembershipsAtAllBanks()
|
||||
case class CanGetUserGroupMembershipsAtOneBank(requiresBankId: Boolean = true) extends ApiRole
|
||||
@ -1282,15 +1282,15 @@ object Util {
|
||||
"CanSetCallLimits",
|
||||
"CanDeleteRateLimits"
|
||||
)
|
||||
|
||||
|
||||
val allowed = allowedPrefixes ::: allowedExistingNames
|
||||
|
||||
source.collect {
|
||||
case obj: Defn.Object if obj.name.value == "ApiRole" =>
|
||||
obj.collect {
|
||||
case c: Defn.Class if allowed.exists(i => c.name.syntax.startsWith(i)) == true =>
|
||||
case c: Defn.Class if allowed.exists(i => c.name.syntax.startsWith(i)) == true =>
|
||||
// OK
|
||||
case c: Defn.Class if allowed.exists(i => c.name.syntax.startsWith(i)) == false =>
|
||||
case c: Defn.Class if allowed.exists(i => c.name.syntax.startsWith(i)) == false =>
|
||||
println("INCORRECT - " + c)
|
||||
}
|
||||
}
|
||||
@ -1300,4 +1300,4 @@ object Util {
|
||||
checkWrongDefinedNames
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -3160,7 +3160,7 @@ object NewStyle extends MdcLoggable{
|
||||
|
||||
var cacheKey = (randomUUID().toString, randomUUID().toString, randomUUID().toString)
|
||||
CacheKeyFromArguments.buildCacheKey {
|
||||
Caching.memoizeSyncWithProvider(Some(cacheKey.toString()))(methodRoutingTTL second) {
|
||||
Caching.memoizeSyncWithProvider(Some(cacheKey.toString()))(methodRoutingTTL.second) {
|
||||
MethodRoutingProvider.connectorMethodProvider.vend.getMethodRoutings(methodName, isBankIdExactMatch, bankIdPattern)
|
||||
}
|
||||
}
|
||||
@ -3213,7 +3213,7 @@ object NewStyle extends MdcLoggable{
|
||||
|
||||
var cacheKey = (randomUUID().toString, randomUUID().toString, randomUUID().toString)
|
||||
CacheKeyFromArguments.buildCacheKey {
|
||||
Caching.memoizeSyncWithProvider(Some(cacheKey.toString()))(endpointMappingTTL second) {
|
||||
Caching.memoizeSyncWithProvider(Some(cacheKey.toString()))(endpointMappingTTL.second) {
|
||||
{(EndpointMappingProvider.endpointMappingProvider.vend.getAllEndpointMappings(bankId), callContext)}
|
||||
}
|
||||
}
|
||||
@ -3327,7 +3327,7 @@ object NewStyle extends MdcLoggable{
|
||||
|
||||
var cacheKey = (randomUUID().toString, randomUUID().toString, randomUUID().toString)
|
||||
CacheKeyFromArguments.buildCacheKey {
|
||||
Caching.memoizeSyncWithProvider(Some(cacheKey.toString()))(dynamicEntityTTL second) {
|
||||
Caching.memoizeSyncWithProvider(Some(cacheKey.toString()))(dynamicEntityTTL.second) {
|
||||
DynamicEntityProvider.connectorMethodProvider.vend.getDynamicEntities(bankId, returnBothBankAndSystemLevel)
|
||||
}
|
||||
}
|
||||
@ -3338,7 +3338,7 @@ object NewStyle extends MdcLoggable{
|
||||
|
||||
var cacheKey = (randomUUID().toString, randomUUID().toString, randomUUID().toString)
|
||||
CacheKeyFromArguments.buildCacheKey {
|
||||
Caching.memoizeSyncWithProvider(Some(cacheKey.toString()))(dynamicEntityTTL second) {
|
||||
Caching.memoizeSyncWithProvider(Some(cacheKey.toString()))(dynamicEntityTTL.second) {
|
||||
DynamicEntityProvider.connectorMethodProvider.vend.getDynamicEntitiesByUserId(userId: String)
|
||||
}
|
||||
}
|
||||
|
||||
@ -76,7 +76,7 @@ trait APIMethods121 {
|
||||
|
||||
def checkIfLocationPossible(lat:Double,lon:Double) : Box[Unit] = {
|
||||
if(scala.math.abs(lat) <= 90 & scala.math.abs(lon) <= 180)
|
||||
Full()
|
||||
Full(())
|
||||
else
|
||||
Failure("Coordinates not possible")
|
||||
}
|
||||
@ -132,7 +132,7 @@ trait APIMethods121 {
|
||||
cc =>
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
for {
|
||||
_ <- Future() // Just start async call
|
||||
_ <- Future(()) // Just start async call
|
||||
} yield {
|
||||
(JSONFactory.getApiInfoJSON(apiVersion,apiVersionStatus), HttpCode.`200`(cc.callContext))
|
||||
}
|
||||
|
||||
@ -26,6 +26,8 @@ TESOBE (http://www.tesobe.com/)
|
||||
*/
|
||||
package code.api.v1_2_1
|
||||
|
||||
import scala.language.implicitConversions
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.OBPRestHelper
|
||||
import code.api.util.APIUtil.{OBPEndpoint, getAllowedEndpoints}
|
||||
import com.openbankproject.commons.util.{ApiVersion,ApiVersionStatus}
|
||||
@ -40,7 +42,7 @@ object OBPAPI1_2_1 extends OBPRestHelper with APIMethods121 with MdcLoggable wit
|
||||
val version : ApiVersion = ApiVersion.v1_2_1 // "1.2.1"
|
||||
val versionStatus = ApiVersionStatus.DEPRECATED.toString
|
||||
|
||||
lazy val endpointsOf1_2_1 = List(
|
||||
lazy val endpointsOf1_2_1: Seq[OBPEndpoint] = List(
|
||||
Implementations1_2_1.root,
|
||||
Implementations1_2_1.getBanks,
|
||||
Implementations1_2_1.bankById,
|
||||
|
||||
@ -50,7 +50,7 @@ trait APIMethods130 {
|
||||
cc =>
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
for {
|
||||
_ <- Future() // Just start async call
|
||||
_ <- Future(()) // Just start async call
|
||||
} yield {
|
||||
(JSONFactory.getApiInfoJSON(OBPAPI1_3_0.version, OBPAPI1_3_0.versionStatus), HttpCode.`200`(cc.callContext))
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.v1_3_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.OBPRestHelper
|
||||
import code.api.util.APIUtil.{OBPEndpoint, getAllowedEndpoints}
|
||||
import com.openbankproject.commons.util.{ApiVersion,ApiVersionStatus}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.v1_4_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.Constant._
|
||||
import code.api.util.ApiRole._
|
||||
import code.api.util.ApiTag._
|
||||
@ -84,7 +85,7 @@ trait APIMethods140 extends MdcLoggable with APIMethods130 with APIMethods121{
|
||||
cc =>
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
for {
|
||||
_ <- Future() // Just start async call
|
||||
_ <- Future(()) // Just start async call
|
||||
} yield {
|
||||
(JSONFactory.getApiInfoJSON(OBPAPI1_4_0.version, OBPAPI1_4_0.versionStatus), HttpCode.`200`(cc.callContext))
|
||||
}
|
||||
|
||||
@ -530,7 +530,7 @@ object JSONFactory1_4_0 extends MdcLoggable{
|
||||
jsonResponseBodyFieldsI18n:String
|
||||
): ResourceDocJson = {
|
||||
val cacheKey = LOCALISED_RESOURCE_DOC_PREFIX + s"operationId:${operationId}-locale:$locale- isVersion4OrHigher:$isVersion4OrHigher".intern()
|
||||
Caching.memoizeSyncWithImMemory(Some(cacheKey))(CREATE_LOCALISED_RESOURCE_DOC_JSON_TTL seconds) {
|
||||
Caching.memoizeSyncWithImMemory(Some(cacheKey))(CREATE_LOCALISED_RESOURCE_DOC_JSON_TTL.seconds) {
|
||||
val fieldsDescription =
|
||||
if (resourceDocUpdatedTags.tags.toString.contains("Dynamic-Entity")
|
||||
|| resourceDocUpdatedTags.tags.toString.contains("Dynamic-Endpoint")
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.v1_4_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.OBPRestHelper
|
||||
import code.api.util.APIUtil.{OBPEndpoint, getAllowedEndpoints}
|
||||
import com.openbankproject.commons.util.{ApiVersion,ApiVersionStatus}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.v2_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.TransactionTypes.TransactionType
|
||||
import code.api.APIFailureNewStyle
|
||||
import code.api.Constant._
|
||||
@ -147,7 +148,7 @@ trait APIMethods200 {
|
||||
cc =>
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
for {
|
||||
_ <- Future() // Just start async call
|
||||
_ <- Future(()) // Just start async call
|
||||
} yield {
|
||||
(JSONFactory121.getApiInfoJSON(OBPAPI2_0_0.version, OBPAPI2_0_0.versionStatus), HttpCode.`200`(cc.callContext))
|
||||
}
|
||||
|
||||
@ -26,6 +26,7 @@ TESOBE (http://www.tesobe.com/)
|
||||
*/
|
||||
package code.api.v2_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.OBPRestHelper
|
||||
import code.api.util.APIUtil.{OBPEndpoint, getAllowedEndpoints}
|
||||
import com.openbankproject.commons.util.{ApiVersion,ApiVersionStatus}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.v2_1_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.TransactionTypes.TransactionType
|
||||
import code.api.Constant.CAN_SEE_TRANSACTION_REQUESTS
|
||||
import code.api.util.ApiTag._
|
||||
@ -91,7 +92,7 @@ trait APIMethods210 {
|
||||
cc =>
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
for {
|
||||
_ <- Future() // Just start async call
|
||||
_ <- Future(()) // Just start async call
|
||||
} yield {
|
||||
(JSONFactory.getApiInfoJSON(OBPAPI2_1_0.version, OBPAPI2_1_0.versionStatus), HttpCode.`200`(cc.callContext))
|
||||
}
|
||||
|
||||
@ -26,6 +26,7 @@ TESOBE (http://www.tesobe.com/)
|
||||
*/
|
||||
package code.api.v2_1_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.OBPRestHelper
|
||||
import code.api.util.APIUtil.{OBPEndpoint, getAllowedEndpoints}
|
||||
import code.api.util.{APIUtil, VersionedOBPApis}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.v2_2_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.Constant._
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON._
|
||||
import code.api.util.APIUtil._
|
||||
@ -79,7 +80,7 @@ trait APIMethods220 {
|
||||
cc =>
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
for {
|
||||
_ <- Future() // Just start async call
|
||||
_ <- Future(()) // Just start async call
|
||||
} yield {
|
||||
(JSONFactory.getApiInfoJSON(OBPAPI2_2_0.version, OBPAPI2_2_0.versionStatus), HttpCode.`200`(cc.callContext))
|
||||
}
|
||||
@ -535,14 +536,14 @@ trait APIMethods220 {
|
||||
_ <- entitlementsByBank.filter(_.roleName == CanCreateEntitlementAtOneBank.toString()).size > 0 match {
|
||||
case true =>
|
||||
// Already has entitlement
|
||||
Full()
|
||||
Full(())
|
||||
case false =>
|
||||
Full(Entitlement.entitlement.vend.addEntitlement(bank.id, u.userId, CanCreateEntitlementAtOneBank.toString()))
|
||||
}
|
||||
_ <- entitlementsByBank.filter(_.roleName == CanReadDynamicResourceDocsAtOneBank.toString()).size > 0 match {
|
||||
case true =>
|
||||
// Already has entitlement
|
||||
Full()
|
||||
Full(())
|
||||
case false =>
|
||||
Full(Entitlement.entitlement.vend.addEntitlement(bank.id, u.userId, CanReadDynamicResourceDocsAtOneBank.toString()))
|
||||
}
|
||||
@ -1246,7 +1247,7 @@ trait APIMethods220 {
|
||||
(account, callContext)
|
||||
}
|
||||
}else
|
||||
Future{(Full(), Some(cc))}
|
||||
Future{(Full(()), Some(cc))}
|
||||
|
||||
|
||||
otherAccountRoutingSchemeOBPFormat = if(postJson.other_account_routing_scheme.equalsIgnoreCase("AccountNo")) "ACCOUNT_NUMBER" else StringHelpers.snakify(postJson.other_account_routing_scheme).toUpperCase
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
|
||||
package code.api.v2_2_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.OBPRestHelper
|
||||
import code.api.util.APIUtil.{OBPEndpoint, getAllowedEndpoints}
|
||||
import code.api.util.{APIUtil, VersionedOBPApis}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.v3_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.accountattribute.AccountAttributeX
|
||||
import code.api.Constant._
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON
|
||||
@ -84,7 +85,7 @@ trait APIMethods300 {
|
||||
cc =>
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
for {
|
||||
_ <- Future() // Just start async call
|
||||
_ <- Future(()) // Just start async call
|
||||
} yield {
|
||||
(JSONFactory.getApiInfoJSON(OBPAPI3_0_0.version, OBPAPI3_0_0.versionStatus), HttpCode.`200`(cc.callContext))
|
||||
}
|
||||
@ -2118,7 +2119,7 @@ trait APIMethods300 {
|
||||
hasCanReadGlossaryRole
|
||||
}
|
||||
} else {
|
||||
Future{Full()}
|
||||
Future{Full(())}
|
||||
}
|
||||
json = JSONFactory300.createGlossaryItemsJsonV300(getGlossaryItems)
|
||||
} yield {
|
||||
|
||||
@ -26,6 +26,7 @@ TESOBE (http://www.tesobe.com/)
|
||||
*/
|
||||
package code.api.v3_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.OBPRestHelper
|
||||
import code.api.util.APIUtil.{OBPEndpoint, getAllowedEndpoints}
|
||||
import com.openbankproject.commons.util.{ApiVersion,ApiVersionStatus}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.v3_1_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.Constant
|
||||
import code.api.Constant._
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON._
|
||||
@ -101,7 +102,7 @@ trait APIMethods310 {
|
||||
cc =>
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
for {
|
||||
_ <- Future() // Just start async call
|
||||
_ <- Future(()) // Just start async call
|
||||
} yield {
|
||||
(JSONFactory.getApiInfoJSON(OBPAPI3_1_0.version, OBPAPI3_1_0.versionStatus), HttpCode.`200`(cc.callContext))
|
||||
}
|
||||
|
||||
@ -1075,7 +1075,7 @@ object JSONFactory310{
|
||||
def createEntitlementJsonsV310(tr: List[Entitlement]) = {
|
||||
val idToUser: Map[String, Box[String]] = tr.map(_.userId).distinct.map {
|
||||
userId => (userId, UserX.findByUserId(userId).map(_.name))
|
||||
} toMap;
|
||||
}.toMap;
|
||||
|
||||
EntitlementJSonsV310(
|
||||
tr.map(e =>
|
||||
|
||||
@ -26,6 +26,7 @@ TESOBE (http://www.tesobe.com/)
|
||||
*/
|
||||
package code.api.v3_1_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.api.OBPRestHelper
|
||||
import code.api.util.APIUtil.{OBPEndpoint, getAllowedEndpoints}
|
||||
import com.openbankproject.commons.util.{ApiVersion,ApiVersionStatus}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package code.api.v4_0_0
|
||||
|
||||
import scala.language.reflectiveCalls
|
||||
import code.DynamicData.DynamicData
|
||||
import code.DynamicEndpoint.DynamicEndpointSwagger
|
||||
import code.accountattribute.AccountAttributeX
|
||||
@ -1546,7 +1547,7 @@ trait APIMethods400 extends MdcLoggable {
|
||||
value = rejectReasonCode,
|
||||
callContext = callContext
|
||||
)
|
||||
} else Future.successful()
|
||||
} else Future.successful(())
|
||||
rejectAdditionalInformation =
|
||||
challengeAnswerJson.additional_information.getOrElse("")
|
||||
_ <-
|
||||
@ -1562,7 +1563,7 @@ trait APIMethods400 extends MdcLoggable {
|
||||
value = rejectAdditionalInformation,
|
||||
callContext = callContext
|
||||
)
|
||||
} else Future.successful()
|
||||
} else Future.successful(())
|
||||
_ <- NewStyle.function.notifyTransactionRequest(
|
||||
fromAccount,
|
||||
toAccount,
|
||||
@ -3371,7 +3372,7 @@ trait APIMethods400 extends MdcLoggable {
|
||||
case (Nil | "root" :: Nil) JsonGet _ => { cc =>
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
for {
|
||||
_ <- Future() // Just start async call
|
||||
_ <- Future(()) // Just start async call
|
||||
} yield {
|
||||
(
|
||||
JSONFactory400.getApiInfoJSON(
|
||||
@ -3405,7 +3406,7 @@ trait APIMethods400 extends MdcLoggable {
|
||||
case "development" :: "call_context" :: Nil JsonGet _ => { cc =>
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
for {
|
||||
_ <- Future() // Just start async call
|
||||
_ <- Future(()) // Just start async call
|
||||
} yield {
|
||||
(cc.callContext, HttpCode.`200`(cc.callContext))
|
||||
}
|
||||
@ -3434,7 +3435,7 @@ trait APIMethods400 extends MdcLoggable {
|
||||
cc =>
|
||||
implicit val ec = EndpointContext(Some(cc))
|
||||
for {
|
||||
_ <- Future() // Just start async call
|
||||
_ <- Future(()) // Just start async call
|
||||
} yield {
|
||||
(cc.callContext, HttpCode.`200`(cc.callContext))
|
||||
}
|
||||
@ -10457,7 +10458,7 @@ trait APIMethods400 extends MdcLoggable {
|
||||
(account, callContext)
|
||||
}
|
||||
} else
|
||||
Future { (Full(), Some(cc)) }
|
||||
Future { (Full(()), Some(cc)) }
|
||||
|
||||
otherAccountRoutingSchemeOBPFormat =
|
||||
if (
|
||||
@ -10810,7 +10811,7 @@ trait APIMethods400 extends MdcLoggable {
|
||||
(account, callContext)
|
||||
}
|
||||
} else
|
||||
Future { (Full(), Some(cc)) }
|
||||
Future { (Full(()), Some(cc)) }
|
||||
|
||||
otherAccountRoutingSchemeOBPFormat =
|
||||
if (
|
||||
@ -12872,7 +12873,7 @@ trait APIMethods400 extends MdcLoggable {
|
||||
|
||||
// auth type validation related endpoints
|
||||
private val allowedAuthTypes =
|
||||
AuthenticationType.values.filterNot(AuthenticationType.Anonymous ==)
|
||||
AuthenticationType.values.filterNot(AuthenticationType.Anonymous.==)
|
||||
staticResourceDocs += ResourceDoc(
|
||||
createAuthenticationTypeValidation,
|
||||
implementedInApiVersion,
|
||||
@ -16724,7 +16725,7 @@ trait APIMethods400 extends MdcLoggable {
|
||||
s"$EntitlementAlreadyExists user_id($userId) ${duplicatedRoles.mkString(",")}"
|
||||
Helper.booleanToFuture(errorMessages, cc = callContext) { false }
|
||||
} else
|
||||
Future.successful(Full())
|
||||
Future.successful(Full(()))
|
||||
}
|
||||
|
||||
/** This method will check all the roles the loggedIn user already has and the
|
||||
@ -16758,7 +16759,7 @@ trait APIMethods400 extends MdcLoggable {
|
||||
.mkString(",")}"
|
||||
Helper.booleanToFuture(errorMessages, cc = callContext) { false }
|
||||
} else
|
||||
Future.successful(Full())
|
||||
Future.successful(Full(()))
|
||||
}
|
||||
|
||||
private def checkRoleBankIdMapping(
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user