Lua socket.http sink parameter

https, lua, luasocket, sockets

Solution

You can use `ltn12.sink.table` to collect the results into a given table piece by piece. Then you can use `table.concat` to get the resulting string.

Example of use from the documentation of `ltn12.sink`:

-- load needed modules
local http = require("socket.http")
local ltn12 = require("ltn12")

-- a simplified http.get function
function http.get(u)
  local t = {}
  local status, code, headers = http.request{
    url = u,
    sink = ltn12.sink.table(t)
  }
  return table.concat(t), headers, code
end

Problem

I'm trying to communicate with my servers from Lua to authenticate a user. This is what my request function looks like: ``` function http.send(url) local req = require("socket.http") local b, c, h = req.request{ url = url, redirect = true } return b end ``` However, I noticed that the data is discarded because I did not provide the `sink` parameter. I want to be able to return the downloaded data as a whole string, not download to a file/table. How would I go about this?

Original source