Oi Fabiano!
Parece que você está no caminho certo, mas com algumas dificuldades na implementação. O processo de exclusão de arquivos do GitHub via API realmente exige a inclusão do SHA do arquivo, além de algumas outras informações que precisam ser passadas no corpo da requisição.
Vou tentar te ajudar com a sintaxe correta para usar o requests.delete()
no seu caso.
Passo a passo para deletar um arquivo do GitHub via API
Obtenha o SHA do arquivo: Como você já mencionou, você precisa do SHA do arquivo para deletá-lo. Para isso, você pode primeiro fazer uma requisição GET para obter as informações sobre o arquivo, incluindo o SHA.
Aqui está um exemplo para pegar as informações de um arquivo:
import requests
url = 'https://api.github.com/repos/usuario/repo/contents/caminho/do/arquivo'
headers = {
'Authorization': 'token SEU_TOKEN_AQUI',
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
file_info = response.json()
sha = file_info['sha']
print(f'SHA do arquivo: {sha}')
else:
print('Erro ao obter informações do arquivo:', response.status_code)
Deletando o arquivo: Agora, com o SHA em mãos, você pode fazer a requisição DELETE
para excluir o arquivo. Para isso, você vai precisar passar o SHA no corpo da requisição, junto com o nome do arquivo e o caminho completo.
Exemplo para deletar o arquivo:
import requests
url = 'https://api.github.com/repos/usuario/repo/contents/caminho/do/arquivo'
headers = {
'Authorization': 'token SEU_TOKEN_AQUI',
}
# Dados necessários para deletar o arquivo
data = {
'message': 'Deletando o arquivo via API',
'sha': sha, # SHA do arquivo
'branch': 'main', # Se estiver utilizando uma branch diferente da main, especifique aqui
}
response = requests.delete(url, headers=headers, json=data)
if response.status_code == 200:
print('Arquivo deletado com sucesso!')
else:
print('Erro ao deletar o arquivo:', response.status_code)
- O SHA que você pegou na etapa anterior é crucial para identificar o arquivo que você deseja excluir.
- A chave
'message'
no corpo da requisição é obrigatória e descreve a alteração que está sendo feita (neste caso, a exclusão). - A chave
'branch'
é opcional, mas se o arquivo estiver em uma branch diferente da main
, você precisa especificar qual branch.
Se você seguir esses passos, deve conseguir excluir o arquivo corretamente. Caso continue enfrentando problemas, vale a pena conferir a resposta completa da requisição para entender se está retornando algum erro adicional que pode estar ajudando a diagnosticar o problema.
Espero que isso ajude! Qualquer dúvida, só chamar.