Aller au contenu

Messages recommandés

Posté(e)

@pepite

 

Voici le script un peu modifié pour tenir compte uniquement du timestamp des backups, et supprimer le plus ancien:

--[[
%% properties
%% events
%% globals
--]]


-- Flag dryrun; Si true, la requete sur api pour effacer le backup n'est pas effectuée
local dryrun = true


local backups = api.get('/settings/backups')

-- Vérification de présence Backup
if (backups and type(backups == 'table') and #backups > 0) then
	print(#backups .. ' Backups présents')
	for i in ipairs(backups) do
		fibaro:debug('ID: '..backups[i]['id']..' | TIMESTAMP: '..backups[i]['timestamp']..' | DESCRIPTION: '..backups[i]['description'])
	end
else
	print('Pas de backup ou erreur lors de la récupération de la liste')
	fibaro:abort()
end


-- Pour chaque Backup on stock le timestamp de la date de réalisation dans une table
-- On classe ensuite les timestamps par ordre croissant
local timestamp = {}
for i in ipairs(backups) do
	table.insert(timestamp, backups[i]['timestamp'])
end
table.sort(timestamp)


-- Le 1er timestamp de la table est le plus petit donc le plus vieux en epochtime
-- Dans la table de backup on recherche le backup ayant ce timestamp
local id = false
for i in ipairs(backups) do
	if (tonumber(backups[i]['timestamp']) == tonumber(timestamp[1])) then id = backups[i]['id'] end
end

if id then 
	print("ID du backup le plus ancien: "..id) 
else
	print("Erreur lors de la récupération de l'ID")
	fibaro:abort()
end


-- Requete via API pour effacer le backup le plus vieux
if not dryrun then
	local url = 'http://127.0.0.1:11111/api/settings/backups?id='..id
	local httpClient = net.HTTPClient()
	httpClient:request(url , {
		success = function(response)
					if tonumber(response.status) == 200 then
						print("Backup deleted at " .. os.date())
					else
						print("Error " .. response.status)						
                    end
                end,
        error = function(err)
					print('error = ' .. err)
                end,
        options = {
				method = 'DELETE',
                headers = {
                    ["content-type"] = 'application/x-www-form-urlencoded;'
                            },
                data = 'id='..id
			}
	});
end

Il y a certainement plus simple|propre mais c'est une solution qui semble fonctionnelle.

A voir si ça peut (te) servir

 

 

 

 

  • Upvote 2
Posté(e)

je te l'avais dit Nikko, tu n'y coupera pas au tuto (je te rassure, tu as déjàfait le plus dur, il ne reste que du copier/coller)

×
×
  • Créer...