digoal
2021-08-13
PostgreSQL , curl
https://pgxn.org/dist/pg_curl/1.0.2/
PostgreSQL curl allows most curl actions, including data transfer with URL syntax via HTTP, HTTPS, FTP, FTPS, GOPHER, TFTP, SCP, SFTP, SMB, TELNET, DICT, LDAP, LDAPS, FILE, IMAP, SMTP, POP3, RTSP and RTMP
CREATE OR REPLACE FUNCTION get(url TEXT) RETURNS TEXT LANGUAGE SQL AS $BODY$
WITH s AS (SELECT
curl_easy_reset(),
curl_easy_setopt_url(url),
curl_easy_perform(),
curl_easy_getinfo_response()
) SELECT convert_from(curl_easy_getinfo_response, 'utf-8') FROM s;
$BODY$;
CREATE OR REPLACE FUNCTION post(url TEXT, request JSON) RETURNS TEXT LANGUAGE SQL AS $BODY$
WITH s AS (SELECT
curl_easy_reset(),
curl_easy_setopt_url(url),
curl_easy_setopt_copypostfields((
WITH s AS (
SELECT (json_each_text(request)).*
) SELECT convert_to(array_to_string(array_agg(concat_ws('=',
curl_easy_escape(key),
curl_easy_escape(value)
)), '&'), 'utf-8') FROM s
)),
curl_easy_perform(),
curl_easy_getinfo_response()
) SELECT convert_from(curl_easy_getinfo_response, 'utf-8') FROM s;
$BODY$;
CREATE OR REPLACE FUNCTION post(url TEXT, request JSON) RETURNS TEXT LANGUAGE SQL AS $BODY$
WITH s AS (SELECT
curl_easy_reset(),
curl_easy_setopt_url(url),
curl_header_append('Content-Type', 'application/json; charset=utf-8'),
curl_easy_setopt_copypostfields(convert_to(request::TEXT, 'utf-8')),
curl_easy_perform(),
curl_easy_getinfo_response()
) SELECT convert_from(curl_easy_getinfo_response, 'utf-8') FROM s;
$BODY$;
CREATE OR REPLACE FUNCTION email(url TEXT, username TEXT, password TEXT, subject TEXT, "from" TEXT, "to" TEXT[], data TEXT, type TEXT) RETURNS TEXT LANGUAGE SQL AS $BODY$
WITH s AS (SELECT
curl_easy_reset(),
curl_easy_setopt_url(url),
curl_easy_setopt_username(username),
curl_easy_setopt_password(password),
curl_recipient_append("to"),
curl_header_append('Subject', subject),
curl_header_append('From', "from"),
curl_header_append('To', "to"),
curl_mime_data(data, type:=type),
curl_easy_perform(),
curl_easy_getinfo_headers()
) SELECT curl_easy_getinfo_headers FROM s;
$BODY$;
您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.