Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
26bc287
Port PoB 2 trader Oauth API
vaisest Apr 24, 2026
ec61c3b
passive import working
vaisest Apr 24, 2026
0927682
bloodline and gem+item import
vaisest Apr 24, 2026
5c1ad21
fix cluster
vaisest Apr 24, 2026
67c8891
very wip import refactor
vaisest Apr 25, 2026
6649818
make import have options for both oauth and website import
vaisest Apr 26, 2026
555732c
slightly fix tests
vaisest Apr 26, 2026
088b213
Fix test
vaisest Apr 26, 2026
b5dc5ba
change headless wrapper example (untested otherwise)
vaisest Apr 26, 2026
368e841
Fix spaces in ImportTab.lua
vaisest Apr 27, 2026
d0624f7
Fix more indentations and remove extra function
vaisest Apr 27, 2026
64c6723
Fix LaunchServer.lua indents
vaisest Apr 27, 2026
39e5e5c
Add comparison dropdown option back
vaisest Apr 27, 2026
b3f50f2
Prevent crash on semi-invalid JSON
vaisest Apr 27, 2026
9616d35
Change 403 error message
vaisest Apr 27, 2026
f0aba17
Remove error code on login and fix hanging item slot controls in trad…
vaisest May 4, 2026
a2ed48d
prefer last league, realm, and character
vaisest May 4, 2026
420a2e1
Remove extra realms from oauth api
vaisest May 4, 2026
3981952
Fix rate limit in import tab
vaisest May 4, 2026
4baa6aa
whitespace...
vaisest May 5, 2026
e8d84c8
fix site import crash
vaisest May 6, 2026
72a198e
fix import masteries and overrides not working due to improper typing
vaisest May 7, 2026
78a929a
Add tests for importing passive trees and fix control issues
vaisest May 8, 2026
d5fbdae
Defer creation of tradequeryrequests onframefunc
vaisest May 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,5 @@ src/Data/TimelessJewelData/*.bin
# Simplegraphic Debugging
runtime/imgui.ini
runtime/SimpleGraphic/SimpleGraphic.log

src/poe_api_response.json
5,675 changes: 5,675 additions & 0 deletions runtime/lua/sha2.lua

Large diffs are not rendered by default.

148 changes: 148 additions & 0 deletions runtime/lua/socket.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
-----------------------------------------------------------------------------
-- LuaSocket helper module
-- Author: Diego Nehab
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
-- Declare module and import dependencies
-----------------------------------------------------------------------------
local base = _G
local string = require("string")
local math = require("math")
local socket = require("socket.core")

local _M = socket

-----------------------------------------------------------------------------
-- Exported auxiliar functions
-----------------------------------------------------------------------------
function _M.connect4(address, port, laddress, lport)
return socket.connect(address, port, laddress, lport, "inet")
end

function _M.connect6(address, port, laddress, lport)
return socket.connect(address, port, laddress, lport, "inet6")
end

function _M.bind(host, port, backlog)
if host == "*" then host = "0.0.0.0" end
local addrinfo, err = socket.dns.getaddrinfo(host);
if not addrinfo then return nil, err end
local sock, res
err = "no info on address"
for i, alt in base.ipairs(addrinfo) do
if alt.family == "inet" then
sock, err = socket.tcp4()
else
sock, err = socket.tcp6()
end
if not sock then return nil, err end
res, err = sock:bind(alt.addr, port)
if not res then
sock:close()
else
res, err = sock:listen(backlog)
if not res then
sock:close()
else
return sock
end
end
end
return nil, err
end

_M.try = _M.newtry()

function _M.choose(table)
return function(name, opt1, opt2)
if base.type(name) ~= "string" then
name, opt1, opt2 = "default", name, opt1
end
local f = table[name or "nil"]
if not f then base.error("unknown key (".. base.tostring(name) ..")", 3)
else return f(opt1, opt2) end
end
end

-----------------------------------------------------------------------------
-- Socket sources and sinks, conforming to LTN12
-----------------------------------------------------------------------------
-- create namespaces inside LuaSocket namespace
local sourcet, sinkt = {}, {}
_M.sourcet = sourcet
_M.sinkt = sinkt

_M.BLOCKSIZE = 2048

sinkt["close-when-done"] = function(sock)
return base.setmetatable({
getfd = function() return sock:getfd() end,
dirty = function() return sock:dirty() end
}, {
__call = function(self, chunk, err)
if not chunk then
sock:close()
return 1
else return sock:send(chunk) end
end
})
end

sinkt["keep-open"] = function(sock)
return base.setmetatable({
getfd = function() return sock:getfd() end,
dirty = function() return sock:dirty() end
}, {
__call = function(self, chunk, err)
if chunk then return sock:send(chunk)
else return 1 end
end
})
end

sinkt["default"] = sinkt["keep-open"]

_M.sink = _M.choose(sinkt)

sourcet["by-length"] = function(sock, length)
return base.setmetatable({
getfd = function() return sock:getfd() end,
dirty = function() return sock:dirty() end
}, {
__call = function()
if length <= 0 then return nil end
local size = math.min(socket.BLOCKSIZE, length)
local chunk, err = sock:receive(size)
if err then return nil, err end
length = length - string.len(chunk)
return chunk
end
})
end

sourcet["until-closed"] = function(sock)
local done
return base.setmetatable({
getfd = function() return sock:getfd() end,
dirty = function() return sock:dirty() end
}, {
__call = function()
if done then return nil end
local chunk, err, partial = sock:receive(socket.BLOCKSIZE)
if not err then return chunk
elseif err == "closed" then
sock:close()
done = 1
return partial
else return nil, err end
end
})
end


sourcet["default"] = sourcet["until-closed"]

_M.source = _M.choose(sourcet)

return _M
Loading
Loading