migr: migration json to x.json2

This commit is contained in:
meiseayoung
2025-12-30 12:40:30 +08:00
parent 85b001225e
commit a95485dd25
21 changed files with 223 additions and 145 deletions
+41 -20
View File
@@ -2,7 +2,28 @@ module main
import hono
import net.http
import json
import x.json2
// 响应结构体
struct ErrorResponse {
error string
}
struct ProtectedUserResponse {
message string
user_id string
username string
email string
role string
}
struct ProtectedAdminResponse {
message string
user_id string
username string
email string
role string
}
fn main() {
// 创建数据库管理器
@@ -37,16 +58,16 @@ fn main() {
token := c.req.header.get_custom('Authorization') or { '' }
user := auth_manager.verify_token(token) or {
c.status(401)
return c.json(json.encode({
'error': 'User not found'
return c.json(json2.encode[ErrorResponse](ErrorResponse{
error: 'User not found'
}))
}
return c.json(json.encode({
'message': 'This is a protected user route',
'user_id': user.id.str(),
'username': user.username,
'email': user.email,
'role': user.role.str()
return c.json(json2.encode[ProtectedUserResponse](ProtectedUserResponse{
message: 'This is a protected user route'
user_id: user.id.str()
username: user.username
email: user.email
role: user.role.str()
}))
})
@@ -54,22 +75,22 @@ fn main() {
token := c.req.header.get_custom('Authorization') or { '' }
user := auth_manager.verify_token(token) or {
c.status(401)
return c.json(json.encode({
'error': 'User not found'
return c.json(json2.encode[ErrorResponse](ErrorResponse{
error: 'User not found'
}))
}
if !auth_manager.check_permission(user, 'manage') {
c.status(403)
return c.json(json.encode({
'error': 'Admin access required'
return c.json(json2.encode[ErrorResponse](ErrorResponse{
error: 'Admin access required'
}))
}
return c.json(json.encode({
'message': 'This is a protected admin route',
'user_id': user.id.str(),
'username': user.username,
'email': user.email,
'role': user.role.str()
return c.json(json2.encode[ProtectedAdminResponse](ProtectedAdminResponse{
message: 'This is a protected admin route'
user_id: user.id.str()
username: user.username
email: user.email
role: user.role.str()
}))
})
@@ -142,4 +163,4 @@ fn create_sample_users(mut auth_manager hono.AuthManager) {
auth_manager.create_user('guest', 'guest@example.com', 'guest123', hono.UserRole.guest) or { return }
println('✅ 示例用户已创建')
}
}
+4 -4
View File
@@ -11,13 +11,13 @@ fn main() {
create_test_files()
// 创建应用
mut app := hono.Hono.new()
mut app := &hono.Hono{}
// 测试路由
setup_test_routes(mut app)
// 在后台启动服务器
go app.listen(':8081')
spawn app.listen(':8081')
// 等待服务器启动
time.sleep(2 * time.second)
@@ -227,8 +227,8 @@ fn test_smart_selection() {
if result2.exit_code == 0 {
// 检查下载的文件大小
if os.exists('large_output.txt') {
downloaded_size := os.file_size('large_output.txt') or { 0 }
original_size := os.file_size('test_large.txt') or { 0 }
downloaded_size := os.file_size('large_output.txt')
original_size := os.file_size('test_large.txt')
if downloaded_size == original_size {
println('✅ 智能选择大文件: 成功 (${downloaded_size} bytes)')
} else {