parent
aec090b22e
commit
fb2d81550c
|
@ -23,6 +23,10 @@ Contact us at <joguitos+pluck@luca0n.com>.
|
||||||
|
|
||||||
package com.luca0n.joguitos.pluck.util;
|
package com.luca0n.joguitos.pluck.util;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
|
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
@ -33,10 +37,14 @@ import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
import java.net.Proxy;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import com.luca0n.joguitos.pluck.R;
|
||||||
|
import com.luca0n.joguitos.pluck.PluckApplication;
|
||||||
import com.luca0n.joguitos.pluck.exceptions.NoTriviaResultsException;
|
import com.luca0n.joguitos.pluck.exceptions.NoTriviaResultsException;
|
||||||
import com.luca0n.joguitos.pluck.trivia.TriviaQuery;
|
import com.luca0n.joguitos.pluck.trivia.TriviaQuery;
|
||||||
import com.luca0n.joguitos.pluck.trivia.TriviaQuestion;
|
import com.luca0n.joguitos.pluck.trivia.TriviaQuestion;
|
||||||
|
@ -46,60 +54,76 @@ import com.luca0n.joguitos.pluck.trivia.TriviaType;
|
||||||
|
|
||||||
public class ApiUtil {
|
public class ApiUtil {
|
||||||
|
|
||||||
private static String readStream(InputStream in) throws IOException {
|
private static String readStream(InputStream in) throws IOException {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
BufferedReader reader = new BufferedReader(new InputStreamReader(in), 1000);
|
BufferedReader reader = new BufferedReader(new InputStreamReader(in), 1000);
|
||||||
|
|
||||||
for (String line = reader.readLine(); line != null; line = reader.readLine()) {
|
for (String line = reader.readLine(); line != null; line = reader.readLine()) {
|
||||||
builder.append(line);
|
builder.append(line);
|
||||||
}
|
}
|
||||||
|
|
||||||
in.close();
|
in.close();
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String GET(String query) throws IOException {
|
private static String GET(String query) throws IOException {
|
||||||
String response;
|
String response;
|
||||||
|
|
||||||
URL url = new URL(query);
|
URL url = new URL(query);
|
||||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
HttpURLConnection connection;
|
||||||
|
|
||||||
try {
|
// Check if the player wants to play the game using Tor.
|
||||||
InputStream in = new BufferedInputStream(connection.getInputStream());
|
Context c = PluckApplication.getAppContext();
|
||||||
response = readStream(in);
|
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(c);
|
||||||
} finally {
|
String key = c.getResources().getString(R.string.pref_network_tor);
|
||||||
connection.disconnect();
|
// Connect without Tor by default.
|
||||||
}
|
boolean useTor = sp.getBoolean(key, false);
|
||||||
|
// Default Orbot SOCKS5 address.
|
||||||
|
String orbotSocks5Hostname = "127.0.0.1";
|
||||||
|
int orbotSocks5Port = 9050;
|
||||||
|
|
||||||
return response;
|
if (useTor)
|
||||||
}
|
connection = (HttpURLConnection) url.openConnection(
|
||||||
|
new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(orbotSocks5Hostname, orbotSocks5Port)));
|
||||||
|
else
|
||||||
|
connection = (HttpURLConnection) url.openConnection();
|
||||||
|
|
||||||
public static String GET(TriviaQuery query) throws IOException {
|
try {
|
||||||
return GET(query.toString());
|
InputStream in = new BufferedInputStream(connection.getInputStream());
|
||||||
}
|
response = readStream(in);
|
||||||
|
} finally {
|
||||||
|
connection.disconnect();
|
||||||
|
}
|
||||||
|
|
||||||
public static ArrayList<TriviaQuestion> jsonToQuestionArray(String json) throws NoTriviaResultsException {
|
return response;
|
||||||
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
|
}
|
||||||
|
|
||||||
if (jsonObject.get("response_code").getAsInt() == 1) {
|
public static String GET(TriviaQuery query) throws IOException {
|
||||||
throw new NoTriviaResultsException();
|
return GET(query.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonArray jsonArray = jsonObject.getAsJsonArray("results");
|
public static ArrayList<TriviaQuestion> jsonToQuestionArray(String json) throws NoTriviaResultsException {
|
||||||
|
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
|
||||||
|
|
||||||
ArrayList<TriviaQuestion> questions = new ArrayList<>();
|
if (jsonObject.get("response_code").getAsInt() == 1) {
|
||||||
|
throw new NoTriviaResultsException();
|
||||||
|
}
|
||||||
|
|
||||||
for (JsonElement element : jsonArray) {
|
JsonArray jsonArray = jsonObject.getAsJsonArray("results");
|
||||||
JsonObject object = element.getAsJsonObject();
|
|
||||||
TriviaType type = TriviaType.get(object.get("type").getAsString());
|
|
||||||
|
|
||||||
if (type == TriviaType.MULTIPLE) {
|
ArrayList<TriviaQuestion> questions = new ArrayList<>();
|
||||||
questions.add(TriviaQuestionMultiple.fromJson(object));
|
|
||||||
} else {
|
|
||||||
questions.add(TriviaQuestionBoolean.fromJson(object));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return questions;
|
for (JsonElement element : jsonArray) {
|
||||||
}
|
JsonObject object = element.getAsJsonObject();
|
||||||
|
TriviaType type = TriviaType.get(object.get("type").getAsString());
|
||||||
|
|
||||||
|
if (type == TriviaType.MULTIPLE) {
|
||||||
|
questions.add(TriviaQuestionMultiple.fromJson(object));
|
||||||
|
} else {
|
||||||
|
questions.add(TriviaQuestionBoolean.fromJson(object));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return questions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue