Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
11 changes: 11 additions & 0 deletions src/voice/_index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@ entries:
description: Given page context (page, params), returns the agent ID to use for this page

# ── Libraries ──
- name: api_error
kind: library.lua
meta:
comment: Sanitized API error responses with server-side logging
source: file://api_error.lua
modules:
- logger

- name: agents
kind: library.lua
source: file://agents.lua
Expand Down Expand Up @@ -92,6 +100,7 @@ entries:
source: file://ask.lua
method: handler
imports:
api_error: wippy-swiss.voice:api_error
session: wippy-swiss.voice:session
context: wippy-swiss.voice:context
agents: wippy-swiss.voice:agents
Expand Down Expand Up @@ -124,6 +133,8 @@ entries:
kind: function.lua
source: file://tts_token.lua
method: handler
imports:
api_error: wippy-swiss.voice:api_error
modules:
- http
- json
Expand Down
17 changes: 17 additions & 0 deletions src/voice/api_error.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
local log = require("logger"):named("wippy-swiss.voice")

local api_error = {}

function api_error.fail(res, status, message, err)
if err ~= nil then
log:error(message, { error = tostring(err) })
end

res:set_status(status)
res:write_json({
success = false,
error = message
})
end

return api_error
4 changes: 2 additions & 2 deletions src/voice/ask.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ local security = require("security")
local time = require("time")
local logger = require("logger"):named("voice")
local contract = require("contract")
local api_error = require("api_error")

local session = require("session")
local context = require("context")
Expand Down Expand Up @@ -142,8 +143,7 @@ local function handler()
)

if not ok then
res:set_status(http.STATUS.INTERNAL_ERROR)
res:write_json({ success = false, error = "send failed: " .. tostring(send_err) })
api_error.fail(res, http.STATUS.INTERNAL_ERROR, "send failed", send_err)
return
end

Expand Down
4 changes: 2 additions & 2 deletions src/voice/tts_token.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ local json = require("json")
local env = require("env")
local security = require("security")
local http_client = require("http_client")
local api_error = require("api_error")

local NS = "voice.env:"

Expand Down Expand Up @@ -82,8 +83,7 @@ local function handler()

local tts, tts_err = get_tts_config()
if not tts then
res:set_status(http.STATUS.INTERNAL_ERROR)
res:write_json({ success = false, error = tts_err })
api_error.fail(res, http.STATUS.INTERNAL_ERROR, tts_err, nil)
return
end

Expand Down
Loading