Add support for balance checking

This commit is contained in:
Julien Lengrand-Lambert
2019-10-21 20:42:28 +02:00
parent 6c7190542c
commit 8942cdf5d2
5 changed files with 72 additions and 2 deletions

View File

@@ -1,6 +1,8 @@
package fr.lengrand.dialogflowfunapi;
import fr.lengrand.dialogflowfunapi.openbankproject.auth.Auth;
import fr.lengrand.dialogflowfunapi.openbankproject.balance.BalanceHandler;
import fr.lengrand.dialogflowfunapi.openbankproject.balance.data.Balance;
import fr.lengrand.dialogflowfunapi.openbankproject.transactions.TransactionsHandler;
import fr.lengrand.dialogflowfunapi.openbankproject.transactions.data.Transactions;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +24,9 @@ public class DialogflowFunApiApplication {
@Autowired
private TransactionsHandler transactionsHandler;
@Autowired
private BalanceHandler balanceHandler;
public static void main(String[] args) {
SpringApplication.run(DialogflowFunApiApplication.class, args);
}
@@ -40,6 +45,8 @@ public class DialogflowFunApiApplication {
return "hello world!";
}
// TODO : Take inputs from requests
@GetMapping("/auth")
public String auth() throws IOException, InterruptedException {
auth.authenticate(); // TODO: Should be done on start!
@@ -51,4 +58,8 @@ public class DialogflowFunApiApplication {
return transactionsHandler.getTransactions();
}
@GetMapping("/balances")
public Balance balances() throws IOException, InterruptedException {
return balanceHandler.getBalance();
}
}

View File

@@ -0,0 +1,43 @@
package fr.lengrand.dialogflowfunapi.openbankproject.balance;
import fr.lengrand.dialogflowfunapi.openbankproject.auth.Auth;
import fr.lengrand.dialogflowfunapi.openbankproject.auth.JSONBodyHandler;
import fr.lengrand.dialogflowfunapi.openbankproject.balance.data.Balance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
@Service
public class BalanceHandler {
@Autowired
private Auth auth;
public JSONBodyHandler<Balance> jsonBodyHandler = JSONBodyHandler.getHandler(Balance.class);
public Balance getBalance() throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.headers("Content-Type", "application/json",
"Authorization", createAuthHeader())
.uri(URI.create(createUrl("at02-1465--01"))) // TODO : Convert to DialogFlow names
.build();
HttpResponse<Balance> response = client.send(request, jsonBodyHandler); //TODO : Handle failures.
return response.body();
}
private String createUrl(String bank){
return "https://psd2-api.openbankproject.com/obp/v4.0.0/banks/" + bank + "/balances";
}
private String createAuthHeader(){
return "DirectLogin token=" + this.auth.getToken().get();
}
}

View File

@@ -0,0 +1,10 @@
package fr.lengrand.dialogflowfunapi.openbankproject.balance.data;
import fr.lengrand.dialogflowfunapi.openbankproject.transactions.data.Amount;
public class Account {
public String id;
public String bank_id;
public Amount balance;
}

View File

@@ -0,0 +1,8 @@
package fr.lengrand.dialogflowfunapi.openbankproject.balance.data;
import java.util.List;
public class Balance {
public List<Account> accounts;
}

View File

@@ -2,10 +2,8 @@ package fr.lengrand.dialogflowfunapi.openbankproject.transactions;
import fr.lengrand.dialogflowfunapi.openbankproject.auth.Auth;
import fr.lengrand.dialogflowfunapi.openbankproject.auth.JSONBodyHandler;
import fr.lengrand.dialogflowfunapi.openbankproject.auth.data.AuthToken;
import fr.lengrand.dialogflowfunapi.openbankproject.transactions.data.Transactions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Service;
import java.io.IOException;