Сейчас попробовал снова - столкнулся с лимитом максимального количества обращений не более 60 за час.
А на днях вообще апи у них не работал.
Переписал без апи:
login := "login"
password := "pass"
gist := "gist id"
NewText := "privet!"
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
; логинимся
HTTP.Open("GET", "https://github.com/login", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.send()
HTTP.WaitForResponse()
RegexMatch(HTTP.ResponseText, "s)name=""authenticity_token"" value=""(.+?)"".+?name=""timestamp"" value=""(.+?)"".+?name=""timestamp_secret"" value=""(.+?)""", match)
Post := "commit=Sign+in&authenticity_token=" match1 "&login=" login "&password=" password "&webauthn-support=supported&webauthn-iuvpaa-support=unsupported&return_to=https%3A%2F%2Fgithub.com%2Flogin&allow_signup=&client_id=&integration=&required_field_073c=×tamp=" match2 "×tamp_secret=" match3
HTTP.Open("POST", "https://github.com/session", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
HTTP.send(Post)
HTTP.WaitForResponse()
; редактируем гист
HTTP.Open("GET", "https://gist.github.com/" login "/" gist "/edit", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.send()
HTTP.WaitForResponse()
token := RegexReplace(HTTP.ResponseText, "s)^.*id=""edit_gist_.+?name=""authenticity_token"" value=""(.+?)"".*$", "$1")
gistLink := RegexReplace(HTTP.ResponseText, "s)^.*gist\[contents]\[]\[oid]""\R\s+?value=""(.+?)"".*$", "$1")
filename := RegexReplace(HTTP.ResponseText, "s)^.*class=""js-new-filename-field"" value=""(.+?)"".*$", "$1")
Post := "_method=put&authenticity_token=" token "&gist%5Bdescription%5D=&gist%5Bcontents%5D%5B%5D%5Boid%5D=" gistLink "&gist%5Bcontents%5D%5B%5D%5Bname%5D=" filename "&new_filename=" filename "&content_changed=true&gist%5Bcontents%5D%5B%5D%5Bvalue%5D=" UriEncode(NewText)
HTTP.Open("POST", "https://gist.github.com/" login "/" gist, true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
HTTP.send(Post)
HTTP.WaitForResponse()
; читаем измененный гист
HTTP.Open("GET", "https://gist.github.com/" login "/" gist, true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.send()
HTTP.WaitForResponse()
msgbox % ResponseText := RegexReplace(HTTP.ResponseText, "s)^.*<textarea class=""form-control js-task-list-field d-none"" name=""gist\[content]"".*?>(.*?)</textarea>.*$", "$1")
return
UriEncode(Uri)
{
VarSetCapacity(Var, StrPut(Uri, "UTF-8"), 0)
StrPut(Uri, &Var, "UTF-8")
f := A_FormatInteger
SetFormat, IntegerFast, H
While Code := NumGet(Var, A_Index - 1, "UChar")
If (Code >= 0x30 && Code <= 0x39 ; 0-9
|| Code >= 0x41 && Code <= 0x5A ; A-Z
|| Code >= 0x61 && Code <= 0x7A) ; a-z
Res .= Chr(Code)
Else
Res .= "%" . SubStr(Code + 0x100, -1)
SetFormat, IntegerFast, %f%
Return, Res
}