This commit is contained in:
Grishka
2022-02-07 15:07:12 +03:00
parent cc06715aa6
commit aa193b8921
42 changed files with 7573 additions and 23 deletions

View File

@@ -1,6 +1,7 @@
package org.joinmastodon.android.api;
import android.net.Uri;
import android.util.Pair;
import com.google.gson.reflect.TypeToken;
@@ -10,6 +11,7 @@ import org.joinmastodon.android.model.BaseModel;
import org.joinmastodon.android.model.Token;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -27,7 +29,7 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
private String path;
private String method;
private Object requestBody;
private Map<String, String> queryParams;
private List<Pair<String, String>> queryParams;
Class<T> respClass;
TypeToken<T> respTypeToken;
Call okhttpCall;
@@ -86,8 +88,8 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
protected void addQueryParameter(String key, String value){
if(queryParams==null)
queryParams=new HashMap<>();
queryParams.put(key, value);
queryParams=new ArrayList<>();
queryParams.add(new Pair<>(key, value));
}
protected void addHeader(String key, String value){
@@ -106,8 +108,8 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
.authority(domain)
.path(getPathPrefix()+path);
if(queryParams!=null){
for(Map.Entry<String, String> param:queryParams.entrySet()){
builder.appendQueryParameter(param.getKey(), param.getValue());
for(Pair<String, String> param:queryParams){
builder.appendQueryParameter(param.first, param.second);
}
}
return builder.build();

View File

@@ -0,0 +1,18 @@
package org.joinmastodon.android.api.requests.accounts;
import com.google.gson.reflect.TypeToken;
import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.model.Relationship;
import java.util.List;
import androidx.annotation.NonNull;
public class GetAccountRelationships extends MastodonAPIRequest<List<Relationship>>{
public GetAccountRelationships(@NonNull List<String> ids){
super(HttpMethod.GET, "/accounts/relationships", new TypeToken<>(){});
for(String id:ids)
addQueryParameter("id[]", id);
}
}

View File

@@ -7,8 +7,10 @@ import org.joinmastodon.android.model.Status;
import java.util.List;
import androidx.annotation.NonNull;
public class GetAccountStatuses extends MastodonAPIRequest<List<Status>>{
public GetAccountStatuses(String id, String maxID, String minID, int limit){
public GetAccountStatuses(String id, String maxID, String minID, int limit, @NonNull Filter filter){
super(HttpMethod.GET, "/accounts/"+id+"/statuses", new TypeToken<>(){});
if(maxID!=null)
addQueryParameter("max_id", maxID);
@@ -16,5 +18,16 @@ public class GetAccountStatuses extends MastodonAPIRequest<List<Status>>{
addQueryParameter("min_id", minID);
if(limit>0)
addQueryParameter("limit", ""+limit);
switch(filter){
case DEFAULT -> addQueryParameter("exclude_replies", "true");
case INCLUDE_REPLIES -> {}
case MEDIA -> addQueryParameter("only_media", "true");
}
}
public enum Filter{
DEFAULT,
INCLUDE_REPLIES,
MEDIA
}
}

View File

@@ -189,6 +189,10 @@ public class AccountSessionManager{
.execNoAuth(instance.uri);
}
public boolean isSelf(String id, Account other){
return getAccount(id).self.id.equals(other.id);
}
public Instance getAuthenticatingInstance(){
return authenticatingInstance;
}