From 7fe2e2333a6a598c30a705064b98d511246d836f Mon Sep 17 00:00:00 2001 From: Gaurav Mohla Date: Tue, 14 Mar 2017 20:52:23 +0530 Subject: [PATCH] Add files via upload --- StockFetcher/StockFetcher.iml | 17 +++ StockFetcher/pom.xml | 25 +++++ StockFetcher/src/main/java/model/Stock.java | 104 ++++++++++++++++++ .../src/main/java/service/GoogleFinance.java | 14 +++ .../main/java/service/GoogleFinanceImpl.java | 90 +++++++++++++++ .../src/main/resources/data.properties | 4 + 6 files changed, 254 insertions(+) create mode 100644 StockFetcher/StockFetcher.iml create mode 100644 StockFetcher/pom.xml create mode 100644 StockFetcher/src/main/java/model/Stock.java create mode 100644 StockFetcher/src/main/java/service/GoogleFinance.java create mode 100644 StockFetcher/src/main/java/service/GoogleFinanceImpl.java create mode 100644 StockFetcher/src/main/resources/data.properties diff --git a/StockFetcher/StockFetcher.iml b/StockFetcher/StockFetcher.iml new file mode 100644 index 0000000..8793abc --- /dev/null +++ b/StockFetcher/StockFetcher.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/StockFetcher/pom.xml b/StockFetcher/pom.xml new file mode 100644 index 0000000..df88d2f --- /dev/null +++ b/StockFetcher/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + StockFetcher + stock-fetcher + 1.0-SNAPSHOT + + + + com.google.code.gson + gson + 2.8.0 + + + org.json + json + 20160810 + + + + + \ No newline at end of file diff --git a/StockFetcher/src/main/java/model/Stock.java b/StockFetcher/src/main/java/model/Stock.java new file mode 100644 index 0000000..88008eb --- /dev/null +++ b/StockFetcher/src/main/java/model/Stock.java @@ -0,0 +1,104 @@ +package model; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by Gaurav on 12-Mar-17. + */ +public class Stock { + + @SerializedName("t") + private String ticker; + @SerializedName("e") + private String exchange; + @SerializedName("ltt") + private String lastTradeTime; + @SerializedName("l") + private String price; + @SerializedName("lt") + private String lastTradeTimeFormatted; + @SerializedName("lt_dts") + private String lastTradeDateTime; + @SerializedName("c") + private String change; + @SerializedName("cp") + private String changePercentage; + + public String getTicker() { + return ticker; + } + + public void setTicker(String ticker) { + this.ticker = ticker; + } + + public String getExchange() { + return exchange; + } + + public void setExchange(String exchange) { + this.exchange = exchange; + } + + public String getLastTradeTime() { + return lastTradeTime; + } + + public void setLastTradeTime(String lastTradeTime) { + this.lastTradeTime = lastTradeTime; + } + + public String getPrice() { + return price; + } + + public void setPrice(String price) { + this.price = price; + } + + public String getLastTradeTimeFormatted() { + return lastTradeTimeFormatted; + } + + public void setLastTradeTimeFormatted(String lastTradeTimeFormatted) { + this.lastTradeTimeFormatted = lastTradeTimeFormatted; + } + + public String getLastTradeDateTime() { + return lastTradeDateTime; + } + + public void setLastTradeDateTime(String lastTradeDateTime) { + this.lastTradeDateTime = lastTradeDateTime; + } + + public String getChange() { + return change; + } + + public void setChange(String change) { + this.change = change; + } + + public String getChangePercentage() { + return changePercentage; + } + + public void setChangePercentage(String changePercentage) { + this.changePercentage = changePercentage; + } + + @Override + public String toString() { + return "Stock{" + + "ticker='" + ticker + '\'' + + ", exchange='" + exchange + '\'' + + ", lastTradeTime='" + lastTradeTime + '\'' + + ", price='" + price + '\'' + + ", lastTradeTimeFormatted='" + lastTradeTimeFormatted + '\'' + + ", lastTradeDateTime='" + lastTradeDateTime + '\'' + + ", change='" + change + '\'' + + ", changePercentage='" + changePercentage + '\'' + + '}'; + } +} diff --git a/StockFetcher/src/main/java/service/GoogleFinance.java b/StockFetcher/src/main/java/service/GoogleFinance.java new file mode 100644 index 0000000..2a98c4c --- /dev/null +++ b/StockFetcher/src/main/java/service/GoogleFinance.java @@ -0,0 +1,14 @@ +package service; + +import model.Stock; + +import java.io.IOException; +import java.util.List; + +/** + * Created by Gaurav on 12-Mar-17. + */ +public interface GoogleFinance { + Stock getStockDetails(String exchange, String ticker) throws IOException; + List getStockDetails(String exchange, String[] tickers) throws IOException; +} diff --git a/StockFetcher/src/main/java/service/GoogleFinanceImpl.java b/StockFetcher/src/main/java/service/GoogleFinanceImpl.java new file mode 100644 index 0000000..3194bbd --- /dev/null +++ b/StockFetcher/src/main/java/service/GoogleFinanceImpl.java @@ -0,0 +1,90 @@ +package service; + +import com.google.gson.Gson; +import model.Stock; +import org.json.JSONObject; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Gaurav on 12-Mar-17. + */ +public class GoogleFinanceImpl implements GoogleFinance { + public Stock getStockDetails(String exchange, String ticker) throws IOException { + Stock stock = new Stock(); + //Rest call to google finance API + URL url = new URL("http://finance.google.com/finance/info?client=ig&q="+exchange+"%3A"+ticker); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setRequestProperty("Accept", "application/json"); + if (conn.getResponseCode() != 200) { + throw new RuntimeException("Failed : HTTP error code : " + + conn.getResponseCode()); + } + StringBuilder stringBuilder = new StringBuilder(readFullyAsString(conn.getInputStream(), "UTF-8")); + for (int index = 0; index < stringBuilder.length(); index++) { + if (stringBuilder.charAt(index) == '/' || stringBuilder.charAt(index) == ']' || stringBuilder.charAt(index) == '['){ + stringBuilder.setCharAt(index, ' '); + } + } + String stockJson = stringBuilder.toString(); + Gson gson = new Gson(); + stock = gson.fromJson(stockJson, Stock.class); + return stock; + } + + public List getStockDetails(String exchange, String[] tickers) throws IOException { + List stocks = new ArrayList(); + Stock stock = new Stock(); + //Rest call to google finance API + for(int i=1;i