36 lines
1.2 KiB
Lua
36 lines
1.2 KiB
Lua
local securedFileTypes = {
|
|
'image',
|
|
'audio',
|
|
'video'
|
|
}
|
|
|
|
---@param source number
|
|
---@param fileType string
|
|
---@return string
|
|
lib.callback.register('phone:getPresignedUrl', function(source, fileType)
|
|
if Config.Webhook == '' then
|
|
Error('Webhook is empty, please set a webhook in the server/custom/webhooks/webhooks.lua file. Or you are not be able to use the voice recorder, camera, and video recorder.')
|
|
return ''
|
|
end
|
|
if not table.includes(securedFileTypes, fileType) then
|
|
Error('Invalid file type', fileType, 'source', source)
|
|
return ''
|
|
end
|
|
local url = ('https://fmapi.net/api/v2/presigned-url?fileType=%s'):format(fileType)
|
|
local promise = promise.new()
|
|
PerformHttpRequest(url, function(err, text, headers)
|
|
local data = json.decode(text)
|
|
if not data then
|
|
return promise:resolve('')
|
|
end
|
|
if data.status ~= 'ok' then
|
|
Error('Failed to get presigned url', data)
|
|
return promise:resolve('')
|
|
end
|
|
promise:resolve(data.data.presignedUrl)
|
|
end, 'GET', nil, {
|
|
Authorization = Config.Webhook
|
|
})
|
|
return Citizen.Await(promise)
|
|
end)
|