PageSourceSearch

https://www.supergb.com/cbt/js/modules/rest-util.js

js supergb.com collected 2026-10-02 23:28:17 UTC 5,545 bytes, 191 lines download raw bytes

1import {isValidStr} from "./util.js";
2import {alertError, alertSimpleSuccess, showSuccessToast} from "./uiutil.js";
3
4export function sendPutOrPostRequest(url, payload, successOnCloseCallback, failureOnCloseCallback,
5                                     alwaysCallback, submitBtnId, requestType,
6                                     successOnOpenCallback = null, failureOnOpenCallback = null) {
7
8    if (!isValidStr(requestType)) {
9        requestType = 'PUT'
10    }
11
12    if (requestType !== "PUT" && requestType !== "POST") {
13        return;
14    }
15
16    if (isValidStr(submitBtnId)) {
17        $("#" + submitBtnId).attr('disabled', true);
18    }
19
20    $.ajax({
21        async: true,
22        type: requestType,
23        url: url,
24        headers: getDefaultHttpHeaders(),
25        contentType: "application/json; charset=utf-8",
26        data: String(payload),
27        cache: false,
28        timeout: 90000,
29    })
30        .done(function (data) {
31            try {
32                processAjaxSuccessResult(data, successOnCloseCallback, successOnOpenCallback);
33            } catch (e) {
34            }
35        })
36        .fail(function (jqXHR, textStatus) {
37            try {
38                processAjaxErrorResponse(jqXHR, textStatus, failureOnCloseCallback, failureOnOpenCallback);
39            } catch (e) {
40            }
41        })
42        .always(function () {
43            if (isValidStr(submitBtnId)) {
44                $("#" + submitBtnId).attr('disabled', false);
45            }
46
47            if (alwaysCallback != null) {
48                alwaysCallback();
49            }
50        });
51}
52
53export function sendDeleteRequest(url, successOnCloseCallback, failureOnCloseCallback,
54                                  alwaysCallback, submitBtnId,
55                                  successOnOpenCallback = null,
56                                  failureOnOpenCallback = null) {
57
58    if (isValidStr(submitBtnId)) {
59        $("#" + submitBtnId).attr('disabled', true);
60    }
61
62    $.ajax({
63        async: true,
64        type: 'DELETE',
65        url: url,
66        headers: getDefaultHttpHeaders(),
67        contentType: "application/json; charset=utf-8",
68        cache: false,
69        timeout: 90000,
70    })
71        .done(function (data) {
72            try {
73                processAjaxSuccessResult(data, successOnCloseCallback, successOnOpenCallback);
74            } catch (e) {
75            }
76
77        })
78        .fail(function (jqXHR, textStatus) {
79            try {
80                processAjaxErrorResponse(jqXHR, textStatus, failureOnCloseCallback, failureOnOpenCallback);
81            } catch (e) {
82            }
83
84        })
85        .always(function () {
86            if (isValidStr(submitBtnId)) {
87                $("#" + submitBtnId).attr('disabled', false);
88            }
89
90            if (alwaysCallback != null) {
91                alwaysCallback();
92            }
93        });
94}
95
96export function sendGetRequest(url, successCallback, failureCallback,
97                               alwaysCallback, submitBtnId) {
98
99    if (isValidStr(submitBtnId)) {
100        $("#" + submitBtnId).attr('disabled', true);
101    }
102
103    $.ajax({
104        async: true,
105        type: 'GET',
106        url: url,
107        headers: getDefaultHttpHeaders(),
108        contentType: "application/json; charset=utf-8",
109        cache: false,
110        timeout: 90000,
111    })
112        .done(function (data) {
113            try {
114                if (successCallback != null) {
115                    successCallback(data);
116                }
117            } catch (e) {
118            }
119        })
120        .fail(function (jqXHR, textStatus) {
121            try {
122                processAjaxErrorResponse(jqXHR, textStatus, failureCallback);
123            } catch (e) {
124            }
125        })
126        .always(function () {
127            if (isValidStr(submitBtnId)) {
128                $("#" + submitBtnId).attr('disabled', false);
129            }
130
131            if (alwaysCallback != null) {
132                alwaysCallback();
133            }
134        });
135}
136
137
138export function processAjaxSuccessResult(data, onCloseCallback = null, onOpenCallback = null) {
139    // If there is no success message to display
140    if (typeof data === 'string' && !isValidStr(data)) {
141        if (onCloseCallback != null) {
142            onCloseCallback();
143        }
144
145        return;
146    }
147
148    let result;
149    if (typeof data === 'string') {
150        result = JSON.parse(data);
151    } else {
152        result = JSON.parse(JSON.stringify(data))
153    }
154    if (result.displayAsToast === "true") {
155        showSuccessToast(result.alertTitle, result.alertDetails,
156            onCloseCallback, onOpenCallback);
157    } else {
158        alertSimpleSuccess(result.alertTitle,
159            result.alertDetails, onCloseCallback, onOpenCallback, data);
160    }
161
162}
163
164export function processAjaxErrorResponse(jqXHR, textStatus, onCloseCallback = null, onOpenCallback = null) {
165    if (jqXHR.status === 302) {
166        window.location.href = jqXHR.responseText;
167        return;
168    }
169
170    try {
171        alertError(jqXHR, textStatus, onCloseCallback, onOpenCallback);
172    } catch (ignore) {
173        if (onCloseCallback !== null) {
174            onCloseCallback();
175        }
176    }
177
178}
179
180export function getDefaultHttpHeaders() {
181    var headers = {
182        "gb-dashboard-view-id": window.sessionStorage.getItem("gb-dashboard-view-id"),
183        "referer-lang": document.documentElement.lang
184    };
185    try {
186        var country = localStorage.getItem("gb_user_country");
187        if (country) headers["gb-user-country"] = country;
188    } catch (e) { /* private browsing */
189    }
190    return headers;
191}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.