diff --git a/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/DialogflowFunApiApplication.java b/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/DialogflowFunApiApplication.java index fe65739..7511a4c 100644 --- a/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/DialogflowFunApiApplication.java +++ b/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/DialogflowFunApiApplication.java @@ -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(); + } } diff --git a/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/balance/BalanceHandler.java b/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/balance/BalanceHandler.java new file mode 100644 index 0000000..43c7dc4 --- /dev/null +++ b/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/balance/BalanceHandler.java @@ -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 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 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(); + } + +} diff --git a/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/balance/data/Account.java b/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/balance/data/Account.java new file mode 100644 index 0000000..a714285 --- /dev/null +++ b/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/balance/data/Account.java @@ -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; +} diff --git a/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/balance/data/Balance.java b/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/balance/data/Balance.java new file mode 100644 index 0000000..40c5f87 --- /dev/null +++ b/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/balance/data/Balance.java @@ -0,0 +1,8 @@ +package fr.lengrand.dialogflowfunapi.openbankproject.balance.data; + +import java.util.List; + +public class Balance { + + public List accounts; +} diff --git a/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/transactions/TransactionsHandler.java b/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/transactions/TransactionsHandler.java index 913ca57..74c6d0b 100644 --- a/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/transactions/TransactionsHandler.java +++ b/dialogflow-fun-api/src/main/java/fr/lengrand/dialogflowfunapi/openbankproject/transactions/TransactionsHandler.java @@ -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;