- 5
- 0
- Версия MoonLoader
- .027.0-preview
Помогите плиз с кодом. Если кратко - есит свой апи сервер на гугл скриптах. Я туда отправляю b64 и сервер там загружает на хостинг и возращает ссылку. На сервере - все прекрасно поучается и ссылку возращает нормально. Только на клиенте lua результат запроса не читается и возращает 302 код. Я так понимаю это перенаправление идет от гугл скриптов автоматически, как сделать чтобы получить ответ от перенаправленного запроса без нового? В текущем коде сервер возращает 405 ошибку
lua:
-- Основная функция отправки изображения
function sendImgToServer(imgData)
if not imgData or #imgData == 0 then
showErrorMessage("Ошибка: пустые данные изображения")
return
end
local postData = {
password = USER_TOKEN,
action = "upload_image",
imageBase64 = imgData
}
local payload = json.encode(postData)
showTrueMessage("Отправка изображения на сервер...")
local success, result = httpsRequestWithRedirect(API_URL, payload, 0)
if not success then
showErrorMessage("? Ошибка сети или сервера: " .. tostring(result))
return
end
if string.find(result, "<HTML>") or string.find(result, "<!DOCTYPE") then
showErrorMessage("Сервер вернул HTML вместо JSON. Проверьте настройки Web App.")
showErrorMessage("Полный ответ: " .. string.sub(result, 1, 200))
return
end
local ok, response = pcall(json.decode, result)
if ok and response then
if response.success or response.status == "success" then
showTrueMessage("? Фото успешно загружено!")
if response.upload_response and response.upload_response.url then
showTrueMessage("?? URL: " .. response.upload_response.url)
elseif response.url then
showTrueMessage("?? URL: " .. response.url)
end
else
showErrorMessage("? Ошибка загрузки: " .. (response.error or "unknown error"))
end
else
showErrorMessage("? Невалидный JSON ответ: " .. string.sub(result, 1, 100))
end
end
function httpsRequestWithRedirect(url, payload, redirectCount)
redirectCount = redirectCount or 0
if redirectCount > 5 then
return false, "Слишком много редиректов"
end
local response_body = {}
local res, code, headers, status = https.request{
url = url,
method = "POST",
headers = {
["Content-Type"] = "application/json",
["Content-Length"] = tostring(#payload)
},
source = ltn12.source.string(payload),
sink = ltn12.sink.table(response_body)
}
if not res then
return false, code
end
if code == 301 or code == 302 then
local location = headers.location or headers.Location
if location then
print("Redirect to:", location)
return httpsRequestWithRedirect(location, payload, redirectCount + 1)
end
end
return true, table.concat(response_body)
end