use of com.odysee.app.exceptions.ApiCallException in project odysee-android by OdyseeTeam.
the class Lbry method transactionList.
public static List<Transaction> transactionList(int page, int pageSize, String authToken) throws ApiCallException {
List<Transaction> transactions = new ArrayList<>();
Map<String, Object> params = new HashMap<>();
if (page > 0) {
params.put("page", page);
}
if (pageSize > 0) {
params.put("page_size", pageSize);
}
if (authToken != "") {
params.put("auth_token", authToken);
}
try {
JSONObject result = (JSONObject) parseResponse(apiCall(METHOD_TRANSACTION_LIST, params, API_CONNECTION_STRING));
JSONArray items = result.getJSONArray("items");
for (int i = 0; i < items.length(); i++) {
Transaction tx = Transaction.fromJSONObject(items.getJSONObject(i));
transactions.add(tx);
}
} catch (LbryRequestException | LbryResponseException | JSONException ex) {
throw new ApiCallException("Could not execute transaction_list call", ex);
}
return transactions;
}
use of com.odysee.app.exceptions.ApiCallException in project odysee-android by OdyseeTeam.
the class Lbry method claimSearch.
public static List<Claim> claimSearch(Map<String, Object> options, String connectionString) throws ApiCallException {
if (claimSearchCache.containsKey(options)) {
ClaimSearchCacheValue value = claimSearchCache.get(options);
if (!value.isExpired(TTL_CLAIM_SEARCH_VALUE)) {
return claimSearchCache.get(options).getClaims();
}
}
List<Claim> claims = new ArrayList<>();
try {
JSONObject result = (JSONObject) parseResponse(apiCall(METHOD_CLAIM_SEARCH, options, connectionString));
JSONArray items = result.getJSONArray("items");
if (items != null) {
for (int i = 0; i < items.length(); i++) {
Claim claim = Claim.fromJSONObject(items.getJSONObject(i));
// audio and video, even for reposted claims
if (!Claim.TYPE_COLLECTION.equalsIgnoreCase(claim.getValueType()) && !claim.hasSource() && claim.getSigningChannel() != null) {
String urlLivestream = String.format("https://api.live.odysee.com/v1/odysee/live/%s", claim.getSigningChannel().getClaimId());
Request.Builder builder = new Request.Builder().url(urlLivestream);
Request request = builder.build();
OkHttpClient client = new OkHttpClient.Builder().build();
try {
Response resp = client.newCall(request).execute();
String responseString = resp.body().string();
resp.close();
JSONObject json = new JSONObject(responseString);
if (resp.code() >= 200 && resp.code() < 300) {
if (!json.isNull("data") && (json.has("success") && json.getBoolean("success"))) {
JSONObject jsonData = (JSONObject) json.get("data");
if (jsonData.has("live")) {
claim.setLive(jsonData.getBoolean("live"));
claim.setLivestreamUrl(jsonData.getString("url"));
}
}
}
} catch (IOException | JSONException e) {
e.printStackTrace();
}
}
// For now, only claims which are audio, videos, playlists or livestreaming right now can be viewed
if (Arrays.asList(Claim.TYPE_REPOST, Claim.TYPE_COLLECTION, Claim.TYPE_CHANNEL).contains(claim.getValueType().toLowerCase()) || (!claim.hasSource() && claim.isLive()) || (claim.hasSource() && (claim.getMediaType().contains("video") || claim.getMediaType().contains("audio")))) {
claims.add(claim);
}
addClaimToCache(claim);
}
}
claimSearchCache.put(options, new ClaimSearchCacheValue(claims, System.currentTimeMillis()));
} catch (LbryRequestException | LbryResponseException | JSONException ex) {
throw new ApiCallException("Could not execute resolve call", ex);
}
return claims;
}
use of com.odysee.app.exceptions.ApiCallException in project odysee-android by OdyseeTeam.
the class Lbry method resolve.
public static List<Claim> resolve(List<String> urls, String connectionString) throws ApiCallException {
List<Claim> claims = new ArrayList<>();
Map<String, Object> params = new HashMap<>();
params.put("urls", urls);
try {
JSONObject result = (JSONObject) parseResponse(apiCall(METHOD_RESOLVE, params, connectionString));
Iterator<String> keys = result.keys();
if (keys != null) {
while (keys.hasNext()) {
Claim claim = Claim.fromJSONObject(result.getJSONObject(keys.next()));
claims.add(claim);
addClaimToCache(claim);
}
}
} catch (LbryRequestException | LbryResponseException | JSONException ex) {
throw new ApiCallException("Could not execute resolve call", ex);
}
return claims;
}
use of com.odysee.app.exceptions.ApiCallException in project odysee-android by OdyseeTeam.
the class ClaimListSupplier method get.
@Override
public List<Claim> get() {
List<Claim> claims = null;
try {
Map<String, Object> options = new HashMap<>();
if (types != null && types.size() > 0) {
options.put("claim_type", types);
}
options.put("page", 1);
options.put("page_size", 999);
options.put("resolve", true);
JSONObject result;
if (authToken != null && !authToken.equals(""))
result = (JSONObject) Lbry.authenticatedGenericApiCall(Lbry.METHOD_CLAIM_LIST, options, authToken);
else
result = (JSONObject) Lbry.genericApiCall(Lbry.METHOD_CLAIM_LIST, options);
JSONArray items = result.getJSONArray("items");
claims = new ArrayList<>();
for (int i = 0; i < items.length(); i++) {
claims.add(Claim.fromJSONObject(items.getJSONObject(i)));
}
} catch (ApiCallException | JSONException ex) {
ex.printStackTrace();
}
return claims;
}
use of com.odysee.app.exceptions.ApiCallException in project odysee-android by OdyseeTeam.
the class AbandonStreamTask method doInBackground.
public Boolean doInBackground(Void... params) {
successfulClaimIds = new ArrayList<>();
failedClaimIds = new ArrayList<>();
failedExceptions = new ArrayList<>();
for (String claimId : claimIds) {
try {
Map<String, Object> options = new HashMap<>();
options.put("claim_id", claimId);
options.put("blocking", true);
JSONObject result = (JSONObject) Lbry.genericApiCall(Lbry.METHOD_STREAM_ABANDON, options);
successfulClaimIds.add(claimId);
} catch (ApiCallException ex) {
failedClaimIds.add(claimId);
failedExceptions.add(ex);
}
}
return true;
}
Aggregations