summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/fr/gouv/etalab/mastodon
diff options
context:
space:
mode:
authorstom79 <tschneider.ac@gmail.com>2019-01-09 18:26:25 +0100
committerstom79 <tschneider.ac@gmail.com>2019-01-09 18:26:25 +0100
commit56054f03a2482314742da7741defe01f6672213b (patch)
tree8154ffccaba83b1416305e781fff7192047439c0 /app/src/main/java/fr/gouv/etalab/mastodon
parent3f76b8b8361b3340352d1e49fd9a951f6c64a995 (diff)
Layout updates + fixes
Diffstat (limited to 'app/src/main/java/fr/gouv/etalab/mastodon')
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java579
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/drawers/PeertubeAdapter.java2
2 files changed, 1 insertions, 580 deletions
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 52d4fbf22..2977717c0 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
@@ -41,14 +41,12 @@ 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.Attachment;
-import fr.gouv.etalab.mastodon.client.Entities.Card;
import fr.gouv.etalab.mastodon.client.Entities.Conversation;
import fr.gouv.etalab.mastodon.client.Entities.Emojis;
import fr.gouv.etalab.mastodon.client.Entities.Error;
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.Peertube;
import fr.gouv.etalab.mastodon.client.Entities.PeertubeInformation;
import fr.gouv.etalab.mastodon.client.Entities.Relationship;
@@ -649,82 +647,6 @@ public class PeertubeAPI {
}
- /**
- * Retrieves accounts that reblogged the status *synchronously*
- *
- * @param statusId String Id of the status
- * @param max_id String id max
- * @return APIResponse
- */
- @SuppressWarnings("SameParameterValue")
- public APIResponse getRebloggedBy(String statusId, String max_id) {
-
- HashMap<String, String> params = new HashMap<>();
- if (max_id != null)
- params.put("max_id", max_id);
- params.put("limit", "80");
- accounts = new ArrayList<>();
- try {
- HttpsConnection httpsConnection = new HttpsConnection(context);
- String response = httpsConnection.get(getAbsoluteUrl(String.format("/statuses/%s/reblogged_by", statusId)), 60, params, prefKeyOauthTokenT);
- accounts = parseAccountResponse(new JSONArray(response));
- apiResponse.setSince_id(httpsConnection.getSince_id());
- apiResponse.setMax_id(httpsConnection.getMax_id());
- } catch (HttpsConnection.HttpsConnectionException e) {
- setError(e.getStatusCode(), e);
- e.printStackTrace();
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (KeyManagementException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- apiResponse.setAccounts(accounts);
- return apiResponse;
- }
-
-
- /**
- * Retrieves accounts that favourited the status *synchronously*
- *
- * @param statusId String Id of the status
- * @param max_id String id max
- * @return APIResponse
- */
- @SuppressWarnings("SameParameterValue")
- public APIResponse getFavouritedBy(String statusId, String max_id) {
-
- HashMap<String, String> params = new HashMap<>();
- if (max_id != null)
- params.put("max_id", max_id);
- params.put("limit", "80");
- accounts = new ArrayList<>();
- try {
- HttpsConnection httpsConnection = new HttpsConnection(context);
- String response = httpsConnection.get(getAbsoluteUrl(String.format("/statuses/%s/favourited_by", statusId)), 60, params, prefKeyOauthTokenT);
- accounts = parseAccountResponse(new JSONArray(response));
- apiResponse.setSince_id(httpsConnection.getSince_id());
- apiResponse.setMax_id(httpsConnection.getMax_id());
- } catch (HttpsConnection.HttpsConnectionException e) {
- setError(e.getStatusCode(), e);
- e.printStackTrace();
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (KeyManagementException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- apiResponse.setAccounts(accounts);
- return apiResponse;
- }
-
-
/**
@@ -1047,72 +969,6 @@ public class PeertubeAPI {
- /**
- * Retrieves following for the account specified by targetedId *synchronously*
- * @param targetedId String targetedId
- * @param max_id String id max
- * @return APIResponse
- */
- public APIResponse getFollowing(String targetedId, String max_id){
- return getAccounts(String.format("/accounts/%s/following",targetedId),max_id, null, accountPerPage);
- }
-
- /**
- * Retrieves followers for the account specified by targetedId *synchronously*
- * @param targetedId String targetedId
- * @param max_id String id max
- * @return APIResponse
- */
- public APIResponse getFollowers(String targetedId, String max_id){
- return getAccounts(String.format("/accounts/%s/followers",targetedId),max_id, null, accountPerPage);
- }
-
- /**
- * Retrieves blocked users by 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
- */
- @SuppressWarnings("SameParameterValue")
- private APIResponse getAccounts(String action, 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 > 40)
- limit = 40;
- params.put("limit",String.valueOf(limit));
- accounts = new ArrayList<>();
- try {
- HttpsConnection httpsConnection = new HttpsConnection(context);
- String response = httpsConnection.get(getAbsoluteUrl(action), 60, params, prefKeyOauthTokenT);
- apiResponse.setSince_id(httpsConnection.getSince_id());
- apiResponse.setMax_id(httpsConnection.getMax_id());
- accounts = parseAccountResponse(new JSONArray(response));
- if( accounts != null && accounts.size() == 1 ){
- if(accounts.get(0).getAcct() == null){
- Throwable error = new Throwable(context.getString(R.string.toast_error));
- setError(500, error);
- }
- }
- } 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.setAccounts(accounts);
- return apiResponse;
- }
-
/**
@@ -1270,88 +1126,6 @@ public class PeertubeAPI {
}
- /**
- * Retrieves Accounts when searching (ie: via @...) *synchronously*
- * Not limited to following
- * @param query String search
- * @return APIResponse
- */
- @SuppressWarnings("SameParameterValue")
- public APIResponse searchAccounts(String query, int count) {
- return searchAccounts(query, count, false);
- }
-
- /**
- * Retrieves Accounts when searching (ie: via @...) *synchronously*
- * @param query String search
- * @param count int limit
- * @param following boolean following only
- * @return APIResponse
- */
- public APIResponse searchAccounts(String query, int count, boolean following) {
-
- HashMap<String, String> params = new HashMap<>();
- params.put("q", query);
- if( count < 5)
- count = 5;
- if( count > 40 )
- count = 40;
- if( following)
- params.put("following", Boolean.toString(true));
- params.put("limit", String.valueOf(count));
-
- try {
- HttpsConnection httpsConnection = new HttpsConnection(context);
- String response = httpsConnection.get(getAbsoluteUrl("/accounts/search"), 60, params, prefKeyOauthTokenT);
- accounts = parseAccountResponse(new JSONArray(response));
- apiResponse.setSince_id(httpsConnection.getSince_id());
- apiResponse.setMax_id(httpsConnection.getMax_id());
- } catch (HttpsConnection.HttpsConnectionException e) {
- setError(e.getStatusCode(), e);
- e.printStackTrace();
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (KeyManagementException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- apiResponse.setAccounts(accounts);
- return apiResponse;
- }
-
-
-
- /**
- * Retrieves Accounts when searching (ie: via @...) *synchronously*
- *
- * @return APIResponse
- */
- public APIResponse getCustomEmoji() {
- List<Emojis> emojis = new ArrayList<>();
- try {
- HttpsConnection httpsConnection = new HttpsConnection(context);
- String response = httpsConnection.get(getAbsoluteUrl("/custom_emojis"), 60, null, prefKeyOauthTokenT);
- emojis = parseEmojis(new JSONArray(response));
- apiResponse.setSince_id(httpsConnection.getSince_id());
- apiResponse.setMax_id(httpsConnection.getMax_id());
-
- } 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.setEmojis(emojis);
- return apiResponse;
- }
/**
@@ -1560,218 +1334,6 @@ public class PeertubeAPI {
return apiResponse;
}
-
-
- /**
- * Get accounts in a list for a user
- * @param listId String, id of the list
- * @param limit int, limit of results
- * @return APIResponse
- */
- @SuppressWarnings("SameParameterValue")
- public APIResponse getAccountsInList(String listId, int limit){
-
- HashMap<String, String> params = new HashMap<>();
- if( limit < 0)
- limit = 0;
- if( limit > 50 )
- limit = 50;
- params.put("limit",String.valueOf(limit));
- try {
- HttpsConnection httpsConnection = new HttpsConnection(context);
- String response = httpsConnection.get(getAbsoluteUrl(String.format("/lists/%s/accounts", listId)), 60, params, prefKeyOauthTokenT);
- accounts = parseAccountResponse(new JSONArray(response));
- apiResponse.setSince_id(httpsConnection.getSince_id());
- apiResponse.setMax_id(httpsConnection.getMax_id());
- } 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.setAccounts(accounts);
- return apiResponse;
- }
-
-
-
- /**
- * Get a list
- * @param id String, id of the list
- * @return APIResponse
- */
- @SuppressWarnings("unused")
- public APIResponse getList(String id){
-
- List<fr.gouv.etalab.mastodon.client.Entities.List> lists = new ArrayList<>();
- fr.gouv.etalab.mastodon.client.Entities.List list;
- try {
- String response = new HttpsConnection(context).get(getAbsoluteUrl(String.format("/lists/%s",id)), 60, null, prefKeyOauthTokenT);
- list = parseList(new JSONObject(response));
- lists.add(list);
- } 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.setLists(lists);
- return apiResponse;
- }
-
-
-
-
-
- /**
- * Parse json response an unique Car
- * @param resobj JSONObject
- * @return Card
- */
- private static Card parseCardResponse(JSONObject resobj){
-
- Card card = new Card();
- try {
- card.setUrl(resobj.get("url").toString());
- card.setTitle(resobj.get("title").toString());
- card.setDescription(resobj.get("description").toString());
- card.setImage(resobj.get("image").toString());
- card.setHtml(resobj.get("html").toString());
- card.setType(resobj.get("type").toString());
- try {
- card.setAuthor_name(resobj.get("author_name").toString());
- }catch (Exception e){
- e.printStackTrace();
- card.setAuthor_name(null);
- }
- try {
- card.setAuthor_url(resobj.get("author_url").toString());
- }catch (Exception e){
- e.printStackTrace();
- card.setAuthor_url(null);
- }
- try {
- card.setEmbed_url(resobj.get("embed_url").toString());
- }catch (Exception e){
- e.printStackTrace();
- card.setEmbed_url(null);
- }
- try {
- card.setProvider_name(resobj.get("provider_name").toString());
- }catch (Exception e){
- e.printStackTrace();
- card.setProvider_name(null);
- }
- try {
- card.setProvider_url(resobj.get("provider_url").toString());
- }catch (Exception e){
- e.printStackTrace();
- card.setProvider_url(null);
- }
- try {
- card.setHeight(Integer.parseInt(resobj.get("height").toString()));
- }catch (Exception e){
- e.printStackTrace();
- card.setHeight(0);
- }
- try {
- card.setWidth(Integer.parseInt(resobj.get("width").toString()));
- }catch (Exception e){
- e.printStackTrace();
- card.setWidth(0);
- }
- } catch (JSONException e) {
- e.printStackTrace();
- card = null;
- }
- return card;
- }
-
- /**
- * Parse json response an unique instance social result
- * @param resobj JSONObject
- * @return InstanceSocial
- */
- public static InstanceSocial parseInstanceSocialResponse(Context context, JSONObject resobj){
-
- InstanceSocial instanceSocial = new InstanceSocial();
- try {
-
-
- instanceSocial.setUptime(Float.parseFloat(resobj.get("uptime").toString()));
- instanceSocial.setUp(Boolean.parseBoolean(resobj.get("up").toString()));
-
- instanceSocial.setConnections(Long.parseLong(resobj.get("connections").toString()));
- instanceSocial.setDead(Boolean.parseBoolean(resobj.get("dead").toString()));
-
-
- instanceSocial.setId(resobj.get("id").toString());
-
- instanceSocial.setInfo(resobj.get("info").toString());
- instanceSocial.setVersion(resobj.get("version").toString());
- instanceSocial.setName(resobj.get("name").toString());
- instanceSocial.setObs_rank(resobj.get("obs_rank").toString());
- instanceSocial.setThumbnail(resobj.get("thumbnail").toString());
- instanceSocial.setIpv6(Boolean.parseBoolean(resobj.get("ipv6").toString()));
- instanceSocial.setObs_score(Integer.parseInt(resobj.get("obs_score").toString()));
- instanceSocial.setOpen_registrations(Boolean.parseBoolean(resobj.get("open_registrations").toString()));
-
- instanceSocial.setUsers(Long.parseLong(resobj.get("users").toString()));
- instanceSocial.setStatuses(Long.parseLong(resobj.get("statuses").toString()));
-
- instanceSocial.setHttps_rank(resobj.get("https_rank").toString());
- instanceSocial.setHttps_score(Integer.parseInt(resobj.get("https_score").toString()));
- instanceSocial.setAdded_at(Helper.mstStringToDate(context, resobj.get("added_at").toString()));
- instanceSocial.setChecked_at(Helper.mstStringToDate(context, resobj.get("checked_at").toString()));
- instanceSocial.setUpdated_at(Helper.mstStringToDate(context, resobj.get("updated_at").toString()));
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- return instanceSocial;
- }
-
-
- /**
- * Parse Domains
- * @param jsonArray JSONArray
- * @return List<String> of domains
- */
- private List<String> parseDomains(JSONArray jsonArray){
- List<String> list_tmp = new ArrayList<>();
- for(int i = 0; i < jsonArray.length(); i++){
- try {
- list_tmp.add(jsonArray.getString(i));
- } catch (JSONException ignored) {}
- }
- return list_tmp;
- }
-
-
- /**
- * Parse Tags
- * @param jsonArray JSONArray
- * @return List<String> of tags
- */
- private List<String> parseTags(JSONArray jsonArray){
- List<String> list_tmp = new ArrayList<>();
- for(int i = 0; i < jsonArray.length(); i++){
- try {
- list_tmp.add(jsonArray.getString(i));
- } catch (JSONException ignored) {}
- }
- return list_tmp;
- }
/**
* Parse json response for several howto
* @param jsonArray JSONArray
@@ -2271,149 +1833,8 @@ public class PeertubeAPI {
return account;
}
- /**
- * Parse json response an unique account
- * @param resobj JSONObject
- * @return Account
- */
- @SuppressWarnings("InfiniteRecursion")
- private static Account parseAccountResponse(Context context, JSONObject resobj){
-
- Account account = new Account();
- try {
- account.setId(resobj.get("id").toString());
- account.setUsername(resobj.get("username").toString());
- account.setAcct(resobj.get("acct").toString());
- account.setDisplay_name(resobj.get("display_name").toString());
- account.setLocked(Boolean.parseBoolean(resobj.get("locked").toString()));
- account.setCreated_at(Helper.mstStringToDate(context, resobj.get("created_at").toString()));
- account.setFollowers_count(Integer.valueOf(resobj.get("followers_count").toString()));
- account.setFollowing_count(Integer.valueOf(resobj.get("following_count").toString()));
- account.setStatuses_count(Integer.valueOf(resobj.get("statuses_count").toString()));
- account.setNote(resobj.get("note").toString());
- try {
- account.setBot(Boolean.parseBoolean(resobj.get("bot").toString()));
- }catch (Exception e){
- account.setBot(false);
- }
- try{
- account.setMoved_to_account(parseAccountResponse(context, resobj.getJSONObject("moved")));
- }catch (Exception ignored){account.setMoved_to_account(null);}
- account.setUrl(resobj.get("url").toString());
- account.setAvatar(resobj.get("avatar").toString());
- account.setAvatar_static(resobj.get("avatar_static").toString());
- account.setHeader(resobj.get("header").toString());
- account.setHeader_static(resobj.get("header_static").toString());
- try {
- JSONArray fields = resobj.getJSONArray("fields");
- LinkedHashMap<String, String> fieldsMap = new LinkedHashMap<>();
- LinkedHashMap<String, Boolean> fieldsMapVerified = new LinkedHashMap<>();
- if( fields != null){
- for(int j = 0 ; j < fields.length() ; j++){
- fieldsMap.put(fields.getJSONObject(j).getString("name"),fields.getJSONObject(j).getString("value"));
- try {
- fieldsMapVerified.put(fields.getJSONObject(j).getString("name"),(fields.getJSONObject(j).getString("verified_at")!= null && !fields.getJSONObject(j).getString("verified_at").equals("null")));
- }catch (Exception e){
- fieldsMapVerified.put(fields.getJSONObject(j).getString("name"),false);
- }
-
- }
- }
- account.setFields(fieldsMap);
- account.setFieldsVerified(fieldsMapVerified);
- }catch (Exception ignored){}
-
- //Retrieves emjis
- List<Emojis> emojiList = new ArrayList<>();
- try {
- JSONArray emojisTag = resobj.getJSONArray("emojis");
- if( emojisTag != null){
- for(int j = 0 ; j < emojisTag.length() ; j++){
- JSONObject emojisObj = emojisTag.getJSONObject(j);
- Emojis emojis = parseEmojis(emojisObj);
- emojiList.add(emojis);
- }
- }
- account.setEmojis(emojiList);
- }catch (Exception e){
- account.setEmojis(new ArrayList<>());
- }
- } catch (JSONException ignored) {} catch (ParseException e) {
- e.printStackTrace();
- }
- return account;
- }
-
- /**
- * Parse json response an unique account
- * @param resobj JSONObject
- * @return Account
- */
- @SuppressWarnings("InfiniteRecursion")
- private static Account parseMisskeyAccountResponse(Context context, String instance, JSONObject resobj){
- Account account = new Account();
- try {
- account.setId(resobj.get("id").toString());
- account.setUsername(resobj.get("username").toString());
- String host = resobj.get("host").toString();
- String acct;
- if( host == null || host.equals("null"))
- acct = resobj.get("username").toString();
- else
- acct = resobj.get("username").toString() + "@" + host;
- account.setAcct(acct);
- account.setDisplay_name(resobj.get("name").toString());
- account.setCreated_at(new Date());
-
- account.setUrl("https://" + instance + "/@"+account.getUsername());
- account.setAvatar(resobj.get("avatarUrl").toString());
- account.setAvatar_static(resobj.get("avatarUrl").toString());
- try {
- account.setBot(Boolean.parseBoolean(resobj.get("isBot").toString()));
- }catch (Exception e){
- account.setBot(false);
- }
- //Retrieves emjis
- List<Emojis> emojiList = new ArrayList<>();
- try {
- JSONArray emojisTag = resobj.getJSONArray("emojis");
- if( emojisTag != null){
- for(int j = 0 ; j < emojisTag.length() ; j++){
- JSONObject emojisObj = emojisTag.getJSONObject(j);
- Emojis emojis = parseEmojis(emojisObj);
- emojiList.add(emojis);
- }
- }
- account.setEmojis(emojiList);
- }catch (Exception e){
- account.setEmojis(new ArrayList<>());
- }
- } catch (JSONException ignored) {}
- return account;
- }
- /**
- * Parse json response for list of accounts
- * @param jsonArray JSONArray
- * @return List<Account>
- */
- private List<Account> parseAccountResponse(JSONArray jsonArray){
-
- List<Account> accounts = new ArrayList<>();
- try {
- int i = 0;
- while (i < jsonArray.length() ) {
- JSONObject resobj = jsonArray.getJSONObject(i);
- Account account = parseAccountResponse(context, resobj);
- accounts.add(account);
- i++;
- }
- } catch (JSONException e) {
- setDefaultError(e);
- }
- return accounts;
- }
/**
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/PeertubeAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/PeertubeAdapter.java
index cb325f144..6a26df057 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/PeertubeAdapter.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/PeertubeAdapter.java
@@ -116,7 +116,7 @@ public class PeertubeAdapter extends RecyclerView.Adapter implements OnListActio
Glide.with(holder.peertube_video_image.getContext())
.load("https://" + peertube.getInstance() + peertube.getThumbnailPath())
.into(holder.peertube_video_image);
- if (account.getAvatar() != null && !account.getAvatar().startsWith("http"))
+ if (account.getAvatar() != null && !account.getAvatar().equals("null") && !account.getAvatar().startsWith("http"))
account.setAvatar("https://" + peertube.getInstance() + account.getAvatar());
Helper.loadGiF(context, account.getAvatar(), holder.peertube_profile);