Add api endpoints

This commit is contained in:
Thomas 2022-11-24 11:24:55 +01:00
parent c6bd8ac265
commit f96de62fef
3 changed files with 153 additions and 0 deletions

View File

@ -18,13 +18,16 @@ package app.fedilab.android.client.endpoints;
import java.util.List; import java.util.List;
import app.fedilab.android.client.entities.api.admin.AdminAccount; import app.fedilab.android.client.entities.api.admin.AdminAccount;
import app.fedilab.android.client.entities.api.admin.AdminDomainBlock;
import app.fedilab.android.client.entities.api.admin.AdminReport; import app.fedilab.android.client.entities.api.admin.AdminReport;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.DELETE;
import retrofit2.http.Field; import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded; import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET; import retrofit2.http.GET;
import retrofit2.http.Header; import retrofit2.http.Header;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path; import retrofit2.http.Path;
import retrofit2.http.Query; import retrofit2.http.Query;
@ -115,6 +118,7 @@ public interface MastodonAdminService {
@Query("limit") int limit @Query("limit") int limit
); );
//***************** ADMIN REPORTS **************
@GET("admin/reports/{id}") @GET("admin/reports/{id}")
Call<AdminReport> getReport( Call<AdminReport> getReport(
@ -149,4 +153,53 @@ public interface MastodonAdminService {
@Header("Authorization") String app_token, @Header("Authorization") String app_token,
@Path("id") String id @Path("id") String id
); );
//*************** ADMIN DOMAINS ****************
@GET("admin/domain_blocks")
Call<List<AdminDomainBlock>> getDomainBlocks(
@Header("Authorization") String token,
@Query("max_id") String max_id,
@Query("limit") int limit
);
@GET("admin/domain_blocks/{id}")
Call<AdminDomainBlock> getDomainBlock(
@Header("Authorization") String token,
@Path("id") String id
);
@FormUrlEncoded
@POST("admin/domain_blocks")
Call<AdminDomainBlock> blockDomain(
@Header("Authorization") String app_token,
@Path("domain") String domain,
@Field("severity") String severity,
@Field("reject_media") Boolean reject_media,
@Field("reject_reports") Boolean reject_reports,
@Field("private_comment") String private_comment,
@Field("public_comment") String public_comment,
@Field("obfuscate") Boolean obfuscate
);
@FormUrlEncoded
@PUT("admin/domain_blocks")
Call<AdminDomainBlock> updateBlockDomain(
@Header("Authorization") String app_token,
@Path("domain") String domain,
@Field("severity") String severity,
@Field("reject_media") Boolean reject_media,
@Field("reject_reports") Boolean reject_reports,
@Field("private_comment") String private_comment,
@Field("public_comment") String public_comment,
@Field("obfuscate") Boolean obfuscate
);
@DELETE("admin/domain_blocks/{id}")
Call<Void> deleteBlockDomain(
@Header("Authorization") String app_token,
@Path("id") String id
);
} }

View File

@ -0,0 +1,26 @@
package app.fedilab.android.client.entities.api.admin;
/* Copyright 2022 Thomas Schneider
*
* This file is a part of Fedilab
*
* 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.
*
* Fedilab 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 Fedilab; if not,
* see <http://www.gnu.org/licenses>. */
import java.util.List;
import app.fedilab.android.client.entities.api.Pagination;
public class AdminDomainBlocks {
public Pagination pagination = new Pagination();
public List<AdminDomainBlock> adminDomainBlocks;
}

View File

