diff options
author | Freya Murphy <freya@freyacat.org> | 2024-04-05 10:46:09 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2024-04-05 10:46:09 -0400 |
commit | 530bbf058781e00e588f1457b6ee589a64b74da1 (patch) | |
tree | c6cdd382a86d55538686293e51a1fc056cb59029 /src/db/rest/util | |
parent | remove var (diff) | |
download | xssbook2-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.sql | 16 |
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; |