Tooting of text toots

This commit is contained in:
Grishka
2022-01-17 21:50:48 +03:00
parent dfbc1fd2e2
commit b3a99e0764
13 changed files with 260 additions and 11 deletions

View File

@@ -25,6 +25,7 @@ import java.io.Reader;
import java.time.Instant;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -76,6 +77,12 @@ public class MastodonAPIController{
if(token!=null)
builder.header("Authorization", "Bearer "+token);
if(req.headers!=null){
for(Map.Entry<String, String> header:req.headers.entrySet()){
builder.header(header.getKey(), header.getValue());
}
}
Request hreq=builder.build();
Call call=httpClient.newCall(hreq);
synchronized(req){

View File

@@ -33,6 +33,7 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
Call okhttpCall;
Token token;
boolean canceled;
Map<String, String> headers;
public MastodonAPIRequest(HttpMethod method, String path, Class<T> respClass){
this.path=path;
@@ -89,6 +90,12 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
queryParams.put(key, value);
}
protected void addHeader(String key, String value){
if(headers==null)
headers=new HashMap<>();
headers.put(key, value);
}
protected String getPathPrefix(){
return "/api/v1";
}

View File

@@ -0,0 +1,36 @@
package org.joinmastodon.android.api.requests.statuses;
import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.model.StatusPrivacy;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
public class CreateStatus extends MastodonAPIRequest<Status>{
public CreateStatus(CreateStatus.Request req, String uuid){
super(HttpMethod.POST, "/statuses", Status.class);
setRequestBody(req);
addHeader("Idempotency-Key", uuid);
}
public static class Request{
public String status;
public List<String> mediaIds;
public Poll poll;
public String inReplyToId;
public boolean sensitive;
public String spoilerText;
public StatusPrivacy visibility;
public Instant scheduledAt;
public String language;
public static class Poll{
public ArrayList<String> options=new ArrayList<>();
public int expiresIn;
public boolean multiple;
public boolean hideTotals;
}
}
}