Changed isValidJsonObjec()t to validateJsonResponse()

This commit is contained in:
Erik C. Thauvin 2019-09-13 01:24:56 -07:00
parent 2166e166e8
commit 4ccdcb95c3

View file

@ -107,53 +107,53 @@ public final class StockQuote extends ThreadedModule {
if (response.body() != null) {
JSONObject json = new JSONObject(Objects.requireNonNull(response.body()).string());
if (isValidJsonObject(json, debugMessage)) {
final JSONArray symbols = json.getJSONArray("bestMatches");
if (symbols.isEmpty()) {
validateJsonResponse(json, debugMessage);
final JSONArray symbols = json.getJSONArray("bestMatches");
if (symbols.isEmpty()) {
messages.add(new ErrorMessage(INVALID_SYMBOL));
return messages;
}
final JSONObject symbolInfo = symbols.getJSONObject(0);
// Get quote for symbol
request = new Request.Builder().url(
ALAPHADVANTAGE_URL + "GLOBAL_QUOTE&symbol=" + symbolInfo.getString("1. symbol") + "&apikey="
+ apiKey).build();
response = client.newCall(request).execute();
if (response.body() != null) {
json = new JSONObject(Objects.requireNonNull(response.body()).string());
validateJsonResponse(json, debugMessage);
final JSONObject quote = json.getJSONObject("Global Quote");
if (quote.isEmpty()) {
messages.add(new ErrorMessage(INVALID_SYMBOL));
return messages;
}
final JSONObject symbolInfo = symbols.getJSONObject(0);
messages.add(new PublicMessage(
"Symbol: " + Utils.unescapeXml(quote.getString("01. symbol")) + " [" + Utils
.unescapeXml(symbolInfo.getString("2. name") + ']')));
messages.add(
new PublicMessage(" Price: " + Utils.unescapeXml(quote.getString("05. price"))));
messages.add(new PublicMessage(
" Previous: " + Utils.unescapeXml(quote.getString("08. previous close"))));
messages.add(
new NoticeMessage(" Open: " + Utils.unescapeXml(quote.getString("02. open"))));
messages.add(
new NoticeMessage(" High: " + Utils.unescapeXml(quote.getString("03. high"))));
messages.add(
new NoticeMessage(" Low: " + Utils.unescapeXml(quote.getString("04. low"))));
messages.add(
new NoticeMessage(" Volume: " + Utils.unescapeXml(quote.getString("06. volume"))));
messages.add(new NoticeMessage(
" Latest: " + Utils.unescapeXml(quote.getString("07. latest trading day"))));
messages.add(new NoticeMessage(
" Change: " + Utils.unescapeXml(quote.getString("09. change")) + " [" + Utils
.unescapeXml(quote.getString("10. change percent")) + ']'));
// Get quote for symbol
request = new Request.Builder().url(
ALAPHADVANTAGE_URL + "GLOBAL_QUOTE&symbol=" + symbolInfo.getString("1. symbol") + "&apikey="
+ apiKey).build();
response = client.newCall(request).execute();
if (response.body() != null) {
json = new JSONObject(Objects.requireNonNull(response.body()).string());
if (isValidJsonObject(json, debugMessage)) {
final JSONObject quote = json.getJSONObject("Global Quote");
if (quote.isEmpty()) {
messages.add(new ErrorMessage(INVALID_SYMBOL));
return messages;
}
messages.add(new PublicMessage(
"Symbol: " + Utils.unescapeXml(quote.getString("01. symbol")) + " [" + Utils
.unescapeXml(symbolInfo.getString("2. name") + ']')));
messages.add(new PublicMessage(
" Price: " + Utils.unescapeXml(quote.getString("05. price"))));
messages.add(new PublicMessage(
" Previous: " + Utils.unescapeXml(quote.getString("08. previous close"))));
messages.add(new NoticeMessage(
" Open: " + Utils.unescapeXml(quote.getString("02. open"))));
messages.add(new NoticeMessage(
" High: " + Utils.unescapeXml(quote.getString("03. high"))));
messages.add(new NoticeMessage(
" Low: " + Utils.unescapeXml(quote.getString("04. low"))));
messages.add(new NoticeMessage(
" Volume: " + Utils.unescapeXml(quote.getString("06. volume"))));
messages.add(new NoticeMessage(
" Latest: " + Utils.unescapeXml(quote.getString("07. latest trading day"))));
messages.add(new NoticeMessage(
" Change: " + Utils.unescapeXml(quote.getString("09. change")) + " [" + Utils
.unescapeXml(quote.getString("10. change percent")) + ']'));
}
}
}
}
} catch (IOException e) {
@ -174,7 +174,27 @@ public final class StockQuote extends ThreadedModule {
bot.send(sender, bot.helpIndent(bot.getNick() + ": " + STOCK_CMD + " <symbol|keywords>"));
}
private static boolean isValidJsonObject(final JSONObject json, final String debugMessage) throws ModuleException {
/**
* Returns the specified stock quote from Alpha Advantage.
*/
@Override
void run(final Mobibot bot, final String sender, final String symbol) {
if (Utils.isValidString(symbol)) {
try {
final List<Message> messages = getQuote(symbol, properties.get(ALPHAVANTAGE_API_KEY_PROP));
for (final Message msg : messages) {
bot.send(sender, msg);
}
} catch (ModuleException e) {
bot.getLogger().warn(e.getDebugMessage(), e);
bot.send(e.getMessage());
}
} else {
helpResponse(bot, sender, symbol, true);
}
}
private static void validateJsonResponse(final JSONObject json, final String debugMessage) throws ModuleException {
try {
final String info = json.getString("Information");
if (!info.isEmpty()) {
@ -201,27 +221,5 @@ public final class StockQuote extends ThreadedModule {
} catch (JSONException ignore) {
// Do nothing.
}
return true;
}
/**
* Returns the specified stock quote from Alpha Advantage.
*/
@Override
void run(final Mobibot bot, final String sender, final String symbol) {
if (Utils.isValidString(symbol)) {
try {
final List<Message> messages = getQuote(symbol, properties.get(ALPHAVANTAGE_API_KEY_PROP));
for (final Message msg : messages) {
bot.send(sender, msg);
}
} catch (ModuleException e) {
bot.getLogger().warn(e.getDebugMessage(), e);
bot.send(e.getMessage());
}
} else {
helpResponse(bot, sender, symbol, true);
}
}
}