- 2,125
- 1,737
Можно создавать, изменить или удалить файл из вашего репозитория на гитхабе!
require requests, base64
require requests, base64
github - settings - developer settings - personal acess token - tokens(classic) - generate new token - generate new token(classic)
Managing your personal access tokens - GitHub Docs
You can use a personal access token in place of a password when authenticating to GitHub in the command line or with the API.
docs.github.com
REST API endpoints for repository contents - GitHub Docs
Use the REST API to create, modify, and delete Base64 encoded content in a repository.
docs.github.com
{githubapi}:
githubapi = {}
setmetatable(githubapi,{
__call = function(_,token)
return setmetatable({token=token},{
__index = function(self,k)
local requests = require "requests"
local base64 = require "base64"
if requests[k] ~= nil then
return function(args)
local headers = {
['Authorization'] = 'token '..self.token,
['Accept'] = 'application/vnd.github+json',
}
if args['url'] ~= nil and args['url']:find("^https%:%/%/github%.com%/%S+/%S.%S+$") then
args.repository = args['url']:match("https%:%/%/github%.com%/(%w+/%w+)%/")
args.path = args['url']:match("https%:%/%/github%.com%/%S+/master/(.+)")
end
if k == "get" then
local r = requests.get(("https://raw.githubusercontent.com/%s/master/%s"):format(args.repository,args.path))
return (r.status_code==200),r
end
local r = requests.get(("https://api.github.com/repos/%s/contents/%s"):format(args.repository,args.path),{
['headers'] = headers,
})
local old = decodeJson(r.text)
if r.status_code ~= 200 then
print('sha nil')
old['sha'] = nil
end
local data = {
['message'] = 'new commint from API',
['sha'] = old['sha'],
}
if args['content'] ~= nil then
data['content'] = base64.encode(args.content)
end
local r = requests.put(("https://api.github.com/repos/%s/contents/%s"):format(args.repository,args.path),{
['headers'] = headers,
['data'] = encodeJson(data) ,
})
return (r.status_code == 200),r
end
end
end
})
end,
})
put:
local g = githubapi("TOKEN")
local status,resp = g.put({url="https://github.com/v3sp4n/test/blob/master/1234.txt",content='QQ'})
--если будет существовать файл то изменится его содержимое, если файла не будет то он создаться с содержимым content
print(status,resp.text)
delete:
local g = githubapi("TOKEN")
local status,resp = g.delete({url="https://github.com/v3sp4n/test/blob/master/1234.txt"})
--удаление файла
print(status,resp.text)
get:
local g = githubapi("TOKEN")
local status,resp = g.get({url="https://github.com/v3sp4n/test/blob/master/1234.txt"})
--вернуть содержимое файла
print(status,resp.text)
Последнее редактирование: