This commit is contained in:
Thomas 2020-09-22 18:09:49 +02:00
parent d3f03aac2a
commit 0b8b616d02
2 changed files with 127 additions and 82 deletions

View File

@ -42,6 +42,7 @@ import app.fedilab.nitterizeme.viewmodels.SearchInstanceVM;
public class InstanceActivity extends AppCompatActivity { public class InstanceActivity extends AppCompatActivity {
private static String list_for_instances = "https://framagit.org/tom79/fedilab_app/-/blob/master/content/untrackme_instances/payload_2.json"; private static String list_for_instances = "https://framagit.org/tom79/fedilab_app/-/blob/master/content/untrackme_instances/payload_2.json";
private static String list_for_bibliogram_instances = "https://bibliogram.art/api/instances";
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {

View File

@ -66,7 +66,20 @@ public class SearchInstanceVM extends AndroidViewModel {
Thread thread = new Thread() { Thread thread = new Thread() {
@Override @Override
public void run() { public void run() {
List<Instance> instances = getInstancesFromFedilabApp();
List<Instance> bibliogramInstances = getInstancesFromBibliogramArt();
instances.addAll(bibliogramInstances);
Handler mainHandler = new Handler(Looper.getMainLooper());
Runnable myRunnable = () -> instancesMLD.setValue(instances);
mainHandler.post(myRunnable);
}
};
thread.start();
}
private List<Instance> getInstancesFromFedilabApp(){
HttpsURLConnection httpsURLConnection; HttpsURLConnection httpsURLConnection;
ArrayList<Instance> instances = new ArrayList<>();
try { try {
String instances_url = "https://fedilab.app/untrackme_instances/payload_2.json"; String instances_url = "https://fedilab.app/untrackme_instances/payload_2.json";
URL url = new URL(instances_url); URL url = new URL(instances_url);
@ -87,15 +100,12 @@ public class SearchInstanceVM extends AndroidViewModel {
SharedPreferences sharedpreferences = getApplication().getApplicationContext().getSharedPreferences(APP_PREFS, Context.MODE_PRIVATE); SharedPreferences sharedpreferences = getApplication().getApplicationContext().getSharedPreferences(APP_PREFS, Context.MODE_PRIVATE);
String defaultInvidious = sharedpreferences.getString(SET_INVIDIOUS_HOST, DEFAULT_INVIDIOUS_HOST); String defaultInvidious = sharedpreferences.getString(SET_INVIDIOUS_HOST, DEFAULT_INVIDIOUS_HOST);
String defaultNitter = sharedpreferences.getString(SET_NITTER_HOST, DEFAULT_NITTER_HOST); String defaultNitter = sharedpreferences.getString(SET_NITTER_HOST, DEFAULT_NITTER_HOST);
String defaultBibliogram = sharedpreferences.getString(SET_BIBLIOGRAM_HOST, DEFAULT_BIBLIOGRAM_HOST);
ArrayList<Instance> instances = new ArrayList<>();
if (response != null) { if (response != null) {
try { try {
JSONObject jsonObject = new JSONObject(response); JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArrayInvidious = jsonObject.getJSONArray("invidious"); JSONArray jsonArrayInvidious = jsonObject.getJSONArray("invidious");
JSONArray jsonArrayNitter = jsonObject.getJSONArray("nitter"); JSONArray jsonArrayNitter = jsonObject.getJSONArray("nitter");
JSONArray jsonArrayBibliogram = jsonObject.getJSONArray("bibliogram");
for (int i = 0; i < jsonArrayInvidious.length(); i++) { for (int i = 0; i < jsonArrayInvidious.length(); i++) {
Instance instance = new Instance(); Instance instance = new Instance();
String domain = jsonArrayInvidious.getJSONObject(i).getString("domain"); String domain = jsonArrayInvidious.getJSONObject(i).getString("domain");
@ -124,11 +134,51 @@ public class SearchInstanceVM extends AndroidViewModel {
} }
instances.add(instance); instances.add(instance);
} }
} catch (JSONException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
return instances;
}
private List<Instance> getInstancesFromBibliogramArt(){
HttpsURLConnection httpsURLConnection;
ArrayList<Instance> instances = new ArrayList<>();
try {
String instances_url = "https://bibliogram.art/api/instances";
URL url = new URL(instances_url);
httpsURLConnection = (HttpsURLConnection) url.openConnection();
httpsURLConnection.setConnectTimeout(10 * 1000);
httpsURLConnection.setRequestProperty("http.keepAlive", "false");
httpsURLConnection.setRequestProperty("Content-Type", "application/json");
httpsURLConnection.setRequestProperty("Accept", "application/json");
httpsURLConnection.setRequestMethod("GET");
httpsURLConnection.setDefaultUseCaches(true);
httpsURLConnection.setUseCaches(true);
String response = null;
if (httpsURLConnection.getResponseCode() >= 200 && httpsURLConnection.getResponseCode() < 400) {
java.util.Scanner s = new java.util.Scanner(httpsURLConnection.getInputStream()).useDelimiter("\\A");
response = s.hasNext() ? s.next() : "";
}
httpsURLConnection.getInputStream().close();
SharedPreferences sharedpreferences = getApplication().getApplicationContext().getSharedPreferences(APP_PREFS, Context.MODE_PRIVATE);
String defaultBibliogram = sharedpreferences.getString(SET_BIBLIOGRAM_HOST, DEFAULT_BIBLIOGRAM_HOST);
if (response != null) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArrayBibliogram = jsonObject.getJSONArray("data");
for (int i = 0; i < jsonArrayBibliogram.length(); i++) { for (int i = 0; i < jsonArrayBibliogram.length(); i++) {
Instance instance = new Instance(); Instance instance = new Instance();
String domain = jsonArrayBibliogram.getJSONObject(i).getString("domain"); String url_bibliogram = jsonArrayBibliogram.getJSONObject(i).getString("address");
boolean cloudFlare = jsonArrayBibliogram.getJSONObject(i).getBoolean("cloudflare"); URL urlBibliogram = new URL(url_bibliogram);
String locale = jsonArrayBibliogram.getJSONObject(i).getString("locale"); String domain = urlBibliogram.getHost();
boolean cloudFlare = jsonArrayBibliogram.getJSONObject(i).getBoolean("using_cloudflare");
String locale = jsonArrayBibliogram.getJSONObject(i).getString("country");
instance.setDomain(domain); instance.setDomain(domain);
instance.setCloudflare(cloudFlare); instance.setCloudflare(cloudFlare);
instance.setLocale(locale); instance.setLocale(locale);
@ -138,9 +188,6 @@ public class SearchInstanceVM extends AndroidViewModel {
} }
instances.add(instance); instances.add(instance);
} }
Handler mainHandler = new Handler(Looper.getMainLooper());
Runnable myRunnable = () -> instancesMLD.setValue(instances);
mainHandler.post(myRunnable);
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -148,9 +195,6 @@ public class SearchInstanceVM extends AndroidViewModel {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} return instances;
};
thread.start();
} }
} }