55 lines
1.7 KiB
Crystal
55 lines
1.7 KiB
Crystal
require "uri"
|
|
require "base64"
|
|
require "crypto/bcrypt/password"
|
|
|
|
include CrystalGauntlet
|
|
|
|
CrystalGauntlet.endpoints["/getGJUsers20.php"] = ->(body : String): String {
|
|
params = URI::Params.parse(body)
|
|
LOG.debug { params.inspect }
|
|
|
|
page = params["page"].to_i
|
|
results = [] of String
|
|
username = params["str"] + "%"
|
|
|
|
DATABASE.query("select username, id, coins, user_coins, icon_type, cube, ship, ball, ufo, wave, robot, spider, color1, color2, special, udid, account_id, stars, creator_points, demons from users where id = ? or username like ? order by stars desc limit 10 offset #{page * 10}", params["str"], username) do |rs|
|
|
rs.each do
|
|
username = rs.read(String)
|
|
id = rs.read(Int32)
|
|
coins = rs.read(Int32)
|
|
user_coins = rs.read(Int32)
|
|
icon_type = rs.read(Int32)
|
|
icon_value = [rs.read(Int32), rs.read(Int32), rs.read(Int32), rs.read(Int32), rs.read(Int32), rs.read(Int32), rs.read(Int32)][icon_type]
|
|
color1 = rs.read(Int32)
|
|
color2 = rs.read(Int32)
|
|
special = rs.read(Int32)
|
|
udid = rs.read(String | Nil)
|
|
account_id = rs.read(Int32 | Nil)
|
|
stars = rs.read(Int32)
|
|
creator_points = rs.read(Int32)
|
|
demons = rs.read(Int32)
|
|
|
|
results << Format.fmt_hash({
|
|
1 => username,
|
|
2 => id,
|
|
3 => stars,
|
|
4 => demons,
|
|
8 => creator_points,
|
|
9 => icon_value,
|
|
10 => color1,
|
|
11 => color2,
|
|
13 => coins,
|
|
14 => icon_type,
|
|
15 => special,
|
|
16 => account_id || udid,
|
|
17 => user_coins,
|
|
})
|
|
end
|
|
end
|
|
|
|
amount = DATABASE.scalar("select count(*) from users where id = ? or username like ?", params["str"], username)
|
|
response = [results.join("|"), "#{amount}:#{page * 10}:10"].join("#")
|
|
|
|
response
|
|
}
|