Merge remote-tracking branch 'upstream/main'
This commit is contained in:
commit
c198775083
|
|
@ -16,8 +16,11 @@
|
||||||
;; configuration logic. Probably using 'ubiquity
|
;; configuration logic. Probably using 'ubiquity
|
||||||
(defparameter *server-port* 8080)
|
(defparameter *server-port* 8080)
|
||||||
(defparameter *music-library-path*
|
(defparameter *music-library-path*
|
||||||
(merge-pathnames "music/library/"
|
(or (uiop:getenv "MUSIC_LIBRARY_PATH")
|
||||||
(asdf:system-source-directory :asteroid)))
|
;; Default to /app/music/ for production Docker, but check if music/library/ exists for local dev
|
||||||
|
(if (probe-file (merge-pathnames "music/library/" (asdf:system-source-directory :asteroid)))
|
||||||
|
(merge-pathnames "music/library/" (asdf:system-source-directory :asteroid))
|
||||||
|
"/app/music/")))
|
||||||
(defparameter *supported-formats* '("mp3" "flac" "ogg" "wav"))
|
(defparameter *supported-formats* '("mp3" "flac" "ogg" "wav"))
|
||||||
(defparameter *stream-base-url* "http://localhost:8000")
|
(defparameter *stream-base-url* "http://localhost:8000")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@
|
||||||
(error 'authentication-error :message "Not authenticated"))
|
(error 'authentication-error :message "Not authenticated"))
|
||||||
|
|
||||||
;; Verify current password
|
;; Verify current password
|
||||||
(unless (verify-user-credentials username current-password)
|
(unless (authenticate-user username current-password)
|
||||||
(error 'authentication-error :message "Current password is incorrect"))
|
(error 'authentication-error :message "Current password is incorrect"))
|
||||||
|
|
||||||
;; Update password
|
;; Update password
|
||||||
|
|
|
||||||
|
|
@ -109,39 +109,47 @@
|
||||||
(not-found-error (e)
|
(not-found-error (e)
|
||||||
(api-output `(("status" . "error")
|
(api-output `(("status" . "error")
|
||||||
("message" . ,(error-message e)))
|
("message" . ,(error-message e)))
|
||||||
|
:message (error-message e)
|
||||||
:status 404))
|
:status 404))
|
||||||
(authentication-error (e)
|
(authentication-error (e)
|
||||||
(api-output `(("status" . "error")
|
(api-output `(("status" . "error")
|
||||||
("message" . ,(error-message e)))
|
("message" . ,(error-message e)))
|
||||||
|
:message (error-message e)
|
||||||
:status 401))
|
:status 401))
|
||||||
(authorization-error (e)
|
(authorization-error (e)
|
||||||
(api-output `(("status" . "error")
|
(api-output `(("status" . "error")
|
||||||
("message" . ,(error-message e)))
|
("message" . ,(error-message e)))
|
||||||
|
:message (error-message e)
|
||||||
:status 403))
|
:status 403))
|
||||||
(validation-error (e)
|
(validation-error (e)
|
||||||
(api-output `(("status" . "error")
|
(api-output `(("status" . "error")
|
||||||
("message" . ,(error-message e)))
|
("message" . ,(error-message e)))
|
||||||
|
:message (error-message e)
|
||||||
:status 400))
|
:status 400))
|
||||||
(database-error (e)
|
(database-error (e)
|
||||||
(format t "Database error: ~a~%" e)
|
(format t "Database error: ~a~%" e)
|
||||||
(api-output `(("status" . "error")
|
(api-output `(("status" . "error")
|
||||||
("message" . "Database operation failed"))
|
("message" . "Database operation failed"))
|
||||||
|
:message "Database operation failed"
|
||||||
:status 500))
|
:status 500))
|
||||||
(asteroid-stream-error (e)
|
(asteroid-stream-error (e)
|
||||||
(format t "Stream error: ~a~%" e)
|
(format t "Stream error: ~a~%" e)
|
||||||
(api-output `(("status" . "error")
|
(api-output `(("status" . "error")
|
||||||
("message" . "Stream operation failed"))
|
("message" . "Stream operation failed"))
|
||||||
|
:message "Stream operation failed"
|
||||||
:status 500))
|
:status 500))
|
||||||
(asteroid-error (e)
|
(asteroid-error (e)
|
||||||
(format t "Asteroid error: ~a~%" e)
|
(format t "Asteroid error: ~a~%" e)
|
||||||
(api-output `(("status" . "error")
|
(api-output `(("status" . "error")
|
||||||
("message" . ,(error-message e)))
|
("message" . ,(error-message e)))
|
||||||
|
:message (error-message e)
|
||||||
:status 500))
|
:status 500))
|
||||||
(error (e)
|
(error (e)
|
||||||
(format t "Unexpected error: ~a~%" e)
|
(format t "Unexpected error: ~a~%" e)
|
||||||
(api-output `(("status" . "error")
|
(api-output `(("status" . "error")
|
||||||
("message" . "An unexpected error occurred"))
|
("message" . "An unexpected error occurred"))
|
||||||
:status 500))))
|
:status 500
|
||||||
|
:message "An unexpected error occurred"))))
|
||||||
|
|
||||||
(defmacro with-db-error-handling (operation &body body)
|
(defmacro with-db-error-handling (operation &body body)
|
||||||
"Wrap database operations with error handling.
|
"Wrap database operations with error handling.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue