summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/fr/gouv
diff options
context:
space:
mode:
authorstom79 <tschneider.ac@gmail.com>2019-01-08 16:24:02 +0100
committerstom79 <tschneider.ac@gmail.com>2019-01-08 16:24:02 +0100
commit4ea77d489a7b198cac63b45c15bcd361e0b45932 (patch)
tree009899bed42958ff478e71b5e0c7d3e00548d6b0 /app/src/main/java/fr/gouv
parente9e4f51d566f482fe76977d78cb12818315c907b (diff)
Back end for edition of videos
Diffstat (limited to 'app/src/main/java/fr/gouv')
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeEditUploadActivity.java190
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java2
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrievePeertubeSingleAsyncTask.java15
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Peertube.java27
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/PeertubeInformation.java40
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java808
6 files changed, 295 insertions, 787 deletions
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeEditUploadActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeEditUploadActivity.java
index 7ac61d8bd..4197bcf7d 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeEditUploadActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeEditUploadActivity.java
@@ -27,13 +27,18 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import es.dmoral.toasty.Toasty;
import fr.gouv.etalab.mastodon.R;
@@ -44,18 +49,24 @@ import fr.gouv.etalab.mastodon.client.Entities.Account;
import fr.gouv.etalab.mastodon.client.Entities.Peertube;
import fr.gouv.etalab.mastodon.helper.Helper;
import fr.gouv.etalab.mastodon.interfaces.OnRetrievePeertubeInterface;
+import mabbas007.tagsedittext.TagsEditText;
+import static fr.gouv.etalab.mastodon.asynctasks.RetrievePeertubeInformationAsyncTask.peertubeInformation;
import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT;
public class PeertubeEditUploadActivity extends BaseActivity implements OnRetrievePeertubeInterface {
private Button set_upload_submit;
- private Spinner set_upload_privacy, set_upload_channel;
+ private Spinner set_upload_privacy, set_upload_categories, set_upload_licenses, set_upload_languages, set_upload_channel;
+ private EditText p_video_title, p_video_description;
+ private TagsEditText p_video_tags;
+ private CheckBox set_upload_nsfw, set_upload_enable_comments;
private TextView set_upload_file_name;
private HashMap<String, String> channels;
private String videoId;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -107,10 +118,99 @@ public class PeertubeEditUploadActivity extends BaseActivity implements OnRetrie
setContentView(R.layout.activity_peertube_edit);
- set_upload_file_name = findViewById(R.id.set_upload_file_name);
- set_upload_channel = findViewById(R.id.set_upload_channel);
- set_upload_privacy = findViewById(R.id.set_upload_privacy);
set_upload_submit = findViewById(R.id.set_upload_submit);
+ set_upload_privacy = findViewById(R.id.set_upload_privacy);
+ set_upload_channel = findViewById(R.id.set_upload_channel);
+ set_upload_categories = findViewById(R.id.set_upload_categories);
+ set_upload_licenses = findViewById(R.id.set_upload_licenses);
+ set_upload_languages = findViewById(R.id.set_upload_languages);
+ p_video_title = findViewById(R.id.p_video_title);
+ p_video_description = findViewById(R.id.p_video_description);
+ p_video_tags = findViewById(R.id.p_video_tags);
+ set_upload_nsfw = findViewById(R.id.set_upload_nsfw);
+ set_upload_enable_comments = findViewById(R.id.set_upload_enable_comments);
+
+
+ LinkedHashMap<Integer, String> categories = new LinkedHashMap<>(peertubeInformation.getCategories());
+ LinkedHashMap<Integer, String> licences = new LinkedHashMap<>(peertubeInformation.getLicences());
+ LinkedHashMap<Integer, String> privacies = new LinkedHashMap<>(peertubeInformation.getPrivacies());
+ LinkedHashMap<String, String> languages = new LinkedHashMap<>(peertubeInformation.getLanguages());
+ LinkedHashMap<String, String> translations = null;
+ if( peertubeInformation.getTranslations() != null)
+ translations = new LinkedHashMap<>(peertubeInformation.getTranslations());
+
+ //Populate catgories
+ String[] categoriesA = new String[categories.size()];
+ Iterator it = categories.entrySet().iterator();
+ int i = 0;
+ while (it.hasNext()) {
+ Map.Entry pair = (Map.Entry)it.next();
+ if( translations == null ||translations.size() == 0 || !translations.containsKey((String)pair.getValue()))
+ categoriesA[i] = (String)pair.getValue();
+ else
+ categoriesA[i] = translations.get((String)pair.getValue());
+ it.remove();
+ i++;
+ }
+ ArrayAdapter<String> adapterCatgories = new ArrayAdapter<>(PeertubeEditUploadActivity.this,
+ android.R.layout.simple_spinner_dropdown_item, categoriesA);
+ set_upload_categories.setAdapter(adapterCatgories);
+
+
+
+ //Populate licenses
+ String[] licensesA = new String[licences.size()];
+ it = licences.entrySet().iterator();
+ i = 0;
+ while (it.hasNext()) {
+ Map.Entry pair = (Map.Entry)it.next();
+ if( translations == null || translations.size() == 0 || !translations.containsKey((String)pair.getValue()))
+ licensesA[i] = (String)pair.getValue();
+ else
+ licensesA[i] = translations.get((String)pair.getValue());
+ it.remove();
+ i++;
+ }
+ ArrayAdapter<String> adapterLicenses = new ArrayAdapter<>(PeertubeEditUploadActivity.this,
+ android.R.layout.simple_spinner_dropdown_item, licensesA);
+ set_upload_licenses.setAdapter(adapterLicenses);
+
+
+ //Populate languages
+ String[] languagesA = new String[languages.size()];
+ it = languages.entrySet().iterator();
+ i = 0;
+ while (it.hasNext()) {
+ Map.Entry pair = (Map.Entry)it.next();
+ if( translations == null || translations.size() == 0 || !translations.containsKey((String)pair.getValue()))
+ languagesA[i] = (String)pair.getValue();
+ else
+ languagesA[i] = translations.get((String)pair.getValue());
+ it.remove();
+ i++;
+ }
+ ArrayAdapter<String> adapterLanguages = new ArrayAdapter<>(PeertubeEditUploadActivity.this,
+ android.R.layout.simple_spinner_dropdown_item, languagesA);
+ set_upload_languages.setAdapter(adapterLanguages);
+
+
+ //Populate languages
+ String[] privaciesA = new String[privacies.size()];
+ it = privacies.entrySet().iterator();
+ i = 0;
+ while (it.hasNext()) {
+ Map.Entry pair = (Map.Entry)it.next();
+ if( translations == null || translations.size() == 0 || !translations.containsKey((String)pair.getValue()))
+ privaciesA[i] = (String)pair.getValue();
+ else
+ privaciesA[i] = translations.get((String)pair.getValue());
+ it.remove();
+ i++;
+ }
+ ArrayAdapter<String> adapterPrivacies = new ArrayAdapter<>(PeertubeEditUploadActivity.this,
+ android.R.layout.simple_spinner_dropdown_item, privaciesA);
+ set_upload_privacy.setAdapter(adapterPrivacies);
+
String peertubeInstance = Helper.getLiveInstance(getApplicationContext());
new RetrievePeertubeSingleAsyncTask(PeertubeEditUploadActivity.this, peertubeInstance, videoId, PeertubeEditUploadActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
@@ -135,6 +235,88 @@ public class PeertubeEditUploadActivity extends BaseActivity implements OnRetrie
Peertube peertube = apiResponse.getPeertubes().get(0);
new RetrievePeertubeChannelsAsyncTask(PeertubeEditUploadActivity.this, PeertubeEditUploadActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
//TODO: hydrate form
+
+ String language = peertube.getLanguage();
+ String license = peertube.getLicense();
+ String description = peertube.getDescription();
+ String privacy = peertube.getPrivacy();
+ String category = peertube.getCategory();
+ Account channel = peertube.getChannel();
+ String title = peertube.getName();
+ boolean commentEnabled = peertube.isCommentsEnabled();
+ boolean isNSFW = peertube.isSensitive();
+
+ set_upload_enable_comments.setChecked(commentEnabled);
+ set_upload_nsfw.setChecked(isNSFW);
+
+ p_video_title.setText(title);
+ p_video_description.setText(description);
+
+
+ LinkedHashMap<Integer, String> categories = new LinkedHashMap<>(peertubeInformation.getCategories());
+ LinkedHashMap<Integer, String> licences = new LinkedHashMap<>(peertubeInformation.getLicences());
+ LinkedHashMap<Integer, String> privacies = new LinkedHashMap<>(peertubeInformation.getPrivacies());
+ LinkedHashMap<String, String> languages = new LinkedHashMap<>(peertubeInformation.getLanguages());
+ LinkedHashMap<String, String> translations = null;
+ if( peertubeInformation.getTranslations() != null)
+ translations = new LinkedHashMap<>(peertubeInformation.getTranslations());
+
+
+ int languagePosition = 0;
+ if( languages.containsValue(language)){
+ Iterator it = languages.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry pair = (Map.Entry)it.next();
+ if(pair.getValue().equals(language))
+ break;
+ it.remove();
+ languagePosition++;
+ }
+ }
+ int privacyPosition = 0;
+ if( privacies.containsValue(privacy)){
+ Iterator it = privacies.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry pair = (Map.Entry)it.next();
+ if(pair.getValue().equals(privacy))
+ break;
+ it.remove();
+ privacyPosition++;
+ }
+ }
+ int licensePosition = 0;
+ if( licences.containsValue(license)){
+ Iterator it = licences.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry pair = (Map.Entry)it.next();
+ if(pair.getValue().equals(license))
+ break;
+ it.remove();
+ licensePosition++;
+ }
+ }
+ int categoryPosition = 0;
+ if( categories.containsValue(category)){
+ Iterator it = categories.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry pair = (Map.Entry)it.next();
+ if(pair.getValue().equals(category))
+ break;
+ it.remove();
+ categoryPosition++;
+ }
+ }
+
+ set_upload_privacy.setSelection(privacyPosition);
+ set_upload_languages.setSelection(languagePosition);
+ set_upload_licenses.setSelection(licensePosition);
+ set_upload_categories.setSelection(categoryPosition);
+
+ List<String> tags = peertube.getTags();
+ if( tags != null && tags.size() > 0) {
+ String[] tagsA = tags.toArray(new String[tags.size()]);
+ p_video_tags.setTags(tagsA);
+ }
}
@Override
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java
index f32f2ea05..fd7478d3f 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java
@@ -1868,6 +1868,8 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount
private void restoreToot(long id){
SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
StoredStatus draft = new StatusStoredDAO(TootActivity.this, db).getStatus(id);
+ if( draft == null)
+ return;
Status status = draft.getStatus();
//Retrieves attachments
if( removed ){
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrievePeertubeSingleAsyncTask.java b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrievePeertubeSingleAsyncTask.java
index 14d57b6e0..950ace0b7 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrievePeertubeSingleAsyncTask.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrievePeertubeSingleAsyncTask.java
@@ -54,11 +54,16 @@ public class RetrievePeertubeSingleAsyncTask extends AsyncTask<Void, Void, Void>
@Override
protected Void doInBackground(Void... params) {
- API api = new API(this.contextReference.get());
- apiResponse = api.getSinglePeertube(this.instanceName, videoId);
- if(MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE && apiResponse.getPeertubes() != null && apiResponse.getPeertubes().size() > 0) {
- String rate = new PeertubeAPI(this.contextReference.get()).getRating(videoId);
- apiResponse.getPeertubes().get(0).setMyRating(rate);
+ if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON) {
+ API api = new API(this.contextReference.get());
+ apiResponse = api.getSinglePeertube(this.instanceName, videoId);
+ }else if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE){
+ PeertubeAPI peertubeAPI = new PeertubeAPI(this.contextReference.get());
+ apiResponse = peertubeAPI.getSinglePeertube(this.instanceName, videoId);
+ if (apiResponse.getPeertubes() != null && apiResponse.getPeertubes().size() > 0) {
+ String rate = new PeertubeAPI(this.contextReference.get()).getRating(videoId);
+ apiResponse.getPeertubes().get(0).setMyRating(rate);
+ }
}
return null;
}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Peertube.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Peertube.java
index 643c0e06d..49d15d2bf 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Peertube.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Peertube.java
@@ -40,12 +40,15 @@ public class Peertube {
private int duration;
private String instance;
private Account account;
+ private Account channel;
private List<String> resolution;
+ private List<String> tags;
private boolean commentsEnabled;
private boolean sensitive;
private String category;
private String license;
private String language;
+ private String privacy;
private String myRating = "none";
private JSONObject cache;
@@ -272,4 +275,28 @@ public class Peertube {
public void setMyRating(String myRating) {
this.myRating = myRating;
}
+
+ public Account getChannel() {
+ return channel;
+ }
+
+ public void setChannel(Account channel) {
+ this.channel = channel;
+ }
+
+ public String getPrivacy() {
+ return privacy;
+ }
+
+ public void setPrivacy(String privacy) {
+ this.privacy = privacy;
+ }
+
+ public List<String> getTags() {
+ return tags;
+ }
+
+ public void setTags(List<String> tags) {
+ this.tags = tags;
+ }
}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/PeertubeInformation.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/PeertubeInformation.java
index c0e33c6df..265b6ab85 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/PeertubeInformation.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/PeertubeInformation.java
@@ -1,8 +1,6 @@
package fr.gouv.etalab.mastodon.client.Entities;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.LinkedHashMap;
/* Copyright 2019 Thomas Schneider
*
@@ -23,15 +21,15 @@ import java.util.Map;
public class PeertubeInformation {
- private HashMap<Integer, String> categories;
- private HashMap<String, String> languages;
- private HashMap<Integer, String> licences;
- private HashMap<Integer, String> privacies;
- private HashMap<String, String> translations;
+ private LinkedHashMap<Integer, String> categories;
+ private LinkedHashMap<String, String> languages;
+ private LinkedHashMap<Integer, String> licences;
+ private LinkedHashMap<Integer, String> privacies;
+ private LinkedHashMap<String, String> translations;
- public static final Map<String, String> langueMapped;
+ public static final LinkedHashMap<String, String> langueMapped;
static {
- HashMap<String, String> aMap = new HashMap<>();
+ LinkedHashMap<String, String> aMap = new LinkedHashMap<>();
aMap.put("ca", "ca-ES");
aMap.put("de", "de-DE");
aMap.put("en", "en-US");
@@ -45,47 +43,47 @@ public class PeertubeInformation {
aMap.put("cs", "cs-CZ");
aMap.put("zh-CN", "zh-Hans-CN");
aMap.put("zh-TW", "zh-Hans-TW");
- langueMapped = Collections.unmodifiableMap(aMap);
+ langueMapped = aMap;
}
- public HashMap<String, String> getTranslations() {
+ public LinkedHashMap<String, String> getTranslations() {
return translations;
}
- public void setTranslations(HashMap<String, String> translations) {
+ public void setTranslations(LinkedHashMap<String, String> translations) {
this.translations = translations;
}
- public HashMap<Integer, String> getCategories() {
+ public LinkedHashMap<Integer, String> getCategories() {
return categories;
}
- public void setCategories(HashMap<Integer, String> categories) {
+ public void setCategories(LinkedHashMap<Integer, String> categories) {
this.categories = categories;
}
- public HashMap<String, String> getLanguages() {
+ public LinkedHashMap<String, String> getLanguages() {
return languages;
}
- public void setLanguages(HashMap<String, String> languages) {
+ public void setLanguages(LinkedHashMap<String, String> languages) {
this.languages = languages;
}
- public HashMap<Integer, String> getLicences() {
+ public LinkedHashMap<Integer, String> getLicences() {
return licences;
}
- public void setLicences(HashMap<Integer, String> licences) {
+ public void setLicences(LinkedHashMap<Integer, String> licences) {
this.licences = licences;
}
- public HashMap<Integer, String> getPrivacies() {
+ public LinkedHashMap<Integer, String> getPrivacies() {
return privacies;
}
- public void setPrivacies(HashMap<Integer, String> privacies) {
+ public void setPrivacies(LinkedHashMap<Integer, String> privacies) {
this.privacies = privacies;
}
}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java
index 6624eb9b9..dc6aed3e3 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java
@@ -40,7 +40,6 @@ import java.util.Map;
import fr.gouv.etalab.mastodon.R;
import fr.gouv.etalab.mastodon.client.Entities.Account;
-import fr.gouv.etalab.mastodon.client.Entities.Application;
import fr.gouv.etalab.mastodon.client.Entities.Attachment;
import fr.gouv.etalab.mastodon.client.Entities.Card;
import fr.gouv.etalab.mastodon.client.Entities.Conversation;
@@ -50,14 +49,11 @@ import fr.gouv.etalab.mastodon.client.Entities.Filters;
import fr.gouv.etalab.mastodon.client.Entities.HowToVideo;
import fr.gouv.etalab.mastodon.client.Entities.Instance;
import fr.gouv.etalab.mastodon.client.Entities.InstanceSocial;
-import fr.gouv.etalab.mastodon.client.Entities.Mention;
-import fr.gouv.etalab.mastodon.client.Entities.Notification;
import fr.gouv.etalab.mastodon.client.Entities.Peertube;
import fr.gouv.etalab.mastodon.client.Entities.PeertubeInformation;
import fr.gouv.etalab.mastodon.client.Entities.Relationship;
import fr.gouv.etalab.mastodon.client.Entities.Results;
import fr.gouv.etalab.mastodon.client.Entities.Status;
-import fr.gouv.etalab.mastodon.client.Entities.Tag;
import fr.gouv.etalab.mastodon.helper.Helper;
import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
@@ -216,7 +212,7 @@ public class PeertubeAPI {
String response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/categories"), 60, null, null);
JSONObject categories = new JSONObject(response);
- HashMap<Integer, String> _pcategories = new HashMap<>();
+ LinkedHashMap<Integer, String> _pcategories = new LinkedHashMap<>();
for( int i = 1 ; i <= categories.length() ; i++){
_pcategories.put(i, categories.getString(String.valueOf(i)));
@@ -225,7 +221,7 @@ public class PeertubeAPI {
response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/languages"), 60, null, null);
JSONObject languages = new JSONObject(response);
- HashMap<String, String> _languages = new HashMap<>();
+ LinkedHashMap<String, String> _languages = new LinkedHashMap<>();
Iterator<String> iter = languages.keys();
while (iter.hasNext()) {
String key = iter.next();
@@ -237,7 +233,7 @@ public class PeertubeAPI {
response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/privacies"), 60, null, null);
JSONObject privacies = new JSONObject(response);
- HashMap<Integer, String> _pprivacies = new HashMap<>();
+ LinkedHashMap<Integer, String> _pprivacies = new LinkedHashMap<>();
for( int i = 1 ; i <= privacies.length() ; i++){
_pprivacies.put(i, privacies.getString(String.valueOf(i)));
@@ -247,7 +243,7 @@ public class PeertubeAPI {
response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/licences"), 60, null, null);
JSONObject licences = new JSONObject(response);
- HashMap<Integer, String> _plicences = new HashMap<>();
+ LinkedHashMap<Integer, String> _plicences = new LinkedHashMap<>();
for( int i = 1 ; i <= licences.length() ; i++){
_plicences.put(i, licences.getString(String.valueOf(i)));
@@ -256,22 +252,24 @@ public class PeertubeAPI {
String instance = Helper.getLiveInstance(context);
- String lang;
+ String lang = null;
if(PeertubeInformation.langueMapped.containsKey( Locale.getDefault().getLanguage()))
lang = PeertubeInformation.langueMapped.get(Locale.getDefault().getLanguage());
- else
- lang = "en-US";
- response = new HttpsConnection(context).get(String.format( "https://"+instance+"/client/locales/%s/server.json", lang), 60, null, null);
- JSONObject translations = new JSONObject(response);
- HashMap<String, String> _translations = new HashMap<>();
- Iterator<String> itertrans = translations.keys();
- while (itertrans.hasNext()) {
- String key = itertrans.next();
- try {
- _translations.put(key, (String) translations.get(key));
- } catch (JSONException ignored) {}
+
+ if( lang != null && !lang.startsWith("en")) {
+ response = new HttpsConnection(context).get(String.format("https://" + instance + "/client/locales/%s/server.json", lang), 60, null, null);
+ JSONObject translations = new JSONObject(response);
+ LinkedHashMap<String, String> _translations = new LinkedHashMap<>();
+ Iterator<String> itertrans = translations.keys();
+ while (itertrans.hasNext()) {
+ String key = itertrans.next();
+ try {
+ _translations.put(key, (String) translations.get(key));
+ } catch (JSONException ignored) {
+ }
+ }
+ peertubeInformation.setTranslations(_translations);
}
- peertubeInformation.setTranslations(_translations);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
@@ -595,173 +593,6 @@ public class PeertubeAPI {
}
- /**
- * Retrieves one status *synchronously*
- *
- * @param statusId String Id of the status
- * @return APIResponse
- */
- public APIResponse getStatusbyId(String statusId) {
- statuses = new ArrayList<>();
-
- try {
- HttpsConnection httpsConnection = new HttpsConnection(context);
- String response = httpsConnection.get(getAbsoluteUrl(String.format("/statuses/%s", statusId)), 60, null, prefKeyOauthTokenT);
- Status status = parseStatuses(context, new JSONObject(response));
- statuses.add(status);
- } catch (HttpsConnection.HttpsConnectionException e) {
- setError(e.getStatusCode(), e);
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (KeyManagementException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- apiResponse.setStatuses(statuses);
- return apiResponse;
- }
-
- /**
- * Retrieves the context of status with replies *synchronously*
- *
- * @param statusId Id of the status
- * @return List<Status>
- */
- public fr.gouv.etalab.mastodon.client.Entities.Context getStatusContext(String statusId) {
- fr.gouv.etalab.mastodon.client.Entities.Context statusContext = new fr.gouv.etalab.mastodon.client.Entities.Context();
- try {
- HttpsConnection httpsConnection = new HttpsConnection(context);
- String response = httpsConnection.get(getAbsoluteUrl(String.format("/statuses/%s/context", statusId)), 60, null, prefKeyOauthTokenT);
- statusContext = parseContext(new JSONObject(response));
- } catch (HttpsConnection.HttpsConnectionException e) {
- setError(e.getStatusCode(), e);
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (KeyManagementException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- return statusContext;
- }
-
-
- /**
- * Retrieves direct timeline for the account *synchronously*
- * @param max_id String id max
- * @return APIResponse
- */
- public APIResponse getDirectTimeline( String max_id) {
- return getDirectTimeline(max_id, null, tootPerPage);
- }
-
- /**
- * Retrieves conversation timeline for the account *synchronously*
- * @param max_id String id max
- * @return APIResponse
- */
- public APIResponse getConversationTimeline( String max_id) {
- return getConversationTimeline(max_id, null, tootPerPage);
- }
-
- /**
- * Retrieves direct timeline for the account since an Id value *synchronously*
- * @return APIResponse
- */
- public APIResponse getConversationTimelineSinceId(String since_id) {
- return getConversationTimeline(null, since_id, tootPerPage);
- }
-
- /**
- * Retrieves conversation timeline for the account *synchronously*
- * @param max_id String id max
- * @param since_id String since the id
- * @param limit int limit - max value 40
- * @return APIResponse
- */
- private APIResponse getConversationTimeline(String max_id, String since_id, int limit) {
-
- HashMap<String, String> params = new HashMap<>();
- if (max_id != null)
- params.put("max_id", max_id);
- if (since_id != null)
- params.put("since_id", since_id);
- if (0 > limit || limit > 80)
- limit = 80;
- params.put("limit",String.valueOf(limit));
- conversations = new ArrayList<>();
- try {
- HttpsConnection httpsConnection = new HttpsConnection(context);
- String response = httpsConnection.get(getAbsoluteUrl("/conversations"), 60, params, prefKeyOauthTokenT);
- apiResponse.setSince_id(httpsConnection.getSince_id());
- apiResponse.setMax_id(httpsConnection.getMax_id());
- conversations = parseConversations(new JSONArray(response));
- } catch (HttpsConnection.HttpsConnectionException e) {
- setError(e.getStatusCode(), e);
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (KeyManagementException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- apiResponse.setConversations(conversations);
- return apiResponse;
- }
-
- /**
- * Retrieves direct timeline for the account since an Id value *synchronously*
- * @return APIResponse
- */
- public APIResponse getDirectTimelineSinceId(String since_id) {
- return getDirectTimeline(null, since_id, tootPerPage);
- }
-
- /**
- * Retrieves direct timeline for the account *synchronously*
- * @param max_id String id max
- * @param since_id String since the id
- * @param limit int limit - max value 40
- * @return APIResponse
- */
- private APIResponse getDirectTimeline(String max_id, String since_id, int limit) {
-
- HashMap<String, String> params = new HashMap<>();
- if (max_id != null)
- params.put("max_id", max_id);
- if (since_id != null)
- params.put("since_id", since_id);
- if (0 > limit || limit > 80)
- limit = 80;
- params.put("limit",String.valueOf(limit));
- statuses = new ArrayList<>();
- try {
- HttpsConnection httpsConnection = new HttpsConnection(context);
- String response = httpsConnection.get(getAbsoluteUrl("/timelines/direct"), 60, params, prefKeyOauthTokenT);
- apiResponse.setSince_id(httpsConnection.getSince_id());
- apiResponse.setMax_id(httpsConnection.getMax_id());
- statuses = parseStatuses(context, new JSONArray(response));
- } catch (HttpsConnection.HttpsConnectionException e) {
- setError(e.getStatusCode(), e);
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (KeyManagementException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- apiResponse.setStatuses(statuses);
- return apiResponse;
- }
/**
@@ -1273,78 +1104,6 @@ public class PeertubeAPI {
- /**
- * Retrieves notifications for the authenticated account *synchronously*
- * @param max_id String id max
- * @param since_id String since the id
- * @param limit int limit - max value 40
- * @return APIResponse
- */
- private APIResponse getNotifications(String max_id, String since_id, int limit, boolean display){
-
- HashMap<String, String> params = new HashMap<>();
- if( max_id != null )
- params.put("max_id", max_id);
- if( since_id != null )
- params.put("since_id", since_id);
- if( 0 > limit || limit > 30)
- limit = 30;
- params.put("limit",String.valueOf(limit));
-
- final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
- boolean notif_follow, notif_add, notif_mention, notif_share;
- if( display) {
- notif_follow = sharedpreferences.getBoolean(Helper.SET_NOTIF_FOLLOW_FILTER, true);
- notif_add = sharedpreferences.getBoolean(Helper.SET_NOTIF_ADD_FILTER, true);
- notif_mention = sharedpreferences.getBoolean(Helper.SET_NOTIF_MENTION_FILTER, true);
- notif_share = sharedpreferences.getBoolean(Helper.SET_NOTIF_SHARE_FILTER, true);
- }else{
- notif_follow = sharedpreferences.getBoolean(Helper.SET_NOTIF_FOLLOW, true);
- notif_add = sharedpreferences.getBoolean(Helper.SET_NOTIF_ADD, true);
- notif_mention = sharedpreferences.getBoolean(Helper.SET_NOTIF_MENTION, true);
- notif_share = sharedpreferences.getBoolean(Helper.SET_NOTIF_SHARE, true);
- }
- StringBuilder parameters = new StringBuilder();
-
- if( !notif_follow )
- parameters.append("exclude_types[]=").append("follow").append("&");
- if( !notif_add )
- parameters.append("exclude_types[]=").append("favourite").append("&");
- if( !notif_share )
- parameters.append("exclude_types[]=").append("reblog").append("&");
- if( !notif_mention )
- parameters.append("exclude_types[]=").append("mention").append("&");
- if( parameters.length() > 0) {
- parameters = new StringBuilder(parameters.substring(0, parameters.length() - 1).substring(16));
- params.put("exclude_types[]", parameters.toString());
- }
-
-
- List<Notification> notifications = new ArrayList<>();
-
- try {
- HttpsConnection httpsConnection = new HttpsConnection(context);
- String response = httpsConnection.get(getAbsoluteUrl("/notifications"), 60, params, prefKeyOauthTokenT);
- apiResponse.setSince_id(httpsConnection.getSince_id());
- apiResponse.setMax_id(httpsConnection.getMax_id());
- notifications = parseNotificationResponse(new JSONArray(response));
- } catch (HttpsConnection.HttpsConnectionException e) {
- setError(e.getStatusCode(), e);
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (KeyManagementException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- apiResponse.setNotifications(notifications);
- return apiResponse;
- }
-
-
-
/**
* Changes media description
@@ -1378,39 +1137,6 @@ public class PeertubeAPI {
return attachment;
}
- /**
- * Retrieves Accounts and feeds when searching *synchronously*
- *
- * @param query String search
- * @return List<Account&g