libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit ea3ceef3740ce30400bc20c7aae09b25d3e0f0c3
parent d2206434da014de23d8d96109882d059a60a0cdc
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Thu,  7 Sep 2023 15:24:27 +0200

sandbox -> bank

Diffstat:
Abank/README | 25+++++++++++++++++++++++++
Abank/build.gradle | 96+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsandbox/src/main/kotlin/tech/libeufin/sandbox/CircuitApi.kt -> bank/src/main/kotlin/tech/libeufin/bank/CircuitApi.kt | 0
Rsandbox/src/main/kotlin/tech/libeufin/sandbox/ConversionService.kt -> bank/src/main/kotlin/tech/libeufin/bank/ConversionService.kt | 0
Rsandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt -> bank/src/main/kotlin/tech/libeufin/bank/DB.kt | 0
Rsandbox/src/main/kotlin/tech/libeufin/sandbox/Database.kt -> bank/src/main/kotlin/tech/libeufin/bank/Database.kt | 0
Rsandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt -> bank/src/main/kotlin/tech/libeufin/bank/EbicsProtocolBackend.kt | 0
Rsandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt -> bank/src/main/kotlin/tech/libeufin/bank/Helpers.kt | 0
Rsandbox/src/main/kotlin/tech/libeufin/sandbox/JSON.kt -> bank/src/main/kotlin/tech/libeufin/bank/JSON.kt | 0
Rsandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt -> bank/src/main/kotlin/tech/libeufin/bank/Main.kt | 0
Rsandbox/src/main/kotlin/tech/libeufin/sandbox/XMLEbicsConverter.kt -> bank/src/main/kotlin/tech/libeufin/bank/XMLEbicsConverter.kt | 0
Rsandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt -> bank/src/main/kotlin/tech/libeufin/bank/bankAccount.kt | 0
Rsandbox/src/main/resources/logback.xml -> bank/src/main/resources/logback.xml | 0
Rsandbox/src/main/resources/static/README.txt -> bank/src/main/resources/static/README.txt | 0
Rsandbox/src/test/kotlin/BalanceTest.kt -> bank/src/test/kotlin/BalanceTest.kt | 0
Rsandbox/src/test/kotlin/DBTest.kt -> bank/src/test/kotlin/DBTest.kt | 0
Rsandbox/src/test/kotlin/DatabaseTest.kt -> bank/src/test/kotlin/DatabaseTest.kt | 0
Rsandbox/src/test/kotlin/EbicsErrorTest.kt -> bank/src/test/kotlin/EbicsErrorTest.kt | 0
Rsandbox/src/test/kotlin/StringsTest.kt -> bank/src/test/kotlin/StringsTest.kt | 0
Dsandbox/README | 21---------------------
Dsandbox/build.gradle | 96-------------------------------------------------------------------------------
21 files changed, 121 insertions(+), 117 deletions(-)

