ECS 1 903 Опубликовано: 7 сентября, 2018 (изменено) Доброго времени суток. Захотелось написать клиент для работы с гитхабом через API, однако для заливки файлов на репозиторий требуется отправка PUT-запроса с соответствующим содержимым: Вопрос: это вообще реализуемо через интернет-карту? Если тут имеются эксперты в области веб-запросов, то подскажите, как познать сию магию. Наиболее логичным мне показалось решение ниже, однако увы: local handle = require("component").internet.request( "https://api.github.com/repos/IgorTimofeev/Test/contents/Meow.cpp", '{"path":"meow.cpp","message":"lol","content":"aGVsbG8gd29ybGQ="}', { ["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0", ["Authorization"] = "Basic base64encoded login:pass pair", ["Content-Type"] = "application/application/json", } ) for i = 1, 30 do print(handle.read(math.huge)) end handle.close() В то же время через специализированный софт все прекрасно заливается: И, разумеется, вариант с консольным curl также вполне себе рабочий: curl -ivX PUT -u login:pass -d '{"path": "meow.cpp", "message": "lol", "content": "aGVsbG8gd29ybGQ="}' https://api.github.com/repos/IgorTimofeev/Test/contents/meow.cpp { "content": { "name": "meow.cpp", "path": "meow.cpp", "sha": "95d09f2b10159347eece71399a7e2e907ea3df4f", "size": 11, "url": "https://api.github.com/repos/IgorTimofeev/Test/contents/meow.cpp?ref=master", "html_url": "https://github.com/IgorTimofeev/Test/blob/master/meow.cpp", "git_url": "https://api.github.com/repos/IgorTimofeev/Test/git/blobs/95d09f2b10159347eece71399a7e2e907ea3df4f", "download_url": "https://raw.githubusercontent.com/IgorTimofeev/Test/master/meow.cpp", "type": "file", "_links": { "self": "https://api.github.com/repos/IgorTimofeev/Test/contents/meow.cpp?ref=master", "git": "https://api.github.com/repos/IgorTimofeev/Test/git/blobs/95d09f2b10159347eece71399a7e2e907ea3df4f", "html": "https://github.com/IgorTimofeev/Test/blob/master/meow.cpp" } }, "commit": { "sha": "38e198640380a061ec9357677fa275ed2a450202", "node_id": "MDY6Q29tbWl0MTQ3ODczMzQzOjM4ZTE5ODY0MDM4MGEwNjFlYzkzNTc2NzdmYTI3NWVkMmE0NTAyMDI=", "url": "https://api.github.com/repos/IgorTimofeev/Test/git/commits/38e198640380a061ec9357677fa275ed2a450202", "html_url": "https://github.com/IgorTimofeev/Test/commit/38e198640380a061ec9357677fa275ed2a450202", "author": { "name": "Igor", "email": "sosi@mail.ru", "date": "2018-09-07T22:37:07Z" }, "committer": { "name": "Igor", "email": "sosi@mail.ru", "date": "2018-09-07T22:37:07Z" }, "tree": { "sha": "86d1529b4193d66705cc2272715009166deb16b2", "url": "https://api.github.com/repos/IgorTimofeev/Test/git/trees/86d1529b4193d66705cc2272715009166deb16b2" }, "message": "lol", "parents": [ { "sha": "db4b95734315298cad0e733421051524b4e32fc1", "url": "https://api.github.com/repos/IgorTimofeev/Test/git/commits/db4b95734315298cad0e733421051524b4e32fc1", "html_url": "https://github.com/IgorTimofeev/Test/commit/db4b95734315298cad0e733421051524b4e32fc1" } ], "verification": { "verified": false, "reason": "unsigned", "signature": null, "payload": null } } } Изменено 7 сентября, 2018 пользователем ECS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 7 сентября, 2018 (изменено) Как писал уже в похожей теме на оф. форуме Фингер, встроенная в мод интернет плата не имеет удобного саппорта PUT запросов. Если очень надо, можно сделать хак через сокет. Готовый хак (слегка сырой) от Фингера можно найти тут: libhttp. P.S. Issue в репозитории OpenComputers висит уже два года, и никакого шевеления. Изменено 7 сентября, 2018 пользователем Totoro 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ECS Автор темы 1 903 Опубликовано: 8 сентября, 2018 Если очень надо, можно сделать хак через сокет. Что ж, спасибо за инфу. Видимо, судьба тонко намекает, что оно не очень-то уж и надо хд Либу опробовать, увы, не удалось из-за тонны зависимостей. Вручную качать сдохну, а Hel все лежит и лежит, дыа Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ECS Автор темы 1 903 Опубликовано: 8 сентября, 2018 (изменено) Проблема решена окольным путем через множество GET/POST-запросов. Если кто-то столкнется с апи гитхаба и аналогичной ситуацией, то вот мануал: http://www.levibotelho.com/development/commit-a-file-with-the-github-api/ Единственный нюанс: в последнем пункте требуется использование метода PATCH, однако POST с задачей также прекрасно справился. Изменено 8 сентября, 2018 пользователем ECS 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 8 сентября, 2018 Можно ли написать put запрос через тсл сокеты фингера? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 8 сентября, 2018 Можно ли написать put запрос через тсл сокеты фингера? Можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 9 сентября, 2018 Можно ли написать put запрос через тсл сокеты фингера? У фингера тсл-сокетов нет. Вопрос неясен. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 9 сентября, 2018 У фингера тсл-сокетов нет. Вопрос неясен. Я помню ты писал какие-то сокеты зашифрованные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 9 сентября, 2018 Я помню ты писал какие-то сокеты зашифрованные. Да. TLS Собственно, о них Тотора уже и написал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 9 сентября, 2018 Да. TLS Собственно, о них Тотора уже и написал. Да, с и л местами попутал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах