Skip to content

Instantly share code, notes, and snippets.

@kevinlekiller
Created September 28, 2019 19:19
Show Gist options
  • Save kevinlekiller/40c94d87321c64547c9e5a4b629718d9 to your computer and use it in GitHub Desktop.
Save kevinlekiller/40c94d87321c64547c9e5a4b629718d9 to your computer and use it in GitHub Desktop.
local http = require("socket.http")
require("TamrielTradeCentre")
if not TamrielTradeCentreVars["Default"] then
return
end
local serverEU = false
local gf = io.open("guilds.lua", "rb")
local guilds
if gf then
gf:close()
require("guilds")
else
guilds = {["EUData"] = {}, ["NAData"] = {}}
end
function mkJson(guild, time, kiosk, entries)
local ret = "["
for number, entry in pairs(entries) do
ret = ret .. '{"DiscoverUnixTime":' .. time .. ',"GuildKioskLocationID":' .. kiosk .. ',"GuildName":"' .. guild .. '","TradeAsset":{"Amount":'
ret = ret .. entry["Amount"] .. ',"Item":{'
if entry["Category2IDOverWrite"] ~= nil then
ret = ret .. '"Category2IDOverWrite":' .. entry["Category2IDOverWrite"] .. ','
end
if entry["ID"] ~= nil then
ret = ret .. '"ID":' .. entry["ID"] .. ','
end
if entry["ItemLink"] ~= nil then
ret = ret .. '"ItemLink":"' .. entry["ItemLink"] .. '",'
end
if entry["Level"] ~= nil then
ret = ret .. '"LevelTotal":' .. entry["Level"] .. ','
end
if entry["MasterWritInfo"] ~= nil then
ret = ret .. '"MasterWritInfo":{'
for key, value in pairs(entry["MasterWritInfo"]) do
ret = ret .. '"' .. key .. '":'
if tonumber(value) == nil then
ret = ret .. '"' .. value .. '",'
else
ret = ret .. value .. ','
end
end
ret = string.gsub(ret, ',$', '')
ret = ret .. '},'
end
if entry["QualityID"] ~= nil then
ret = ret .. '"QualityID":' .. entry["QualityID"] .. ','
end
if entry["TraitID"] ~= nil then
ret = ret .. '"TraitID":' .. entry["TraitID"] .. ','
end
if entry["UID"] ~= nil then
ret = ret .. '"UID":' .. entry["UID"] .. ','
end
ret = string.gsub(ret, ',$', '')
ret = ret .. '},"TotalPrice":' .. entry["TotalPrice"] .. '}},'
end
ret = string.gsub(ret, ',$', '')
ret = ret .. ']'
return ret
end
function postJson(json, server)
if server == "EUData" then
server = "eu"
else
server = "us"
end
local resp = {}
response, code, headers = http.request {
method = "POST",
url = "https://" .. server .. ".tamrieltradecentre.com/api/PC/Trade/PostTrade",
headers = {
["Accept"] = "*/*";
["Accept-Encoding"] = "gzip, deflate, br";
["Accept-Language"] = "en-US,en;q=0.5";
["Connection"] = "keep-alive";
["Content-Type"] = "application/json; charset=UTF-8";
["Content-Length"] = #json;
["DNT"] = "1";
["Host"] = server .. ".tamrieltradecentre.com";
["Referer"] = "https://us.tamrieltradecentre.com/pc/Trade/WebClient";
["TE"] = "Trailers";
["User-Agent"] = "Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0";
["WebClientVersion"] = "2.0.0.0";
},
source = ltn12.source.string(json),
sink = ltn12.sink.table(resp)
}
print(response)
print(code)
if type(headers) == "table" then
for k, v in pairs(headers) do
print(k, v)
end
end
if type(resp) == "table" then
for k, v in pairs(resp) do
print(k, v)
end
end
end
for username, udata in pairs(TamrielTradeCentreVars["Default"]) do
for server, sdata in pairs(udata["$AccountWide"]) do
if server == "EUData" or server == "NAData" then
if server == "EUData" then
serverEU = true
elseif server == "NAData" then
serverEU = false
end
for guild, gdata in pairs(sdata["Guilds"]) do
if gdata["Entries"][0] ~= nil and tonumber(gdata["KioskLocationID"]) ~= nil then
if guilds[server][guild] == nil then
guilds[server][guild] = gdata["LastUpdate"] - 1
end
if gdata["LastUpdate"] > guilds[server][guild] then
local json = mkJson(guild, gdata["LastUpdate"], gdata["KioskLocationID"], gdata["Entries"])
print(json)
postJson(json, server)
end
end
end
end
end
end
-- TODO - Write "guilds" variable to guilds.lua so the next time this runs it doesn't resend the same info to the API
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment