summaryrefslogtreecommitdiff
path: root/src/db/rest/util
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2024-04-05 10:46:09 -0400
committerFreya Murphy <freya@freyacat.org>2024-04-05 10:46:09 -0400
commit530bbf058781e00e588f1457b6ee589a64b74da1 (patch)
treec6cdd382a86d55538686293e51a1fc056cb59029 /src/db/rest/util
parentremove var (diff)
downloadxssbook2-530bbf058781e00e588f1457b6ee589a64b74da1.tar.gz
xssbook2-530bbf058781e00e588f1457b6ee589a64b74da1.tar.bz2
xssbook2-530bbf058781e00e588f1457b6ee589a64b74da1.zip
i did thing oh god large commit
Diffstat (limited to '')
-rw-r--r--src/db/rest/media/_api_serve_system_media.sql (renamed from src/db/rest/util/_api_serve_media.sql)20
-rw-r--r--src/db/rest/util/_api_raise_not_found.sql16
2 files changed, 24 insertions, 12 deletions
diff --git a/src/db/rest/util/_api_serve_media.sql b/src/db/rest/media/_api_serve_system_media.sql
index c2e213a..5cd87c2 100644
--- a/src/db/rest/util/_api_serve_media.sql
+++ b/src/db/rest/media/_api_serve_system_media.sql
@@ -1,4 +1,4 @@
-CREATE FUNCTION _api.serve_media(
+CREATE FUNCTION _api.serve_system_media(
_media_id INTEGER
)
RETURNS sys."*/*"
@@ -8,34 +8,30 @@ DECLARE
_headers TEXT;
_data BYTEA;
BEGIN
-
SELECT FORMAT(
'[{"Content-Type": "%s"},'
'{"Content-Disposition": "inline; filename=\"%s\""},'
'{"Cache-Control": "max-age=259200"}]'
- , m.type, m.name)
+ , m.mime, m.name)
FROM admin.media m
- WHERE m.id = _media_id INTO _headers;
-
- PERFORM SET_CONFIG('response.headers', _headers, true);
+ WHERE m.id = _media_id
+ INTO _headers;
SELECT m.content
FROM admin.media m
WHERE m.id = _media_id
INTO _data;
- IF FOUND THEN
+ IF _data IS NOT NULL THEN
+ PERFORM SET_CONFIG('response.headers', _headers, true);
RETURN(_data);
ELSE
- PERFORM _api.raise(
- _msg => 'api_not_found',
- _err => 404
- );
+ PERFORM _api.raise_not_found();
END IF;
END
$BODY$;
-GRANT EXECUTE ON FUNCTION _api.serve_media(INTEGER)
+GRANT EXECUTE ON FUNCTION _api.serve_system_media(INTEGER)
TO rest_anon, rest_user;
GRANT SELECT ON TABLE admin.media
TO rest_anon, rest_user;
diff --git a/src/db/rest/util/_api_raise_not_found.sql b/src/db/rest/util/_api_raise_not_found.sql
new file mode 100644
index 0000000..f4997a6
--- /dev/null
+++ b/src/db/rest/util/_api_raise_not_found.sql
@@ -0,0 +1,16 @@
+CREATE FUNCTION _api.raise_not_found()
+RETURNS BOOLEAN
+LANGUAGE plpgsql VOLATILE
+AS $BODY$
+BEGIN
+ PERFORM _api.raise(
+ _msg => 'api_not_found',
+ _err => 404
+ );
+
+ RETURN TRUE;
+END
+$BODY$;
+
+GRANT EXECUTE ON FUNCTION _api.raise_not_found()
+ TO rest_anon, rest_user;