(uitgeschakelde) code om API2 ook PUT/POST van application/x-www-form-urlencoded te laten ondersteunen

svn path=/Website/trunk/; revision=33400
This commit is contained in:
Jos Groot Lipman
2017-04-04 09:59:54 +00:00
parent 3cf1989309
commit eccc6c7bed
2 changed files with 50 additions and 18 deletions

View File

@@ -43,7 +43,7 @@ api2_rest = {
else
Session.Abandon(); // Altijd, voor de zekerheid
var sql = "SELECT prs_perslid_key, prs_perslid_naam"
var sql = "SELECT prs_perslid_key, prs_perslid_naam, prs_perslid_oslogin"
+ " FROM prs_perslid"
+ " WHERE prs_perslid_verwijder IS NULL"
+ " AND prs_perslid_apikey = " + safe.quoted_sql(APIKEY);
@@ -57,7 +57,7 @@ api2_rest = {
Response.AddHeader("WWW-Authenticate", "Basic realm=\"" + S("basic_auth_realm") + "\"");
Response.End;
};
__Log("API2 User is: " + oRs("prs_perslid_naam").Value);
__Log("API2 User is: {0} ({1})".format(oRs("prs_perslid_naam").Value, oRs("prs_perslid_oslogin").Value));
/* global */ user_key = oRs("prs_perslid_key").Value;
if (typeof NO_ADDHEADER == "undefined" && Request.Servervariables("HTTP_FCLT_VERSION").Count > 0)
@@ -143,20 +143,20 @@ api2_rest = {
var wasCodePage = Session.Codepage;
Session.Codepage = 65001; // We doen *uitsluitend* utf-8
Response.Charset = 'utf-8';
var format = getQParamSafe("format", "invalid").toLowerCase();
if (format == "auto")
var inputformat = outputformat = getQParamSafe("format", "invalid").toLowerCase();
if (outputformat == "auto")
{
var accept = String(Request.ServerVariables("HTTP_ACCEPT")).split(",")[0]; // Altijd alleen eerste bekijken
switch (accept.toLowerCase())
{
case "application/xml": format = "xml"; break;
case "application/json": format = "json"; break;
case "text/html": format = "html"; break; // vanuit browser?
default: format = "json";
case "application/xml": outputformat = "xml"; break;
case "application/json": outputformat = "json"; break;
case "text/html": outputformat = "html"; break; // vanuit browser?
default: outputformat = "json";
}
}
if (format == "json")
if (outputformat == "json")
/* global */ JSON_Result = true; // Zelf doen we er niets mee maar
// shared.simple_page kijkt er naar
@@ -194,7 +194,26 @@ api2_rest = {
}
else
{
switch (format)
if (inputformat == "auto")
{
var contenttype = String(Request.ServerVariables("HTTP_CONTENT_TYPE")).split(",")[0]; // Altijd alleen eerste bekijken
switch (contenttype.toLowerCase())
{
case "application/xml":
inputformat = "xml";
break;
case "application/json":
inputformat = "json";
break;
case "application/x-www-form-urlencoded":
inputformat = "form";
break;
default:
inputformat = outputformat;
}
}
switch (inputformat)
{
case "json":
{
@@ -216,8 +235,13 @@ api2_rest = {
api2.error(500, "Error parsing input XML: Empty");
break;
}
//case "form":
//{
// jsondata = { };
// jsondata[model.recordname] = shared.form2json(model); // of api2.form2JSONdata inzetten?
//}
default:
UNKNOWN_FORMAT_TYPE;
UNKNOWN_CONTENT_TYPE;
}
if (!jsondata || !(model.record_name in jsondata || (model.multi_update && model.records_name in jsondata)))
{
@@ -229,14 +253,14 @@ api2_rest = {
var key = getQParamInt("id", -1); // Voor POST/PUT/DELETE
var isSingle = /PUT|POST|DELETE/.test(method) || (key > 0); // PUT, POST en DELETE altijd single
if (format == "doc")
if (outputformat == "doc")
{
// Dan hoeven we verder bijna niets te doen
if ("autfunction" in model)
model.autfunctionname = L("lcl_" + model.autfunction);
// TODO: velden strippen waar je niets mee te maken hebt?
}
else if (format == "api" && getQParamInt("swagger", 0) == 0)
else if (outputformat == "api" && getQParamInt("swagger", 0) == 0)
{
// TODO: Onderstaande in een of ander standaardformaat opleveren?
var result = { id: model.records_name,
@@ -270,7 +294,7 @@ api2_rest = {
});
}
}
else if (format == "api" && getQParamInt("swagger", 0) == 1)
else if (outputformat == "api" && getQParamInt("swagger", 0) == 1)
{
result = swaggermodel(model);
}
@@ -390,7 +414,7 @@ api2_rest = {
}
}
api2_rest.deliver(data, model, format, isSingle);
api2_rest.deliver(data, model, outputformat, isSingle);
},
// Data is een array met 'records'

View File

@@ -256,13 +256,21 @@ var shared = {
}
return strval;
},
form2json: function _form2json(model)
{
return shared._coll2json(model, Request.Form);
},
qs2json: function _qs2json(model)
{
return shared._coll2json(model, Request.QueryString);
},
_coll2json: function _coll2json(model, pColl) // Vergelijk ook api2.form2JSONdata die er erg op lijkt
{
var filter = {};
for (var i = 1; i <= Request.QueryString.Count; i++)
for (var i = 1; i <= pColl.Count; i++)
{
var name = Request.QueryString.key(i);
var data = Request.QueryString(i);
var name = pColl.key(i);
var data = pColl(i);
if (data.Count > 1)
{
filter[name] = [];