This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

https function
#1
i make dynamic function to call https command and to add headers like the below,

Code:
1234567891011121314151617181920212223242526272829303132333435363738
function Https_message(method, url, payload, add_headers) --method is "POST", "GET" "PUT" etc htps = require("ssl.https") msg_response = {} hders = {}      if payload or add_headers then         if payload then     hders = { ["Accept"] = "*/*",           ["Content-Type"] = "application/json",           ["Content-Length"] = #payload,           ['Host']  = ip..':'..port}     else       hders = { ["Accept"] = "*/*", ["Content-Type"] = "application/json", ['Host']  = ip..':'..port}     end         if add_headers then   for k, v in pairs(add_headers) do     hders[k] = v    end   end       end   local res, err, res_headers, status = htps.request   {     url = url,     method = method,     protocol = 'tlsv12',     headers = hders,     verify = "none",       source = ltn12.source.string(payload),           sink = ltn12.sink.table(msg_response)   }   return msg_response, err, res_headers end

My problem is, if i call get command like
Code:
12
local msg_response, err, Https_message('GET', 192.168.1.1:443/etc/etc, nil, nil) log(msg_response, err)
with var payload set to nil, the msg_response var returns nil,
i think because, source = ltn12.source.string(payload) would be nil


2 Questions
1- Is the ltn12.source tied together with the ltn12.sink if the source var is present?
2- How can i ignore the ltn12.source if function payload var is set to nil?
Reply
#2
Do not set the source if payload is not provided:
Code:
12345678910111213
local source if payload then   source = ltn12.source.string(payload) end ... local res, err, res_headers, status = htps.request({   ...   source = source, -- source will be nil if payload is not provided   ... })

There's another issue with your code when payload or add_headers are set: ip/port variables are not set, so the function call will produce an error. You can use socket.url to parse the url into parts: http://w3.impa.br/~diego/software/luasoc...html#parse
Reply


Forum Jump: