Add logic
This commit is contained in:
parent
d6c662434d
commit
106bacb4b1
|
@ -40,7 +40,7 @@ public class APIResponse {
|
|||
private Error error = null;
|
||||
private String since_id, max_id;
|
||||
private List<PlaylistElement> playlistForVideos;
|
||||
private Instance instance;
|
||||
private List<Instance> instances;
|
||||
private String stringData;
|
||||
private int statusCode;
|
||||
|
||||
|
@ -130,13 +130,6 @@ public class APIResponse {
|
|||
}
|
||||
|
||||
|
||||
public Instance getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void setInstance(Instance instance) {
|
||||
this.instance = instance;
|
||||
}
|
||||
|
||||
public List<Status> getStatuses() {
|
||||
return statuses;
|
||||
|
@ -169,4 +162,12 @@ public class APIResponse {
|
|||
public void setRelationships(List<Relationship> relationships) {
|
||||
this.relationships = relationships;
|
||||
}
|
||||
|
||||
public List<Instance> getInstances() {
|
||||
return instances;
|
||||
}
|
||||
|
||||
public void setInstances(List<Instance> instances) {
|
||||
this.instances = instances;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ import app.fedilab.fedilabtube.client.entities.ChannelCreation;
|
|||
import app.fedilab.fedilabtube.client.entities.Error;
|
||||
import app.fedilab.fedilabtube.client.entities.Instance;
|
||||
import app.fedilab.fedilabtube.client.entities.InstanceNodeInfo;
|
||||
import app.fedilab.fedilabtube.client.entities.InstanceParams;
|
||||
import app.fedilab.fedilabtube.client.entities.NodeInfo;
|
||||
import app.fedilab.fedilabtube.client.entities.Peertube;
|
||||
import app.fedilab.fedilabtube.client.entities.PeertubeAccountNotification;
|
||||
|
@ -589,11 +590,41 @@ public class PeertubeAPI {
|
|||
* Get info on the current Instance *synchronously*
|
||||
* @return APIResponse
|
||||
*/
|
||||
public APIResponse getInstance() {
|
||||
public APIResponse getInstances(InstanceParams instanceParams) {
|
||||
LinkedHashMap<String, String> params = new LinkedHashMap<>();
|
||||
params.put("start", "0");
|
||||
params.put("count", "250");
|
||||
params.put("healthy", "true");
|
||||
params.put("signup", "true");
|
||||
if (instanceParams != null) {
|
||||
if (instanceParams.getCategoriesOr() != null && instanceParams.getCategoriesOr().size() > 0) {
|
||||
StringBuilder parameters = new StringBuilder();
|
||||
parameters.append("[]&");
|
||||
for (Integer category : instanceParams.getCategoriesOr())
|
||||
parameters.append("categoriesOr=").append(category).append("&");
|
||||
String strParam = parameters.toString();
|
||||
strParam = strParam.substring(0, strParam.length() - 1);
|
||||
params.put("categoriesOr[]", strParam);
|
||||
}
|
||||
|
||||
if (instanceParams.getLanguagesOr() != null && instanceParams.getLanguagesOr().size() > 0) {
|
||||
StringBuilder parameters = new StringBuilder();
|
||||
parameters.append("[]&");
|
||||
for (String language : instanceParams.getLanguagesOr())
|
||||
parameters.append("languagesOr=").append(language).append("&");
|
||||
String strParam = parameters.toString();
|
||||
strParam = strParam.substring(0, strParam.length() - 1);
|
||||
params.put("languagesOr[]", strParam);
|
||||
}
|
||||
params.put("minUserQuota", instanceParams.getMinUserQuota());
|
||||
params.put("nsfwPolicy", instanceParams.getNsfwPolicy());
|
||||
}
|
||||
|
||||
try {
|
||||
String response = new HttpsConnection(context).get(getAbsoluteUrl("/instance"), 30, null, prefKeyOauthTokenT);
|
||||
Instance instanceEntity = parseInstance(new JSONObject(response));
|
||||
apiResponse.setInstance(instanceEntity);
|
||||
String response = new HttpsConnection(context).get("https://instances.joinpeertube.org/api/v1/instances", 30, params, null);
|
||||
JSONArray jsonArray = new JSONObject(response).getJSONArray("data");
|
||||
List<Instance> instances = parseInstances(jsonArray);
|
||||
apiResponse.setInstances(instances);
|
||||
} catch (HttpsConnection.HttpsConnectionException e) {
|
||||
setError(e.getStatusCode(), e);
|
||||
} catch (NoSuchAlgorithmException | IOException | KeyManagementException | JSONException e) {
|
||||
|
@ -2024,6 +2055,30 @@ public class PeertubeAPI {
|
|||
return peertubes;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parse json array response for instances
|
||||
*
|
||||
* @param jsonArray JSONArray
|
||||
* @return List<Instance>
|
||||
*/
|
||||
private List<Instance> parseInstances(JSONArray jsonArray) {
|
||||
List<Instance> instances = new ArrayList<>();
|
||||
try {
|
||||
int i = 0;
|
||||
while (i < jsonArray.length()) {
|
||||
JSONObject resobj = jsonArray.getJSONObject(i);
|
||||
Instance instance = parseInstance(resobj);
|
||||
i++;
|
||||
instances.add(instance);
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
setDefaultError(e);
|
||||
}
|
||||
return instances;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parse json response an unique instance
|
||||
*
|
||||
|
@ -2034,11 +2089,48 @@ public class PeertubeAPI {
|
|||
|
||||
Instance instance = new Instance();
|
||||
try {
|
||||
instance.setUri(resobj.getString("uri"));
|
||||
instance.setTitle(resobj.getString("title"));
|
||||
instance.setDescription(resobj.getString("description"));
|
||||
instance.setEmail(resobj.getString("email"));
|
||||
instance.setAutoBlacklistUserVideosEnabled(resobj.getBoolean("autoBlacklistUserVideosEnabled"));
|
||||
if (resobj.has("categories")) {
|
||||
JSONArray jsonArray = resobj.getJSONArray("categories");
|
||||
LinkedHashMap<Integer, Integer> categories = new LinkedHashMap<>();
|
||||
int i = 0;
|
||||
while (i < jsonArray.length()) {
|
||||
categories.put(i, jsonArray.getInt(i));
|
||||
i++;
|
||||
}
|
||||
instance.setCategories(categories);
|
||||
}
|
||||
instance.setCountry(resobj.getString("country"));
|
||||
instance.setCreatedAt(Helper.stringToDate(context, resobj.getString("createdAt")));
|
||||
instance.setDefaultNSFWPolicy(resobj.getString("defaultNSFWPolicy"));
|
||||
instance.setHealth(resobj.getInt("health"));
|
||||
instance.setId(resobj.getString("id"));
|
||||
instance.setHost(resobj.getString("host"));
|
||||
instance.setName(resobj.getString("name"));
|
||||
instance.setVersion(resobj.getString("version"));
|
||||
instance.setShortDescription(resobj.getString("shortDescription"));
|
||||
instance.setNSFW(resobj.getBoolean("isNSFW"));
|
||||
instance.setSignupAllowed(resobj.getBoolean("signupAllowed"));
|
||||
instance.setSupportsIPv6(resobj.getBoolean("supportsIPv6"));
|
||||
instance.setTotalInstanceFollowers(resobj.getInt("totalInstanceFollowers"));
|
||||
|
||||
instance.setTotalInstanceFollowing(resobj.getInt("totalInstanceFollowing"));
|
||||
instance.setTotalLocalVideos(resobj.getInt("totalLocalVideos"));
|
||||
instance.setTotalUsers(resobj.getInt("totalUsers"));
|
||||
instance.setTotalVideos(resobj.getInt("totalVideos"));
|
||||
instance.setUserVideoQuota(resobj.getString("userVideoQuota"));
|
||||
|
||||
if (resobj.has("languages")) {
|
||||
JSONArray jsonArray = resobj.getJSONArray("languages");
|
||||
LinkedHashMap<Integer, String> languages = new LinkedHashMap<>();
|
||||
int i = 0;
|
||||
while (i < jsonArray.length()) {
|
||||
languages.put(i, jsonArray.getString(i));
|
||||
i++;
|
||||
}
|
||||
instance.setLanguages(languages);
|
||||
}
|
||||
|
||||
} catch (JSONException e) {
|
||||
setDefaultError(e);
|
||||
}
|
||||
|
|
|
@ -14,57 +14,177 @@ package app.fedilab.fedilabtube.client.entities;
|
|||
* You should have received a copy of the GNU General Public License along with TubeLab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class Instance {
|
||||
|
||||
private String uri;
|
||||
private String title;
|
||||
private String description;
|
||||
private String email;
|
||||
private boolean autoBlacklistUserVideosEnabled;
|
||||
private LinkedHashMap<Integer, Integer> categories;
|
||||
private String country;
|
||||
private Date createdAt;
|
||||
private String defaultNSFWPolicy;
|
||||
private int health;
|
||||
private String host;
|
||||
private String id;
|
||||
private LinkedHashMap<Integer, String> languages;
|
||||
private String name;
|
||||
private String shortDescription;
|
||||
private boolean signupAllowed;
|
||||
private boolean supportsIPv6;
|
||||
private int totalInstanceFollowers;
|
||||
private int totalInstanceFollowing;
|
||||
private int totalLocalVideos;
|
||||
private int totalUsers;
|
||||
private int totalVideos;
|
||||
private String userVideoQuota;
|
||||
private String version;
|
||||
private boolean registration;
|
||||
private boolean approval_required;
|
||||
private Account contactAccount;
|
||||
private int userCount;
|
||||
private int statusCount;
|
||||
private int domainCount;
|
||||
private String thumbnail;
|
||||
private boolean isNSFW;
|
||||
|
||||
private HashMap<String, Integer> poll_limits;
|
||||
|
||||
public String getUri() {
|
||||
return uri;
|
||||
public boolean isAutoBlacklistUserVideosEnabled() {
|
||||
return autoBlacklistUserVideosEnabled;
|
||||
}
|
||||
|
||||
public void setUri(String uri) {
|
||||
this.uri = uri;
|
||||
public void setAutoBlacklistUserVideosEnabled(boolean autoBlacklistUserVideosEnabled) {
|
||||
this.autoBlacklistUserVideosEnabled = autoBlacklistUserVideosEnabled;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
public LinkedHashMap<Integer, Integer> getCategories() {
|
||||
return categories;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
public void setCategories(LinkedHashMap<Integer, Integer> categories) {
|
||||
this.categories = categories;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
public String getCountry() {
|
||||
return country;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
public void setCountry(String country) {
|
||||
this.country = country;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
public Date getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
public void setCreatedAt(Date createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public String getDefaultNSFWPolicy() {
|
||||
return defaultNSFWPolicy;
|
||||
}
|
||||
|
||||
public void setDefaultNSFWPolicy(String defaultNSFWPolicy) {
|
||||
this.defaultNSFWPolicy = defaultNSFWPolicy;
|
||||
}
|
||||
|
||||
public int getHealth() {
|
||||
return health;
|
||||
}
|
||||
|
||||
public void setHealth(int health) {
|
||||
this.health = health;
|
||||
}
|
||||
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public LinkedHashMap<Integer, String> getLanguages() {
|
||||
return languages;
|
||||
}
|
||||
|
||||
public void setLanguages(LinkedHashMap<Integer, String> languages) {
|
||||
this.languages = languages;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getShortDescription() {
|
||||
return shortDescription;
|
||||
}
|
||||
|
||||
public void setShortDescription(String shortDescription) {
|
||||
this.shortDescription = shortDescription;
|
||||
}
|
||||
|
||||
public boolean isSignupAllowed() {
|
||||
return signupAllowed;
|
||||
}
|
||||
|
||||
public void setSignupAllowed(boolean signupAllowed) {
|
||||
this.signupAllowed = signupAllowed;
|
||||
}
|
||||
|
||||
public boolean isSupportsIPv6() {
|
||||
return supportsIPv6;
|
||||
}
|
||||
|
||||
public void setSupportsIPv6(boolean supportsIPv6) {
|
||||
this.supportsIPv6 = supportsIPv6;
|
||||
}
|
||||
|
||||
public int getTotalInstanceFollowers() {
|
||||
return totalInstanceFollowers;
|
||||
}
|
||||
|
||||
public void setTotalInstanceFollowers(int totalInstanceFollowers) {
|
||||
this.totalInstanceFollowers = totalInstanceFollowers;
|
||||
}
|
||||
|
||||
public int getTotalInstanceFollowing() {
|
||||
return totalInstanceFollowing;
|
||||
}
|
||||
|
||||
public void setTotalInstanceFollowing(int totalInstanceFollowing) {
|
||||
this.totalInstanceFollowing = totalInstanceFollowing;
|
||||
}
|
||||
|
||||
public int getTotalLocalVideos() {
|
||||
return totalLocalVideos;
|
||||
}
|
||||
|
||||
public void setTotalLocalVideos(int totalLocalVideos) {
|
||||
this.totalLocalVideos = totalLocalVideos;
|
||||
}
|
||||
|
||||
public int getTotalUsers() {
|
||||
return totalUsers;
|
||||
}
|
||||
|
||||
public void setTotalUsers(int totalUsers) {
|
||||
this.totalUsers = totalUsers;
|
||||
}
|
||||
|
||||
public int getTotalVideos() {
|
||||
return totalVideos;
|
||||
}
|
||||
|
||||
public void setTotalVideos(int totalVideos) {
|
||||
this.totalVideos = totalVideos;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
|
@ -75,67 +195,19 @@ public class Instance {
|
|||
this.version = version;
|
||||
}
|
||||
|
||||
public HashMap<String, Integer> getPoll_limits() {
|
||||
return poll_limits;
|
||||
public boolean isNSFW() {
|
||||
return isNSFW;
|
||||
}
|
||||
|
||||
public void setPoll_limits(HashMap<String, Integer> poll_limits) {
|
||||
this.poll_limits = poll_limits;
|
||||
public void setNSFW(boolean NSFW) {
|
||||
isNSFW = NSFW;
|
||||
}
|
||||
|
||||
public boolean isRegistration() {
|
||||
return registration;
|
||||
public String getUserVideoQuota() {
|
||||
return userVideoQuota;
|
||||
}
|
||||
|
||||
public void setRegistration(boolean registration) {
|
||||
this.registration = registration;
|
||||
}
|
||||
|
||||
public boolean isApproval_required() {
|
||||
return approval_required;
|
||||
}
|
||||
|
||||
public void setApproval_required(boolean approval_required) {
|
||||
this.approval_required = approval_required;
|
||||
}
|
||||
|
||||
public Account getContactAccount() {
|
||||
return contactAccount;
|
||||
}
|
||||
|
||||
public void setContactAccount(Account contactAccount) {
|
||||
this.contactAccount = contactAccount;
|
||||
}
|
||||
|
||||
public int getUserCount() {
|
||||
return userCount;
|
||||
}
|
||||
|
||||
public void setUserCount(int userCount) {
|
||||
this.userCount = userCount;
|
||||
}
|
||||
|
||||
public int getStatusCount() {
|
||||
return statusCount;
|
||||
}
|
||||
|
||||
public void setStatusCount(int statusCount) {
|
||||
this.statusCount = statusCount;
|
||||
}
|
||||
|
||||
public int getDomainCount() {
|
||||
return domainCount;
|
||||
}
|
||||
|
||||
public void setDomainCount(int domainCount) {
|
||||
this.domainCount = domainCount;
|
||||
}
|
||||
|
||||
public String getThumbnail() {
|
||||
return thumbnail;
|
||||
}
|
||||
|
||||
public void setThumbnail(String thumbnail) {
|
||||
this.thumbnail = thumbnail;
|
||||
public void setUserVideoQuota(String userVideoQuota) {
|
||||
this.userVideoQuota = userVideoQuota;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
package app.fedilab.fedilabtube.client.entities;
|
||||
/* Copyright 2020 Thomas Schneider
|
||||
*
|
||||
* This file is a part of TubeLab
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* TubeLab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with TubeLab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class InstanceParams {
|
||||
|
||||
private boolean healthy = true;
|
||||
private boolean signup = true;
|
||||
private List<Integer> categoriesOr;
|
||||
private String nsfwPolicy = "do_not_list";
|
||||
private List<String> languagesOr;
|
||||
private String minUserQuota = "5000000000";
|
||||
|
||||
|
||||
public boolean isHealthy() {
|
||||
return healthy;
|
||||
}
|
||||
|
||||
public void setHealthy(boolean healthy) {
|
||||
this.healthy = healthy;
|
||||
}
|
||||
|
||||
public boolean isSignup() {
|
||||
return signup;
|
||||
}
|
||||
|
||||
public void setSignup(boolean signup) {
|
||||
this.signup = signup;
|
||||
}
|
||||
|
||||
public List<Integer> getCategoriesOr() {
|
||||
return categoriesOr;
|
||||
}
|
||||
|
||||
public void setCategoriesOr(List<Integer> categoriesOr) {
|
||||
this.categoriesOr = categoriesOr;
|
||||
}
|
||||
|
||||
public String getNsfwPolicy() {
|
||||
return nsfwPolicy;
|
||||
}
|
||||
|
||||
public void setNsfwPolicy(String nsfwPolicy) {
|
||||
this.nsfwPolicy = nsfwPolicy;
|
||||
}
|
||||
|
||||
|
||||
public String getMinUserQuota() {
|
||||
return minUserQuota;
|
||||
}
|
||||
|
||||
public void setMinUserQuota(String minUserQuota) {
|
||||
this.minUserQuota = minUserQuota;
|
||||
}
|
||||
|
||||
public List<String> getLanguagesOr() {
|
||||
return languagesOr;
|
||||
}
|
||||
|
||||
public void setLanguagesOr(List<String> languagesOr) {
|
||||
this.languagesOr = languagesOr;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue