# Enums és string formátum érvényesítési határértékek

> Végezze el a pozitív és negatív kompakt rendszer-ellenőrzéseket enumok, színek, Base64, Zip, ikonok, JSON és IP formátumok számára.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: hu
Content-SHA256: c027bc895e6e4e2af6f829ada6434533e7d04a9b1a1aed5b0efdfd95b655c750
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

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.

```js 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);
}
```
