add get wx media function

This commit is contained in:
moicen
2021-12-28 23:11:48 +08:00
committed by 阿男
parent 2b4c9ec3b7
commit 7ba0de85c7
+92 -35
View File
@@ -1,49 +1,106 @@
local cjson = require "cjson"
local http = require "resty.http"
local uuid = require "resty.jit-uuid"
local TaskTypes = {
NOOP = 'NOOP',
AUDIO_CONVERT = "AUDIO_CONVERT"
}
local task_server = ngx.var.task_server
local htyuc = ngx.var.htyuc
local host = ngx.var.host
ngx.log(ngx.INFO, "TASK_SERVER -> ", task_server)
ngx.log(ngx.INFO, "HTYUC -> ", htyuc)
ngx.log(ngx.INFO, "HOST -> ", host)
ngx.log(ngx.INFO, "URL -> ", ngx.var.uri)
local sudoerToken = ngx.req.get_headers().HtySudoerToken
local htyhostHeader = ngx.req.get_headers().HtyHostHeader
local httpc = http.new()
local media_id = ngx.req.get_uri_args().media_id
local remote_url = string.format("%s/api/v1/uc/wx/get_access_token", htyuc)
ngx.log(ngx.INFO, 'remote_url -> ', remote_url)
ngx.log(ngx.INFO, 'HtyHostHeader -> ', htyhostHeader)
ngx.log(ngx.INFO, 'HtySudoerToken -> ', sudoerToken)
local function get_access_token()
local res, err = httpc:request_uri(
remote_url,
{
method = "GET",
headers = {
["HtyHostHeader"] = htyhostHeader,
["HtySudoerToken"] = sudoerToken,
},
body = body_text,
}
)
if res == nil then
ngx.log(ngx.ERR, "FAILED TO CONNECT TO *HTYUC*", err)
local htyuc = ngx.var.htyuc
local host = ngx.var.host
ngx.log(ngx.INFO, "HTYUC -> ", htyuc)
ngx.log(ngx.INFO, "HOST -> ", host)
ngx.log(ngx.INFO, "URL -> ", ngx.var.uri)
local sudoerToken = ngx.req.get_headers().HtySudoerToken
local htyhostHeader = ngx.req.get_headers().HtyHost
local remote_url = string.format("%s/api/v1/uc/wx/get_access_token", "https://test-music-room.moicen.com")
ngx.log(ngx.INFO, 'remote_url -> ', remote_url)
ngx.log(ngx.INFO, 'HtyHostHeader -> ', htyhostHeader)
ngx.log(ngx.INFO, 'HtySudoerToken -> ', sudoerToken)
local res, err = httpc:request_uri(
remote_url,
{
ssl_verify = ssl_verify or false, -- 设置参数 ssl_verify 为false 不校验ssl证书
method = "GET",
headers = {
["HtyHost"] = htyhostHeader,
["HtySudoerToken"] = sudoerToken,
},
body = body_text,
}
)
if res == nil then
ngx.log(ngx.ERR, "FAILED TO CONNECT TO *HTYUC*", err)
end
if 200 ~= res.status then
ngx.log(ngx.ERR, "GET ACCESS TOKEN *FAILED*", err)
ngx.say(err)
ngx.exit(res.status)
end
ngx.log(ngx.ERR, res.body)
return cjson.decode(res.body).d
end
if 201 ~= res.status then
ngx.log(ngx.ERR, "GET ACCESS TOKEN *FAILED*", err)
ngx.say(err)
ngx.exit(res.status)
local function get_wx_media()
local access_token = get_access_token()
print("access token: " .. access_token)
local wx_media_url = string.format("https://api.weixin.qq.com/cgi-bin/media/get?access_token=%s&media_id=%s", access_token, media_id)
print("wx_media_url: " .. wx_media_url)
local res, err = httpc:request_uri(wx_media_url, {
method = 'GET',
ssl_verify = ssl_verify or false, -- 设置参数 ssl_verify 为false 不校验ssl证书
})
if res == nil then
ngx.log(ngx.ERR, "FAILED TO CONNECT TO *Weixin*", err)
ngx.say(err)
ngx.exit(500)
end
if 200 ~= res.status then
ngx.log(ngx.ERR, 'GET WECHET MEDIA *FAILED*', err)
ngx.say(err)
ngx.exit(res.status)
end
local filename = ngx.re.match(res.headers['Content-disposition'], [[filename="(\w+\.(amr|speex))"]], "jo")[1]
local file_dir = ngx.var.tmp_file_dir
local saved_audio = file_dir .. "/" .. filename;
print('saved audio file...' .. saved_audio);
local file, err = io.open(saved_audio, 'w')
if file == nil then
print("Can not open file..." .. err)
else
file:write(res.body)
file:close()
end
ngx.say(res.body)
end
ngx.say(res.body)
local function convert()
get_wx_media()
local task_server = ngx.var.task_server
ngx.log(ngx.INFO, "TASK_SERVER -> ", task_server)
-- todo: convert file
end
convert()