Feat Update: Support for paging while fetching trasnactions
diff --git a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/Api.kt b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/Api.kt
index 5491614..b71d387 100644
--- a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/Api.kt
+++ b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/Api.kt
@@ -1,5 +1,7 @@
package org.mifos.openbanking.data.datasources.network
+import org.mifos.openbanking.domain.usecase.fetchTransactions.Sort
+
const val CONSUMER_KEY = "lxhlkssvfgoheqjdhdr4tq1lkj5h5jklhn2rqxd0"
const val API_HOST = "https://apisandbox.openbankproject.com/"
@@ -14,8 +16,21 @@
return "obp/v4.0.0/banks/$bankId/accounts/$accountId/owner/transactions/$transactionId/transaction"
}
-fun fetchTransactionsPath(bankId: String, accountId: String): String {
- return "obp/v4.0.0/my/banks/$bankId/accounts/$accountId/transactions"
+fun fetchTransactionsPath(
+ bankId: String,
+ accountId: String,
+ sort: Sort,
+ limit: Long,
+ offset: Long,
+ fromDate: String,
+ toDate: String
+): String {
+ return "obp/v4.0.0/my/banks/$bankId/accounts/$accountId/transactions" +
+ "?sort_direction=${sort.direction}" +
+ "&limit=$limit" +
+ "&offset=$offset" +
+ "&from_date=$fromDate" +
+ "&to_date=$toDate"
}
fun bankBalancePath(bankId: String): String {
diff --git a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/TransactionApi.kt b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/TransactionApi.kt
index f60d60c..9aa1906 100644
--- a/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/TransactionApi.kt
+++ b/common/src/commonMain/kotlin/org/mifos/openbanking/data/datasources/network/TransactionApi.kt
@@ -111,7 +111,12 @@
val response = client.get<String>(
API_HOST + fetchTransactionsPath(
request.bankId,
- request.accountId
+ request.accountId,
+ request.sort,
+ request.limit,
+ request.offset,
+ request.fromDate,
+ request.toDate
)
) {
headers {
diff --git a/common/src/commonMain/kotlin/org/mifos/openbanking/domain/usecase/fetchTransactions/FetchTransactionsRequest.kt b/common/src/commonMain/kotlin/org/mifos/openbanking/domain/usecase/fetchTransactions/FetchTransactionsRequest.kt
index 7135355..fe51431 100644
--- a/common/src/commonMain/kotlin/org/mifos/openbanking/domain/usecase/fetchTransactions/FetchTransactionsRequest.kt
+++ b/common/src/commonMain/kotlin/org/mifos/openbanking/domain/usecase/fetchTransactions/FetchTransactionsRequest.kt
@@ -6,7 +6,13 @@
class FetchTransactionsRequest(
val token: String,
val bankId: String,
- val accountId: String
+ val accountId: String,
+ val sort: Sort = Sort.DESCENDING,
+ val limit: Long = 50,
+ val offset: Long = 0,
+ val fromDate: String = "0000-00-00T00:00:00.000Z",
+ val toDate: String = "3049-01-01T00:00:00.000Z"
+
) :
BaseRequest {
@@ -14,4 +20,9 @@
return true
}
+}
+
+enum class Sort(val direction: String) {
+ ASCENDING("ASC"),
+ DESCENDING("DESC")
}
\ No newline at end of file