blob: c557ca9b56897bcdddc027dfec6eccbd9df43b80 [file] [log] [blame]
package org.mifos.openbanking.data.repository
import org.mifos.openbanking.base.Response
import org.mifos.openbanking.data.datasources.network.NetworkDataSource
import org.mifos.openbanking.domain.usecase.createClient.CreateClientRequest
import org.mifos.openbanking.domain.usecase.createClient.CreateClientResponse
import org.mifos.openbanking.domain.usecase.fetchAccounts.FetchAccountsRequest
import org.mifos.openbanking.domain.usecase.fetchAccounts.FetchAccountsResponse
import org.mifos.openbanking.domain.usecase.fetchBalances.FetchBalancesRequest
import org.mifos.openbanking.domain.usecase.fetchBalances.FetchBalancesResponse
import org.mifos.openbanking.domain.usecase.fetchBanks.FetchBanksRequest
import org.mifos.openbanking.domain.usecase.fetchBanks.FetchBanksResponse
import org.mifos.openbanking.domain.usecase.loginClient.LoginClientRequest
import org.mifos.openbanking.domain.usecase.loginClient.LoginClientResponse
import org.mifos.openbanking.domain.usecase.createTransactionRequest.CreateTransactionRequestRequest
import org.mifos.openbanking.domain.usecase.createTransactionRequest.CreateTransactionRequestResponse
class OpenBankingRepository(
private val networkDataSource: NetworkDataSource
) {
suspend fun createClient(request: CreateClientRequest): Response<CreateClientResponse> {
return networkDataSource.getClientApi()
.createClient(request.name, request.contact, request.scopes, request.redirectUris);
}
suspend fun loginClient(request: LoginClientRequest): Response<LoginClientResponse> {
return networkDataSource.getClientApi().loginClient(request);
}
suspend fun fetchAccounts(request: FetchAccountsRequest): Response<FetchAccountsResponse> {
return networkDataSource.getClientApi().fetchAccounts(request)
}
suspend fun fetchBalances(request: FetchBalancesRequest): Response<FetchBalancesResponse> {
return networkDataSource.getClientApi().fetchBalances(request)
}
suspend fun fetchBanks(request: FetchBanksRequest): Response<FetchBanksResponse> {
return networkDataSource.getBankApi().fetchBanks(request)
}
suspend fun createTransactionRequest(request: CreateTransactionRequestRequest): Response<CreateTransactionRequestResponse> {
return networkDataSource.getClientApi().createTransactionRequest(request)
}
}