отправка данных http

$Mr.R1ch$

Активный
Автор темы
337
51
Версия MoonLoader
Другое
приветствую, пытался реализовать отправку данных в JSON таблицу и получение, на GitHub, используя токен и api url, http запрос с методом post, но уже ебусь с этим второй день и не понимаю как мне это сделать. Хотел бы тут узнать как это правильно реализовать, и желательно код для примера, чтобы я научился делать это

приветствую, пытался реализовать отправку данных в JSON таблицу и получение, на GitHub, используя токен и api url, http запрос с методом post, но уже ебусь с этим второй день и не понимаю как мне это сделать. Хотел бы тут узнать как это правильно реализовать, и желательно код для примера, чтобы я научился делать это
(библиотека luasocket)
 
Решение
покажи как примерно должно быть, мб получится у меня что то
блять там же черным по белому написано. если не знаешь английский - врубай переводчик

1738183160182.png
1738183172220.png

Lua:
local requests = require('requests');
local base64 = require('base64');
local json = require('json');

local url = 'https://api.github.com/repos/chaposcripts/degrogram/contents/test.json';
local token = 'ТВОЙ ТОКЕН';

function getCurrentFileSha()
    local response = requests.get(url);
    assert(response.status_code == 200, response.status_code .. '\n' .. response.text);
    return json.decode(response.text).sha;
end

