Enums és string formátum érvényesítési határértékek
A kompakt enumok a status:{draft|published} alakot használják (a pontosvessző is elválasztja a választási lehetőségeket). A sztringet a pontos, kis- és nagybetűre érzékeny tagságellenőrzés előtt megvágja. A kötelező enum elutasítja a kihagyott vagy üres értéket. A beágyazott objektumok a {name:Type} alakot használják; nem enum-deklarációk.
A total5@0.0.19 verzióban a Color elfogadja a hexadecimális #RGB, #RRGGBB és #RRGGBBAA alakot; a CSS-színneveket nem. Az Icon egy osztálynévmintát ellenőriz, nem az ikon-erőforrás meglétét. A Base64 és a Zip a framework validátorait használja: egy formátum elfogadása nem tartalomellenőrzés. Ennek a verziónak a kompakt sémaértelmezőjében a JSON és az IP nem felismert altípusok, és egyszerű sztringekre esnek vissza. A hibás JSON és az érvénytelen IP-szöveg elfogadott. Az alábbi kifejezett JSON-séma natív subtype értékeket állít be ezen ellenőrzések bekapcsolásához; nem értelmez egy JSON-sztringet objektummá. Ne használja a SafeString-et a kötött SQL-paraméterek vagy a kimenet escape-elése helyett.
var schema = NEWSCHEMA('FormatBoundaries', '*status:{draft|published},*color:Color,*blob:Base64,*zip:Zip,*icon:Icon,*document:JSON,*address:IP');
var explicit = Total.newjsonschema('ExplicitFormats', { $id: 'ExplicitFormats', type: 'object', required: ['document','address'], properties: { document: { type: 'string', subtype: 'json' }, address: { type: 'string', subtype: 'ip' } } });
exports.install = function() {
ROUTE('POST /explicit/ @json', function($) {
var result = explicit.transform($.body);
if (result.error) { $.response.status = 400; $.json({ error: 'invalid format' }); }
else $.json(result.response);
});
ROUTE('POST /formats/ @json', formats);
};
function formats($) {
var result = schema.transform($.body);
if (result.error) {
$.response.status = 400;
$.json({ error: 'invalid format' });
} else
$.json(result.response);
}