sermoni

"Service monitor" / cronjob status service
Log | Files | Refs

requests.js (3580B)


      1 
      2 
      3 export default {
      4     init,
      5     login,
      6     logout,
      7     getServices,
      8     postService,
      9     deleteService,
     10     getEvents,
     11     deleteEvent,
     12 }
     13 
     14 /***** Login and authentication *****/
     15 
     16 var csrfToken;
     17 
     18 function init(successHandler, errorHandler) {
     19     request({
     20         url: "/init",
     21         success: (data) => {
     22             csrfToken = data.csrftoken;
     23             if (successHandler) {
     24                 successHandler(data);
     25             }
     26         },
     27         error: errorHandler
     28     });
     29 }
     30 
     31 function login(passphrase, successHandler, errorHandler) {
     32     request({
     33         url: "/login",
     34         method: "POST",
     35         data: { passphrase: passphrase },
     36         success: successHandler,
     37         error: errorHandler
     38     });
     39 }
     40 
     41 function logout(successHandler, errorHandler) {
     42     request({
     43         url: "/logout",
     44         method: "POST",
     45         success: successHandler,
     46         error: errorHandler
     47     });
     48 }
     49 
     50 
     51 /***** Service management *****/
     52 
     53 function getServices(successHandler, errorHandler) {
     54     request({
     55         url: "/services",
     56         success: successHandler,
     57         error: errorHandler
     58     });
     59 }
     60 
     61 function postService(service, successHandler, errorHandler) {
     62     request({
     63         url: "/services",
     64         method: "POST",
     65         expectedStatus: 201,
     66         data: service,
     67         success: successHandler,
     68         error: errorHandler
     69     });
     70 }
     71 
     72 function deleteService(id, successHandler, errorHandler) {
     73     request({
     74         url: "/services/" + id,
     75         method: "DELETE",
     76         success: successHandler,
     77         error: errorHandler
     78     });
     79 }
     80 
     81 /***** Event management *****/
     82 
     83 function getEvents(successHandler, errorHandler) {
     84     request({
     85         url: "/events",
     86         success: successHandler,
     87         error: errorHandler
     88     });
     89 }
     90 
     91 function deleteEvent(id, successHandler, errorHandler) {
     92     request({
     93         url: "/events/" + id,
     94         method: "DELETE",
     95         success: successHandler,
     96         error: errorHandler
     97     });
     98 }
     99 
    100 
    101 
    102 /***** Request utils *****/
    103 
    104 // Send a request to server. Takes request description, jsonRequest,
    105 // on the following format
    106 // {
    107 //      url: "/services" ,
    108 //      method: "POST",
    109 //      data: { "newId": 8234 }
    110 //      expectedStatus: 201,
    111 //      error: errData => { console.log(errData); },
    112 //      success: successData => { console.log(successData); }
    113 // }
    114 function request(jsonRequest) {
    115     if (!jsonRequest.url) {
    116         console.error("No URL provided in the request object");
    117         return;
    118     }
    119     let xhttp = new XMLHttpRequest();
    120     xhttp.onreadystatechange = function() {
    121         if (!jsonRequest.expectedStatus) {
    122             jsonRequest.expectedStatus = 200
    123         }
    124         if (this.readyState === XMLHttpRequest.DONE) {
    125             const data = this.responseText ? JSON.parse(this.responseText) : {};
    126             if (this.status !== jsonRequest.expectedStatus) {
    127                 if (jsonRequest.error) {
    128                     jsonRequest.error(this.status, data);
    129                 } else {
    130                     console.error(this.status + ": " + this.responseText);
    131                 }
    132             } else if (jsonRequest.success) {
    133                 jsonRequest.success(data);
    134             }
    135         }
    136     };
    137     if (jsonRequest.method) {
    138         xhttp.open(jsonRequest.method, jsonRequest.url, true);
    139     } else {
    140         xhttp.open("GET", jsonRequest.url, true);
    141     }
    142     xhttp.setRequestHeader("X-Csrf-Token", csrfToken);
    143     if (jsonRequest.data) {
    144         xhttp.setRequestHeader("Content-Type", "application/json");
    145         xhttp.send(JSON.stringify(jsonRequest.data));
    146     } else {
    147         xhttp.send();
    148     }
    149 }
    150