UNPKG

@selfcommunity/api-services

Version:
142 lines (134 loc) 6.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModerationApiClient = void 0; const tslib_1 = require("tslib"); const apiRequest_1 = require("../../utils/apiRequest"); const Endpoints_1 = tslib_1.__importDefault(require("../../constants/Endpoints")); const url_1 = require("../../utils/url"); /** * Contains all the endpoints needed to manage moderation. */ class ModerationApiClient { /** * This endpoint retrieves all users for moderation purpose. * @param params * @param config */ static getUsersForModeration(params, config) { const p = (0, url_1.urlParams)(params); return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: `${Endpoints_1.default.UsersForModeration.url({})}?${p.toString()}`, method: Endpoints_1.default.UsersForModeration.method })); } /** * This endpoint performs users moderation. * @param id * @param status * @param days_blocked * @param hard * @param config */ static moderateASpecificUser(id, status, days_blocked, hard, config) { const p = (0, url_1.urlParams)(Object.assign(Object.assign({}, (days_blocked && { days_blocked: days_blocked })), (hard && { hard: hard }))); return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: `${Endpoints_1.default.ModerateUser.url({ id })}?${p.toString()}`, method: Endpoints_1.default.ModerateUser.method, data: { status: status } })); } /** * This endpoint retrieves all flagged contributions. * @param params * @param config */ static getAllFlaggedContributions(params, config) { const p = (0, url_1.urlParams)(params); return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: `${Endpoints_1.default.FlaggedContributions.url({})}?${p.toString()}`, method: Endpoints_1.default.FlaggedContributions.method })); } /** * This endpoint retrieves all flags for a specific contribution. * @param id * @param contribution_type * @param flag_type * @param config */ static getAllFlagsForSpecificContribution(id, contribution_type, flag_type, config) { return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: Endpoints_1.default.FlagsForSpecificContribution.url({ id, contribution_type }), method: Endpoints_1.default.FlagsForSpecificContribution.method, data: { flag_type: flag_type !== null && flag_type !== void 0 ? flag_type : null } })); } /** * This endpoint provides actions for flagged contributions moderation. * @param id * @param data * @param config */ static moderateAContribution(id, data, config) { return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: Endpoints_1.default.ModerateContribution.url({ id }), method: Endpoints_1.default.ModerateContribution.method, data: data })); } /** * This endpoint retrieves moderation status for a specific contribution. * @param id * @param contribution_type * @param config */ static getContributionModerationStatus(id, contribution_type, config) { return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: Endpoints_1.default.ModerateContributionStatus.url({ id, contribution_type }), method: Endpoints_1.default.ModerateContributionStatus.method })); } } exports.ModerationApiClient = ModerationApiClient; /** * :::tip Moderation service can be used in the following way: ```jsx 1. Import the service from our library: import {ModerationService} from "@selfcommunity/api-services"; ``` ```jsx 2. Create a function and put the service inside it! The async function `getUsersForModeration` will return the paginated list of users to moderate. async getUsersForModeration() { return await ModerationService.getUsersForModeration(); } ``` ```jsx In case of required `params`, just add them inside the brackets. async moderateASpecificUser(userId, userStatus) { return await ModerationService.moderateASpecificUser(userId, userStatus); } ``` ```jsx If you need to customize the request, you can add optional config params (`AxiosRequestConfig` type). 1. Declare it(or declare them, it is possible to add multiple params) const headers = headers: {Authorization: `Bearer ${yourToken}`} 2. Add it inside the brackets and pass it to the function, as shown in the previous example! ``` ::: */ class ModerationService { static getUsersForModeration(params, config) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return ModerationApiClient.getUsersForModeration(params, config); }); } static moderateASpecificUser(id, status, days_blocked, hard, config) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return ModerationApiClient.moderateASpecificUser(id, status, days_blocked, hard, config); }); } static getAllFlaggedContributions(params, config) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return ModerationApiClient.getAllFlaggedContributions(params, config); }); } static getAllFlagsForSpecificContribution(id, contribution_type, flag_type, config) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return ModerationApiClient.getAllFlagsForSpecificContribution(id, contribution_type, flag_type, config); }); } static moderateAContribution(id, data, config) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return ModerationApiClient.moderateAContribution(id, data, config); }); } static getContributionModerationStatus(id, contribution_type, config) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return ModerationApiClient.getContributionModerationStatus(id, contribution_type, config); }); } } exports.default = ModerationService;