diff --git a/audio_convert.lua b/audio_convert.lua index b5d848d..1fda2ca 100644 --- a/audio_convert.lua +++ b/audio_convert.lua @@ -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) \ No newline at end of file + +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() \ No newline at end of file