diff --git a/bank/README b/bank/README @@ -0,0 +1,25 @@ +Description +=========== + +The Libeufin bank implements a simple core banking system with +account and REST APIs, including REST APIs for a Web interface +and REST APIs to interact with GNU Taler components. + +It also will provide a server side implementation of multiple +banking protocols currently used in the European Union. Notably, the +EBICS, FinTS, and the major protocols that banks will employ to respect +the PSD2 regulation: https://ec.europa.eu/info/law/payment-services-psd-2-directive-eu-2015-2366_en + + +Running the Bank +=================== + +Run the Bank with the following command + +$ cd <this repository> +$ ./gradlew bank:run --console=plain --args=serve [--db-name=<my-db>] + +Documentation +============= + +See https://docs.taler.net/ for the documentation. diff --git a/bank/build.gradle b/bank/build.gradle @@ -0,0 +1,95 @@ +plugins { + id 'kotlin' + id 'java' + id 'application' + id 'org.jetbrains.kotlin.jvm' + id "com.github.johnrengelman.shadow" version "5.2.0" +} + +sourceCompatibility = "11" +targetCompatibility = "11" +version = rootProject.version + +compileKotlin { + kotlinOptions { + jvmTarget = "11" + } +} + +compileTestKotlin { + kotlinOptions { + jvmTarget = "11" + } +} + +task installToPrefix(type: Copy) { + dependsOn(installShadowDist) + from("build/install/bank-shadow") { + include("**/libeufin-bank") + include("**/*.jar") + } + /** + * Reads from command line -Pkey=value options, + * with a default (/tmp) if the key is not found. + * + * project.findProperty('prefix') ?: '/tmp' + */ + into "${project.findProperty('prefix') ?: '/tmp'}" +} +apply plugin: 'kotlin-kapt' + +sourceSets { + main.java.srcDirs = ['src/main/kotlin'] +} + +dependencies { + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt' + implementation "com.hubspot.jinjava:jinjava:2.5.9" + implementation 'ch.qos.logback:logback-classic:1.4.5' + implementation project(":util") + + // XML: + implementation "javax.xml.bind:jaxb-api:2.3.0" + implementation "org.glassfish.jaxb:jaxb-runtime:2.3.1" + implementation 'org.apache.santuario:xmlsec:2.2.2' + + implementation group: 'org.bouncycastle', name: 'bcprov-jdk16', version: '1.46' + implementation group: 'org.xerial', name: 'sqlite-jdbc', version: '3.36.0.1' + implementation 'org.postgresql:postgresql:42.2.23.jre7' + implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.21' + implementation('com.github.ajalt:clikt:2.8.0') + implementation "org.jetbrains.exposed:exposed-core:$exposed_version" + implementation "org.jetbrains.exposed:exposed-dao:$exposed_version" + implementation "org.jetbrains.exposed:exposed-jdbc:$exposed_version" + + implementation "io.ktor:ktor-server-core:$ktor_version" + implementation "io.ktor:ktor-server-call-logging:$ktor_version" + implementation "io.ktor:ktor-server-cors:$ktor_version" + implementation "io.ktor:ktor-server-content-negotiation:$ktor_version" + implementation "io.ktor:ktor-server-status-pages:$ktor_version" + implementation "io.ktor:ktor-client-apache:$ktor_version" + implementation "io.ktor:ktor-client-auth:$ktor_version" + implementation "io.ktor:ktor-server-netty:$ktor_version" + implementation "io.ktor:ktor-server-test-host:$ktor_version" + implementation "io.ktor:ktor-auth:$ktor_auth_version" + implementation "io.ktor:ktor-serialization-jackson:$ktor_version" + + testImplementation 'org.jetbrains.kotlin:kotlin-test-junit:1.5.21' + testImplementation 'org.jetbrains.kotlin:kotlin-test:1.5.21' + testImplementation group: "junit", name: "junit", version: '4.13.2' + + // UNIX domain sockets support (used to connect to PostgreSQL) + implementation 'com.kohlschutter.junixsocket:junixsocket-core:2.6.2' +} + +application { + mainClassName = "tech.libeufin.bank.MainKt" + applicationName = "libeufin-bank" + applicationDefaultJvmArgs = ['-Djava.net.preferIPv6Addresses=true'] +} + +jar { + manifest { + attributes "Main-Class": "tech.libeufin.bank.MainKt" + } +} +\ No newline at end of file diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/CircuitApi.kt b/bank/src/main/kotlin/tech/libeufin/bank/CircuitApi.kt diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/ConversionService.kt b/bank/src/main/kotlin/tech/libeufin/bank/ConversionService.kt diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt b/bank/src/main/kotlin/tech/libeufin/bank/DB.kt diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Database.kt b/bank/src/main/kotlin/tech/libeufin/bank/Database.kt diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt b/bank/src/main/kotlin/tech/libeufin/bank/EbicsProtocolBackend.kt diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt b/bank/src/main/kotlin/tech/libeufin/bank/Helpers.kt diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/JSON.kt b/bank/src/main/kotlin/tech/libeufin/bank/JSON.kt diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt b/bank/src/main/kotlin/tech/libeufin/bank/Main.kt diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/XMLEbicsConverter.kt b/bank/src/main/kotlin/tech/libeufin/bank/XMLEbicsConverter.kt diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt b/bank/src/main/kotlin/tech/libeufin/bank/bankAccount.kt diff --git a/sandbox/src/main/resources/logback.xml b/bank/src/main/resources/logback.xml diff --git a/sandbox/src/main/resources/static/README.txt b/bank/src/main/resources/static/README.txt diff --git a/sandbox/src/test/kotlin/BalanceTest.kt b/bank/src/test/kotlin/BalanceTest.kt diff --git a/sandbox/src/test/kotlin/DBTest.kt b/bank/src/test/kotlin/DBTest.kt diff --git a/sandbox/src/test/kotlin/DatabaseTest.kt b/bank/src/test/kotlin/DatabaseTest.kt diff --git a/sandbox/src/test/kotlin/EbicsErrorTest.kt b/bank/src/test/kotlin/EbicsErrorTest.kt diff --git a/sandbox/src/test/kotlin/StringsTest.kt b/bank/src/test/kotlin/StringsTest.kt diff --git a/sandbox/README b/sandbox/README @@ -1,21 +0,0 @@ -Description -=========== - -The Libeufin Sandbox aims at implementing the server side of multiple -banking protocols currently used in the European Union. Notably, the -EBICS, FinTS, and the major protocols that banks will employ to respect -the PSD2 regulation: https://ec.europa.eu/info/law/payment-services-psd-2-directive-eu-2015-2366_en - - -Running the sandbox -=================== - -Run the sandbox with the following command - -$ cd <this repository> -$ ./gradlew sandbox:run --console=plain --args=serve [--db-name=<my-db>] - -Documentation -============= - -See https://docs.libeufin.tech/ for the documentation. diff --git a/sandbox/build.gradle b/sandbox/build.gradle @@ -1,95 +0,0 @@ -plugins { - id 'kotlin' - id 'java' - id 'application' - id 'org.jetbrains.kotlin.jvm' - id "com.github.johnrengelman.shadow" version "5.2.0" -} - -sourceCompatibility = "11" -targetCompatibility = "11" -version = rootProject.version - -compileKotlin { - kotlinOptions { - jvmTarget = "11" - } -} - -compileTestKotlin { - kotlinOptions { - jvmTarget = "11" - } -} - -task installToPrefix(type: Copy) { - dependsOn(installShadowDist) - from("build/install/sandbox-shadow") { - include("**/libeufin-sandbox") - include("**/*.jar") - } - /** - * Reads from command line -Pkey=value options, - * with a default (/tmp) if the key is not found. - * - * project.findProperty('prefix') ?: '/tmp' - */ - into "${project.findProperty('prefix') ?: '/tmp'}" -} -apply plugin: 'kotlin-kapt' - -sourceSets { - main.java.srcDirs = ['src/main/kotlin'] -} - -dependencies { - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt' - implementation "com.hubspot.jinjava:jinjava:2.5.9" - implementation 'ch.qos.logback:logback-classic:1.4.5' - implementation project(":util") - - // XML: - implementation "javax.xml.bind:jaxb-api:2.3.0" - implementation "org.glassfish.jaxb:jaxb-runtime:2.3.1" - implementation 'org.apache.santuario:xmlsec:2.2.2' - - implementation group: 'org.bouncycastle', name: 'bcprov-jdk16', version: '1.46' - implementation group: 'org.xerial', name: 'sqlite-jdbc', version: '3.36.0.1' - implementation 'org.postgresql:postgresql:42.2.23.jre7' - implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.21' - implementation('com.github.ajalt:clikt:2.8.0') - implementation "org.jetbrains.exposed:exposed-core:$exposed_version" - implementation "org.jetbrains.exposed:exposed-dao:$exposed_version" - implementation "org.jetbrains.exposed:exposed-jdbc:$exposed_version" - - implementation "io.ktor:ktor-server-core:$ktor_version" - implementation "io.ktor:ktor-server-call-logging:$ktor_version" - implementation "io.ktor:ktor-server-cors:$ktor_version" - implementation "io.ktor:ktor-server-content-negotiation:$ktor_version" - implementation "io.ktor:ktor-server-status-pages:$ktor_version" - implementation "io.ktor:ktor-client-apache:$ktor_version" - implementation "io.ktor:ktor-client-auth:$ktor_version" - implementation "io.ktor:ktor-server-netty:$ktor_version" - implementation "io.ktor:ktor-server-test-host:$ktor_version" - implementation "io.ktor:ktor-auth:$ktor_auth_version" - implementation "io.ktor:ktor-serialization-jackson:$ktor_version" - - testImplementation 'org.jetbrains.kotlin:kotlin-test-junit:1.5.21' - testImplementation 'org.jetbrains.kotlin:kotlin-test:1.5.21' - testImplementation group: "junit", name: "junit", version: '4.13.2' - - // UNIX domain sockets support (used to connect to PostgreSQL) - implementation 'com.kohlschutter.junixsocket:junixsocket-core:2.6.2' -} - -application { - mainClassName = "tech.libeufin.sandbox.MainKt" - applicationName = "libeufin-sandbox" - applicationDefaultJvmArgs = ['-Djava.net.preferIPv6Addresses=true'] -} - -jar { - manifest { - attributes "Main-Class": "tech.libeufin.sandbox.MainKt" - } -} -\ No newline at end of file