237 lines
5.8 KiB
JavaScript

async function ajaxRequest(url, method, data) {
const options = {
url: url,
method: method,
beforeSend: function(xhr) {
xhr.setRequestHeader("X-CSRFToken", CSRF_MiddlewareToken);
}
}
if (data) {
options.data = data;
options.processData = false;
options.contentType = false;
}
try {
const response = await $.ajax(options);
return response
}
catch (error) {
return error
}
}
function makeQuerystring(filters, sort) {
let querystring = "?";
for (key in filters) {
querystring += `${key}=${filters[key]}&`;
}
return sort ? querystring += `ordering=${sort}` : querystring;
}
function objectToFormData(object) {
let formData = new FormData();
Object.keys(object).forEach(key => {
let value = object[key];
if (value === null || value === undefined) {
return;
}
if (Array.isArray(value)) {
value.forEach(part => {
formData.append(key, part);
})
}
else if (typeof value === "object" && !(value instanceof File)) {
Object.keys(value).forEach(nestedKey => {
formData.append(`${key}[${nestedKey}]`, value[nestedKey]);
});
}
else {
formData.append(key, value);
}
});
return formData;
}
// Loading Channels
async function loadChannels(guildId) {
return await ajaxRequest(`/channels?guild=${guildId}`, "GET");
}
// Subscriptions
// async function getSubscriptions(filters, sort) {
// let querystring = makeQuerystring(filters, sort);
// return await ajaxRequest(`/api/subscription/${querystring}`, "GET");
// }
// async function getSubscription(id) {
// return await ajaxRequest(`/api/subscription/${id}/`, "GET");
// }
// async function newSubscription(formData) {
// return await ajaxRequest("/api/subscription/", "POST", formData);
// }
// async function deleteSubscription(id) {
// return await ajaxRequest(`/api/subscription/${id}/`, "DELETE");
// }
// async function editSubscription(id, formData) {
// return await ajaxRequest(`/api/subscription/${id}/`, "PUT", formData);
// }
// async function getSubscriptionOptions() {
// return await ajaxRequest("/api/subscription/", "OPTIONS")
// }
// SubChannels
async function getSubChannels(subscriptionId) {
return await ajaxRequest(`/api/subchannel/?subscription=${subscriptionId}`, "GET");
}
async function getSubChannel(id) {
return await ajaxRequest(`/api/subchannel/${id}/`, "GET");
}
async function newSubChannel(formData) {
return await ajaxRequest("/api/subchannel/", "POST", formData);
}
async function deleteSubChannel(id) {
return await ajaxRequest(`/api/subchannel/${id}/`, "DELETE")
}
async function deleteSubChannels(subscriptionId) {
return await ajaxRequest(`/api/subscription/${subscriptionId}/subchannels/`, "DELETE");
}
// Filters
async function getFilters(filters, sort) {
let querystring = makeQuerystring(filters, sort);
return await ajaxRequest(`/api/filter/${querystring}`, "GET");
}
async function getFilter(id) {
return await ajaxRequest(`/api/filter/${id}/`, "GET");
}
async function newFilter(formData) {
return await ajaxRequest("/api/filter/", "POST", formData);
}
async function deleteFilter(id) {
return await ajaxRequest(`/api/filter/${id}/`, "DELETE");
}
async function editFilter(id, formData) {
return await ajaxRequest(`/api/filter/${id}/`, "PUT", formData);
}
async function getFilterOptions() {
return await ajaxRequest("/api/filter/", "OPTIONS")
}
// Tracked Content
async function getTrackedContent(filters, sort) {
let querystring = makeQuerystring(filters, sort);
url = `/api/tracked-content/${querystring}`;
return await ajaxRequest(url, "GET");
}
async function deleteTrackedContent(guid) {
const encodedGuid = encodeURIComponent(guid);
return await ajaxRequest(`/api/tracked-content/${encodedGuid}/`, "DELETE");
}
async function getTrackedContentOptions() {
return await ajaxRequest("/api/tracked-content/", "OPTIONS")
}
// Mutators
async function getMutators() {
return await ajaxRequest("/api/article-mutator/?page_size=25", "GET");
}
// guild settings
async function getGuildSettings(guildId) {
return await ajaxRequest(`/api/guild-settings/?guild_id=${guildId}`, "GET");
}
async function editGuildSettings(id, formData) {
return await ajaxRequest(`/api/guild-settings/${id}/`, "PUT", formData);
}
// Unique Content Rules
async function getUniqueContentRules() {
return await ajaxRequest("/api/unique-content-rule/", "GET");
}
async function getUniqueContentRule(ruleId) {
return await ajaxRequest(`/api/unique-content-rule/${ruleId}/`, "GET");
}
//#region rewrite
// #region Servers
async function generateServers() {
return ajaxRequest("/generate-servers/", "GET");
}
async function getServers() {
return ajaxRequest("/api/r_servers/", "GET");
}
// #endregion
// #region Subscriptions
async function getSubscriptions(filters, sort) {
let querystring = makeQuerystring(filters, sort);
return await ajaxRequest(`/api/subscriptions/${querystring}`, "GET");
}
async function getSubscription(subId) {
return await ajaxRequest(`/api/subscriptions/${subId}/`, "GET");
}
async function newSubscription(formData) {
return await ajaxRequest(`/api/subscriptions/`, "POST", formData);
}
async function deleteSubscription(subId) {
return await ajaxRequest(`/api/subscriptions/${subId}/`, "DELETE");
}
async function editSubscription(subId, formData) {
return await ajaxRequest(`/api/subscriptions/${subId}/`, "PUT", formData);
}
async function getSubscriptionOptions() {
return await ajaxRequest(`/api/subscriptions/`, "OPTIONS")
}
// #endregion