(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:
@@ -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'
|
||||
|
||||
@@ -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] = [];
|
||||
|
||||
Reference in New Issue
Block a user