NOTE: Get an APIKey.
This code will allow you to get a session, fetch account info, upload a file, and search games. From it you should be able to discern how to work with the entire TGC API.
-- tgc api -- Use this function to perform your initial setup function setup() username=url_encode("USERNAME") password=url_encode("PASSWORD") key="API-KEY" headers={} headers["Content-Type"]="application/x-www-form-urlencoded" params={ method="POST", headers=headers, data="api_key_id=" .. key .. "&username=" ..username .. "&password=" .. password } http.request("https://www.thegamecrafter.com/api/session", sessionSuccess, tgcError, params) end function sessionSuccess(data) print(data) tbl=json.decode(data) sessionId=tbl["result"]["id"] user=tbl["result"]["user_id"] params={ method="GET" } http.request("https://www.thegamecrafter.com/api/user/" .. user .. "?session_id=" .. sessionId, userSuccess, tgcError, params) end function userSuccess(data) print(data) tbl=json.decode(data) fileStr=readAll(os.getenv("HOME") .. "/Documents/FILENAME.png") folderId=tbl["result"]["root_folder_id"] fileName="FILENAME.png" fileType="image/png" boundary="SOME_BOUNDARY_NAME" crlf="\r\n" headers={} headers["Content-Type"]="multipart/form-data; boundary=" .. boundary message="--" .. boundary .. crlf .. "Content-Disposition: form-data; name=\"folder_id\"" .. crlf .. crlf.. folderId .. crlf .. "--" .. boundary .. crlf .. "Content-Disposition: form-data; name=\"session_id\"" .. crlf .. crlf .. sessionId .. crlf .. "--" .. boundary .. crlf .. "Content-Disposition: form-data; name=\"file\"; filename=\"" .. fileName .."\"" .. crlf .. "Content-Type: " .. fileType .. crlf .. crlf .. fileStr .. "\r\n" .. "--" .. boundary .. "--" headers["Content-Length"]=tostring(string.len(message)) params={ method="POST", headers=headers, data=message } http.request("https://www.thegamecrafter.com/api/file", uploadSuccess, tgcError, params) end function uploadSuccess(data) print(data) query="Steampunk" params={ method="GET" } http.request("https://www.thegamecrafter.com/api/game" .. "?session_id=" .. sessionId .. "&q=" .. query, logout, tgcError, params) end function logout(data) print(data) params={ method="DELETE" } http.request("https://www.thegamecrafter.com/api/session/" .. sessionId, function(data) print(data) end, tgcError, params) end function tgcError(error) print(error) end function url_encode(str) if (str) then str = string.gsub (str, "\n", "\r\n") str = string.gsub (str, "([^%w %-%_%.%~])", function (c) return string.format ("%%%02X", string.byte(c)) end) str = string.gsub (str, " ", "%%20") end return str end function readAll(file) local f = io.open(file, "rb") local content = f:read("*all") f:close() return content end