1+ 'use strict' ;
2+
3+ var Joi = require ( 'joi' ) ;
4+
5+ var ConfigSchema = Joi . object ( ) . keys ( {
6+ server : Joi . object ( ) . keys ( {
7+ port : Joi . number ( ) . integer ( ) . min ( 1 ) . max ( 65535 ) . required ( )
8+ } ) . required ( ) ,
9+ processing : Joi . object ( ) . keys ( {
10+ totalAttempts : Joi . number ( ) . min ( 1 ) . max ( 20 ) . default ( 2 ) ,
11+ playGreeting : Joi . boolean ( ) . default ( true ) ,
12+ playBeepBeforeRecording : Joi . boolean ( ) . default ( true )
13+ } ) . required ( ) ,
14+ asterisk : Joi . object ( ) . keys ( {
15+ sounds : Joi . object ( ) . keys ( {
16+ onErrorBeforeFinish : Joi . string ( ) ,
17+ onErrorBeforeRepeat : Joi . string ( ) ,
18+ greeting : Joi . string ( )
19+ } ) . required ( )
20+ } ) . required ( ) ,
21+ record : Joi . object ( ) . keys ( {
22+ directory : Joi . string ( ) . default ( '/tmp' ) ,
23+ type : Joi . string ( ) . valid ( 'wav' , 'gsm' ) ,
24+ duration : Joi . number ( ) . min ( 1 ) . max ( 60 )
25+ } ) . required ( ) ,
26+ recognize : Joi . object ( ) . keys ( {
27+ directory : Joi . string ( ) . default ( '/tmp' ) ,
28+ type : Joi . string ( ) . required ( ) . valid ( 'google' , 'yandex' ) ,
29+ options : Joi . object ( ) . keys ( {
30+ developer_key : Joi . string ( ) . required ( )
31+ } ) . required ( )
32+ } ) . required ( ) ,
33+ lookup : Joi . object ( ) . keys ( {
34+ type : Joi . string ( ) . required ( ) . valid ( 'file' , 'mongo' , 'mysql' ) ,
35+ options : Joi . alternatives ( )
36+ . when ( 'type' , { is : 'file' , then : Joi . object ( ) . keys ( {
37+ dataFile : Joi . string ( ) . required ( )
38+ } )
39+ } )
40+ . when ( 'type' , { is : 'mongo' , then : Joi . object ( ) . keys ( {
41+ url : Joi . string ( ) . required ( ) ,
42+ collection : Joi . string ( ) . required ( )
43+ } )
44+ } )
45+ . when ( 'type' , { is : 'mysql' , then : Joi . object ( ) . keys ( {
46+ host : Joi . string ( ) . required ( ) ,
47+ port : Joi . number ( ) . required ( ) ,
48+ username : Joi . string ( ) . required ( ) ,
49+ password : Joi . string ( ) . required ( ) ,
50+ database : Joi . string ( ) . required ( ) ,
51+ table : Joi . string ( ) . required ( )
52+ } )
53+ } )
54+ } ) . required ( ) ,
55+ logger : Joi . object ( ) . keys ( {
56+ console : Joi . object ( ) . keys ( {
57+ colorize : Joi . boolean ( ) . default ( true )
58+ } ) ,
59+ syslog : Joi . object ( ) . keys ( {
60+ host : Joi . string ( ) . required ( )
61+ } ) ,
62+ file : Joi . object ( ) . keys ( {
63+ filename : Joi . string ( ) . required ( ) ,
64+ json : Joi . boolean ( ) . default ( false )
65+ } ) ,
66+ } )
67+ } ) ;
68+
69+ module . exports = ConfigSchema ;
0 commit comments