lunes, 10 de abril de 2017

Atacar al API Restful de MXTOOLBOX usando curl

Mxtoolbox proporciona una API para poder interactuar con su servicio. Los ejemplos que dan están en Ajax:
var apiUrl = 'https://api.mxtoolbox.com/api/v1/Monitor';
var apiKey = '<KEY_PERSONAL>';

$.ajax({
    url: apiUrl,
    type: 'GET',
    dataType: 'json',
    success: function (result) {
        //OnSuccess Callback
    },
    error: function (xhr, status, error) {
        //OnError Callback
    },
    beforeSend: function (xhr) {
        if (apiKey) {
            xhr.setRequestHeader('Authorization', apiKey);
        }
    }
});
Así listaríamos los monitores según el ejeplo que dan
Por limitaciones, tenía que hacer esto usando cURL, así que buscando buscando quedaría una cosa así:
curl -X POST  -H "Content-type: application/json"  -H "Authorization: <KEY_PERSONAL>" --request GET "https://api.mxtoolbox.com/api/v1/Monitor"
 La otra que me interesaba era el borrar un monitor, que con el ejemplo que dan sería así:
var apiUrl = 'https://api.mxtoolbox.com/api/v1/Monitor/<id monitor>';
var apiKey = '<KEY_PERSONAL>'; 

$.ajax({ 
    url: apiUrl, 
    type: 'DELETE',
    dataType: 'json', 
    success: function (result) { 
        //OnSuccess Callback
    },
    error: function (xhr, status, error) { 
        //OnError Callback
    },
    beforeSend: function (xhr) { 
        if (apiKey) { 
            xhr.setRequestHeader('Authorization', apiKey); 
        } 
    } 
});
Para borrar un monitor
Que en cURL quedaría:
curl -X POST  -H "Content-type: application/json"  -H "Authorization: <KEY_PERSONAL>" --request DELETE "https://api.mxtoolbox.com/api/v1/Monitor/<id monitor>"
Con estas dos llamadas y un poco de bash, conseguí hacer lo que necesitaba que era borrar todos los monitores de una tacada:
curl -X POST  -H "Content-type: application/json"  -H "Authorization: <KEY_PERSONAL>" --request GET "https://api.mxtoolbox.com/api/v1/Monitor" | grep MonitorUID | awk -F ":" '{ print $2 }' | sed 's/^ "//g' | sed 's/,//' |sed 's/ //'| sed 's/^/https:\/\/api.mxtoolbox.com\/api\/v1\/Monitor\//' | sed 's/^/curl -X POST -H "Content-type: application\/json" -H "Authorization: <KEY_PERSONAL>" --request DELETE "/'
Bueno, esto me imprime por pantalla y toca hacer copy paste, ¡pero la idea está ahí y había prisa!