@ -29,6 +29,8 @@ import java.util.concurrent.TimeUnit;
import app.fedilab.android.client.endpoints.MastodonAdminService; import app.fedilab.android.client.endpoints.MastodonAdminService;
import app.fedilab.android.client.entities.api.admin.AdminAccount; import app.fedilab.android.client.entities.api.admin.AdminAccount;
import app.fedilab.android.client.entities.api.admin.AdminAccounts; import app.fedilab.android.client.entities.api.admin.AdminAccounts;
import app.fedilab.android.client.entities.api.admin.AdminDomainBlock;
import app.fedilab.android.client.entities.api.admin.AdminDomainBlocks;
import app.fedilab.android.client.entities.api.admin.AdminReport; import app.fedilab.android.client.entities.api.admin.AdminReport;
import app.fedilab.android.client.entities.api.admin.AdminReports; import app.fedilab.android.client.entities.api.admin.AdminReports;
import app.fedilab.android.helper.Helper; import app.fedilab.android.helper.Helper;
@ -51,6 +53,9 @@ public class AdminVM extends AndroidViewModel {
private MutableLiveData<AdminAccounts> adminAccountsListMutableLiveData; private MutableLiveData<AdminAccounts> adminAccountsListMutableLiveData;
private MutableLiveData<AdminReport> adminReportMutableLiveData; private MutableLiveData<AdminReport> adminReportMutableLiveData;
private MutableLiveData<AdminReports> adminReporstListMutableLiveData; private MutableLiveData<AdminReports> adminReporstListMutableLiveData;
private MutableLiveData<AdminDomainBlock> adminDomainBlockMutableLiveData;
private MutableLiveData<AdminDomainBlocks> adminDomainBlockListMutableLiveData;
public AdminVM(@NonNull Application application) { public AdminVM(@NonNull Application application) {
super(application); super(application);
@ -556,4 +561,73 @@ public class AdminVM extends AndroidViewModel {
}).start(); }).start();
return adminReportMutableLiveData; return adminReportMutableLiveData;
} }
/**
* View all domains blocked.
*
* @param instance Instance domain of the active account
* @param token Access token of the active account
* @return {@link LiveData} containing a {@link List} of {@link AdminDomainBlocks}s
*/
public LiveData<AdminDomainBlocks> getDomainBlocks(@NonNull String instance,
String token,
String max_id) {
MastodonAdminService mastodonAdminService = init(instance);
adminDomainBlockListMutableLiveData = new MutableLiveData<>();
new Thread(() -> {
List<AdminDomainBlock> adminDomainBlockList;
Call<List<AdminDomainBlock>> getDomainBlocks = mastodonAdminService.getDomainBlocks(token, max_id, MastodonHelper.statusesPerCall(getApplication()));
AdminDomainBlocks adminDomainBlocks = new AdminDomainBlocks();
if (getDomainBlocks != null) {
try {
Response<List<AdminDomainBlock>> getDomainBlocksResponse = getDomainBlocks.execute();
if (getDomainBlocksResponse.isSuccessful()) {
adminDomainBlocks.adminDomainBlocks = getDomainBlocksResponse.body();
adminDomainBlocks.pagination = MastodonHelper.getPagination(getDomainBlocksResponse.headers());
}
} catch (Exception e) {
e.printStackTrace();
}
}
Handler mainHandler = new Handler(Looper.getMainLooper());
Runnable myRunnable = () -> adminDomainBlockListMutableLiveData.setValue(adminDomainBlocks);
mainHandler.post(myRunnable);
}).start();
return adminDomainBlockListMutableLiveData;
}
/**
* View a single blocked domain
*
* @param instance Instance domain of the active account
* @param token Access token of the active account
* @return {@link LiveData} containing a {@link List} of {@link AdminDomainBlocks}s
*/
public LiveData<AdminDomainBlock> getDomainBlock(@NonNull String instance,
String token,
String id) {
MastodonAdminService mastodonAdminService = init(instance);
adminDomainBlockMutableLiveData = new MutableLiveData<>();
new Thread(() -> {
AdminDomainBlock adminDomainBlock = null;
Call<AdminDomainBlock> getDomainBlock = mastodonAdminService.getDomainBlock(token, id);
if (getDomainBlock != null) {
try {
Response<AdminDomainBlock> getDomainBlocksResponse = getDomainBlock.execute();
if (getDomainBlocksResponse.isSuccessful()) {
adminDomainBlock = getDomainBlocksResponse.body();
}
} catch (Exception e) {
e.printStackTrace();
}
}
Handler mainHandler = new Handler(Looper.getMainLooper());
AdminDomainBlock finalAdminDomainBlock = adminDomainBlock;
Runnable myRunnable = () -> adminDomainBlockMutableLiveData.setValue(finalAdminDomainBlock);
mainHandler.post(myRunnable);
}).start();
return adminDomainBlockMutableLiveData;
}
} }