function updateFile(token, sha, data)
    local response = requests.put(url, {
        headers = {
            ["Authorization"] = "Bearer "...

The Spark

frontend
Проверенный
703
724
К ответу выше. Если репозиторий публичный, никаких проблем быть не должно.
В примерах есть json post запрос и токены
 

$Mr.R1ch$

Активный
Автор темы
337
51
у меня просто нихуя не получилось сделать PUT запрос к json (это пиздец)

1. Проблема: при попытке совершить запрос на обычную ссылку (не api), вылетает ошибка 403, думал я, что надо токен авторизации вписать, вписал - меня послали нахуй с такой же ошибкой

2. Проблема: использовал уже апи url и ошибка 404 (не найдено), даже блять сделал как на скриншоте всё и тупо нихуя, заголовки делал, ссылку 20 раз проверял, проверял репозиторий, делал GET запрос и все работало, а значит с репозиторием все окей. Мб сделаю новый репозиторий и сюда скину, может я действительно что то не так делал
 
  • Клоун
Реакции: XRLM

chapo

tg/inst: @moujeek
Модератор
9,068
12,024
у меня просто нихуя не получилось сделать PUT запрос к json (это пиздец)

1. Проблема: при попытке совершить запрос на обычную ссылку (не api), вылетает ошибка 403, думал я, что надо токен авторизации вписать, вписал - меня послали нахуй с такой же ошибкой

2. Проблема: использовал уже апи url и ошибка 404 (не найдено), даже блять сделал как на скриншоте всё и тупо нихуя, заголовки делал, ссылку 20 раз проверял, проверял репозиторий, делал GET запрос и все работало, а значит с репозиторием все окей. Мб сделаю новый репозиторий и сюда скину, может я действительно что то не так делал
так ты код то покажи
 

$Mr.R1ch$

Активный
Автор темы
337
51
так ты код то покажи
вот функция http запроса put, вообще я с сайтов делал запросы для теста, ну похуй
Lua:
local jsonData = {}

local function sendData(test1, test2, test3, test4, test5)
    -- Ебашим таблицу с данными
    local data = {
        test1 = test1,
        test2 = test2,
        test3 = test3,
        test4 = test4,
        test5 = test5
    }

    local jsonData = json.encode(data)

    local response_body = {}

    -- Отправляем PUT на сервер бля
    local token = "не хочу" -- Тут надо свой токен доступа ввести
    local response, status = http.request{
        url = "https://api.github.com/repos/MrR1ch/test/contents/test.json",
        method = "PUT", -- Используем PUT для создания/обновления файла
        headers = {
            ["Content-Type"] = "application/json",
            ["Authorization"] = "token " .. token,
            ["Content-Length"] = tostring(#jsonData),
            ["User-Agent"] = "User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Mobile Safari/537.36"
        },
        source = ltn12.source.string(jsonData),
        sink = ltn12.sink.table(response_body)
    }

   
    if status == 201 or status == 200 then
        print("Данные успешно отправлены!")
    else
        print("Ошибка при отправке данных: " .. status)
    end
end
я не эксперт, так что могут быть ошибки
 
  • Клоун
Реакции: kjor32 и XRLM

chapo

tg/inst: @moujeek
Модератор
9,068
12,024
вот функция http запроса put, вообще я с сайтов делал запросы для теста, ну похуй
Lua:
local jsonData = {}

local function sendData(test1, test2, test3, test4, test5)
    -- Ебашим таблицу с данными
    local data = {
        test1 = test1,
        test2 = test2,
        test3 = test3,
        test4 = test4,
        test5 = test5
    }

    local jsonData = json.encode(data)

    local response_body = {}

    -- Отправляем PUT на сервер бля
    local token = "не хочу" -- Тут надо свой токен доступа ввести
    local response, status = http.request{
        url = "https://api.github.com/repos/MrR1ch/test/contents/test.json",
        method = "PUT", -- Используем PUT для создания/обновления файла
        headers = {
            ["Content-Type"] = "application/json",
            ["Authorization"] = "token " .. token,
            ["Content-Length"] = tostring(#jsonData),
            ["User-Agent"] = "User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Mobile Safari/537.36"
        },
        source = ltn12.source.string(jsonData),
        sink = ltn12.sink.table(response_body)
    }

  
    if status == 201 or status == 200 then
        print("Данные успешно отправлены!")
    else
        print("Ошибка при отправке данных: " .. status)
    end
end
я не эксперт, так что могут быть ошибки
1. откуда сука ты взял "token" в Authorization, там же блять написано
1738181793591.png

2. покажи данные которые ты шлешь
 

chapo

tg/inst: @moujeek
Модератор
9,068
12,024
так сука в доках же написано что файл ты должен передавать в base64 в поле content в теле запроса, а еще там должен быть sha который хранит sha файла, который на данный момент лежит на гите
 
  • Вау
Реакции: kyrtion

$Mr.R1ch$

Активный
Автор темы
337
51
так сука в доках же написано что файл ты должен передавать в base64 в поле content в теле запроса, а еще там должен быть sha который хранит sha файла, который на данный момент лежит на гите
покажи как примерно должно быть, мб получится у меня что то
 
  • Клоун
Реакции: XRLM

chapo

tg/inst: @moujeek
Модератор
9,068
12,024
покажи как примерно должно быть, мб получится у меня что то
блять там же черным по белому написано. если не знаешь английский - врубай переводчик

1738183160182.png
1738183172220.png

Lua:
local requests = require('requests');
local base64 = require('base64');
local json = require('json');

local url = 'https://api.github.com/repos/chaposcripts/degrogram/contents/test.json';
local token = 'ТВОЙ ТОКЕН';

function getCurrentFileSha()
    local response = requests.get(url);
    assert(response.status_code == 200, response.status_code .. '\n' .. response.text);
    return json.decode(response.text).sha;
end

function updateFile(token, sha, data)
    local response = requests.put(url, {
        headers = {
            ["Authorization"] = "Bearer " .. token,
            ["X-GitHub-Api-Version"] = '2022-11-28',
            ["Accept"] = 'application/vnd.github+json'
        },
        data = json.encode({
            message = 'pizda',
            sha = sha,
            content = base64.encode(data)
        })
    });
    assert(response.status_code == 200, response.status_code .. '\n' .. response.text);
end

local sha = getCurrentFileSha();
print('Sha:', sha)
updateFile(token, sha, '{"key":"hello world"}');
stas-prosto.gif
 
  • Нравится
Реакции: Oki_Bern

$Mr.R1ch$

Активный
Автор темы
337
51
блять там же черным по белому написано. если не знаешь английский - врубай переводчик

Посмотреть вложение 262832Посмотреть вложение 262833
Lua:
local requests = require('requests');
local base64 = require('base64');
local json = require('json');

local url = 'https://api.github.com/repos/chaposcripts/degrogram/contents/test.json';
local token = 'ТВОЙ ТОКЕН';

function getCurrentFileSha()
    local response = requests.get(url);
    assert(response.status_code == 200, response.status_code .. '\n' .. response.text);
    return json.decode(response.text).sha;
end

function updateFile(token, sha, data)
    local response = requests.put(url, {
        headers = {
            ["Authorization"] = "Bearer " .. token,
            ["X-GitHub-Api-Version"] = '2022-11-28',
            ["Accept"] = 'application/vnd.github+json'
        },
        data = json.encode({
            message = 'pizda',
            sha = sha,
            content = base64.encode(data)
        })
    });
    assert(response.status_code == 200, response.status_code .. '\n' .. response.text);
end

local sha = getCurrentFileSha();
print('Sha:', sha)
updateFile(token, sha, '{"key":"hello world"}');
Посмотреть вложение 262834
а чё надо чтобы сделать post запрос? у меня ошибку 404 выбивало, хз что ещё надо
 
  • Клоун
Реакции: XRLM

chapo

tg/inst: @moujeek
Модератор
9,068
12,024
put мне не подошёл, надо чтобы отправлялось несколько данных в json, а не тупо заменялись
что ты имеешь ввиду говоря «несколько данных»? Пост и пут разные методы, ты не можешь использовать "какой по кайфу", ты должен использовать тот, который указан в документации
 
  • Нравится
Реакции: $Mr.R1ch$ и fokichevskiy