Anche se pericoloso è oltremodo comodo poter eseguire chiamate HTTP da PL/pgSQL.
Ho trovato una estensione che sembra implementare questa funzionalità molto bene.
L’estensione in oggetto si chiama pgsql-http e la si può scaricare da:
https://github.com/pramsey/pgsql-http
L’unica problematica è che si deve compilare (non abbiamo a disposizione un comodo pacchetto) per fare questo è necessario, innanzitutto, installare quanto serve per lo sviluppo di una estensione (ovviamente avremo cura di fare ciò sul server di sviluppo e non su quello di produzione :)).
i comando da usare sono:
sudo apt-get install postgresql-server-dev-9.5 libcurl4-openssl-dev gcc
per qualche motivo può essere che alcuni di questi pacchetti siano già installati, se è il vostro caso: semplicemente ignorate l’errore del comando apt-get.
Come d’uso i comandi di installazione necessitano delle autorizzazioni amministrative perciò si usa il comando “sudo”, la particolarità in questo caso è che “sudo” non basta è necessario essere connessi come utente “root”; questo lo possiamo fare, ovviamente, collegandoci con l’utente root oppure usando il comando:
sudo su
Ora la prima cosa è posizionarci nella directory /usr/local/src con il comando:
cd /usr/local/src
i sorgenti li scarichiamo direttamente dal git con:
git clone https://github.com/pramsey/pgsql-http.git
e poi dopo esserci posizionati nella directory appena creata diamo i seguenti comandi:
make make install
Al termine, dal nostro caro pgadminIII, diamo il comando SQL:
CREATE EXTENSION http;
Per provare se tutto funziona usiamo il comando:
SELECT (unnest(headers)).* from http_get('http://www.folstuff.eu')
il risultato deve essere questo (esportato su file csv da pgadminIII):
"field";"value" "Date";"Sat, 19 Mar 2016 01:56:19 GMT" "Server";"Apache/2.4.7 (Ubuntu)" "X-Powered-By";"PHP/5.5.9-1ubuntu4.5" "Set-Cookie";"PHPSESSID=cm4ttes1gacmgu2jus5gjl7dj7; path=/" "Expires";"Thu, 19 Nov 1981 08:52:00 GMT" "Cache-Control";"no-store, no-cache, must-revalidate, post-check=0, pre-check=0" "Pragma";"no-cache" "X-Pingback";"http://www.folstuff.eu/xmlrpc.php" "Vary";"Accept-Encoding" "Connection";"close" "Transfer-Encoding";"chunked" "Content-Type";"text/html; charset=UTF-8"