ForgeTotal.js 5
sk

Total.js 5

Enum a string formát validácie hranice

Total.js 5 · total5@0.0.19 total5reference Spustené s Total.js 5

Kompaktné enumy používajú status:{draft|published} (možnosti oddeľuje aj bodkočiarka). Reťazec sa pred presnou kontrolou členstva so zohľadnením veľkosti písmen oreže. Povinný enum odmietne vynechanú alebo prázdnu hodnotu. Vnorené objekty používajú {name:Type}; nie sú to deklarácie enumov.

V total5@0.0.19 Color akceptuje hexadecimálne #RGB, #RRGGBB a #RRGGBBAA; neakceptuje názvy farieb CSS. Icon overuje vzor názvu triedy, nie prítomnosť zdroja ikony. Base64 a Zip používajú validátory frameworku: prijatie formátu nie je overenie obsahu. V parseri kompaktnej schémy tejto verzie JSON a IP nie sú rozpoznané podtypy a vrátia sa k obyčajným reťazcom. Poškodený JSON a neplatný text IP sa akceptujú. Explicitná schéma JSON nižšie nastavuje natívne hodnoty subtype, aby tieto kontroly zapla; neparsuje reťazec JSON na objekt. Nepoužívajte SafeString namiesto viazaných parametrov SQL alebo escapovania výstupu.

controllers/formats.js
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);
}