package com.morristaedt.mirror.modules;
import android.os.AsyncTask;
import android.support.annotation.Nullable;
import android.util.Log;
import com.morristaedt.mirror.configuration.ConfigurationSettings;
import com.morristaedt.mirror.requests.YahooFinanceRequest;
import com.morristaedt.mirror.requests.YahooStockResponse;
import java.math.BigDecimal;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
/**
* Created by HannahMitt on 8/22/15.
*/
public class YahooFinanceModule {
public interface StockListener {
void onNewStockPrice(YahooStockResponse.YahooQuoteResponse quoteResponse);
}
/**
* Fetch the the latest stock price, but only show it if its a large change
*
* @param listener
*/
public static void getStockForToday(final String stockName, final StockListener listener) {
new AsyncTask<Void, Void, YahooStockResponse>() {
@Override
protected YahooStockResponse doInBackground(Void... params) {
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("http://query.yahooapis.com/v1/public")
.build();
YahooFinanceRequest service = restAdapter.create(YahooFinanceRequest.class);
String query = "select * from yahoo.finance.quotes where symbol in (\"" + stockName + "\")";
String env = "http://datatables.org/alltables.env";
String format = "json";
try {
return service.getStockData(query, env, format);
} catch (RetrofitError error) {
Log.w("YahooFinanceModule", "YahooFinance error: " + error.getMessage());
return null;
}
}
@Override
protected void onPostExecute(@Nullable YahooStockResponse stockResponse) {
if (stockResponse != null && stockResponse.getQuoteResponse() != null) {
YahooStockResponse.YahooQuoteResponse quoteResponse = stockResponse.getQuoteResponse();
if (ConfigurationSettings.isDemoMode() || quoteResponse.getPercentageChange().abs().compareTo(BigDecimal.valueOf(0.03)) >= 0) {
listener.onNewStockPrice(quoteResponse);
return;
}
}
listener.onNewStockPrice(null);
}
}.execute();
}
}