Configuration parameters refactor
This commit is contained in:
@@ -6,21 +6,18 @@ FUNCTION cartodb._CDB_Group_CreateGroup_API(database_name text, group_name text,
|
||||
RETURNS VOID AS
|
||||
$$
|
||||
import httplib
|
||||
import base64
|
||||
import string
|
||||
import json
|
||||
|
||||
try:
|
||||
conf = plpy.execute("SELECT cartodb.CDB_Conf_GetConf('groups_api') conf")[0]['conf']
|
||||
if conf is None:
|
||||
params = plpy.execute("select c.host, c.port, c.timeout, c.username, c.password from cartodb._CDB_Group_API_Conf() c;")[0]
|
||||
if params['host'] is None:
|
||||
return
|
||||
params = json.loads(conf)
|
||||
|
||||
client = httplib.HTTPConnection(params['host'], params['port'], False, params['timeout'])
|
||||
url = '/api/v1/databases/%s/groups' % database_name
|
||||
body = '{ "name": "%s", "database_role": "%s" }' % (group_name, group_role)
|
||||
auth = base64.encodestring('%s:%s' % (params['username'], params['password'])).replace('\n', '')
|
||||
auth = plpy.execute("SELECT cartodb._CDB_Group_API_Auth('%s', '%s') as auth" % (params['username'], params['password']))[0]['auth']
|
||||
headers = { 'Authorization': ('Basic %s' % auth), 'Content-Type': 'application/json' }
|
||||
client.request('POST', url, body, headers)
|
||||
client.request('POST', '/api/v1/databases/%s/groups' % database_name, body, headers)
|
||||
response = client.getresponse()
|
||||
assert response.status == 200
|
||||
except Exception as err:
|
||||
@@ -34,20 +31,17 @@ FUNCTION cartodb._CDB_Group_DropGroup_API(database_name text, group_name text)
|
||||
RETURNS VOID AS
|
||||
$$
|
||||
import httplib
|
||||
import base64
|
||||
import string
|
||||
import json
|
||||
|
||||
try:
|
||||
conf = plpy.execute("SELECT cartodb.CDB_Conf_GetConf('groups_api') conf")[0]['conf']
|
||||
if conf is None:
|
||||
params = plpy.execute("select c.host, c.port, c.timeout, c.username, c.password from cartodb._CDB_Group_API_Conf() c;")[0]
|
||||
if params['host'] is None:
|
||||
return
|
||||
params = json.loads(conf)
|
||||
|
||||
client = httplib.HTTPConnection(params['host'], params['port'], False, params['timeout'])
|
||||
url = '/api/v1/databases/%s/groups/%s' % (database_name, group_name)
|
||||
auth = base64.encodestring('%s:%s' % (params['username'], params['password'])).replace('\n', '')
|
||||
auth = plpy.execute("SELECT cartodb._CDB_Group_API_Auth('%s', '%s') as auth" % (params['username'], params['password']))[0]['auth']
|
||||
headers = { 'Authorization': ('Basic %s' % auth), 'Content-Type': 'application/json' }
|
||||
client.request('DELETE', url, '', headers)
|
||||
client.request('DELETE', '/api/v1/databases/%s/groups/%s' % (database_name, group_name), '', headers)
|
||||
response = client.getresponse()
|
||||
assert response.status == 200
|
||||
except Exception as err:
|
||||
@@ -55,3 +49,42 @@ $$
|
||||
raise err
|
||||
|
||||
$$ LANGUAGE 'plpythonu' VOLATILE;
|
||||
|
||||
DO LANGUAGE 'plpgsql' $$
|
||||
BEGIN
|
||||
DROP FUNCTION IF EXISTS cartodb._CDB_Group_API_Conf();
|
||||
DROP TYPE IF EXISTS _CDB_Group_API_Params;
|
||||
END
|
||||
$$;
|
||||
|
||||
CREATE TYPE _CDB_Group_API_Params AS (
|
||||
host text,
|
||||
port int,
|
||||
timeout int,
|
||||
username text,
|
||||
password text
|
||||
);
|
||||
|
||||
-- This must be explicitally extracted because "composite types are currently not supported".
|
||||
-- See http://www.postgresql.org/docs/9.3/static/plpython-database.html.
|
||||
CREATE OR REPLACE
|
||||
FUNCTION cartodb._CDB_Group_API_Conf()
|
||||
RETURNS _CDB_Group_API_Params AS
|
||||
$$
|
||||
conf = plpy.execute("SELECT cartodb.CDB_Conf_GetConf('groups_api') conf")[0]['conf']
|
||||
if conf is None:
|
||||
return None
|
||||
else:
|
||||
import json
|
||||
params = json.loads(conf)
|
||||
return { "host": params['host'], "port": params['port'], 'timeout': params['timeout'], 'username': params['username'], 'password': params['password'] }
|
||||
# return params
|
||||
$$ LANGUAGE 'plpythonu' VOLATILE;
|
||||
|
||||
CREATE OR REPLACE
|
||||
FUNCTION cartodb._CDB_Group_API_Auth(username text, password text)
|
||||
RETURNS TEXT AS
|
||||
$$
|
||||
import base64
|
||||
base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
|
||||
$$ LANGUAGE 'plpythonu' IMMUTABLE;
|
||||
|
||||
Reference in New Issue
Block a user