22
33namespace Mpociot \ApiDoc ;
44
5+ use Faker \Factory ;
56use Illuminate \Foundation \Http \FormRequest ;
67use Illuminate \Routing \Route ;
78use Illuminate \Support \Facades \App ;
@@ -38,6 +39,7 @@ public function processRoute(Route $route)
3839 'required ' => false ,
3940 'type ' => 'string ' ,
4041 'default ' => '' ,
42+ 'value ' => '' ,
4143 'description ' => []
4244 ];
4345 foreach ($ rules as $ rule ) {
@@ -128,6 +130,8 @@ protected function fancyImplode($arr, $first, $last)
128130 */
129131 protected function parseRule ($ rule , &$ attributeData )
130132 {
133+ $ faker = Factory::create ();
134+
131135 $ parsedRule = $ this ->parseStringRule ($ rule );
132136 $ parsedRule [0 ] = $ this ->normalizeRule ($ parsedRule [0 ]);
133137 list ($ rule , $ parameters ) = $ parsedRule ;
@@ -139,13 +143,16 @@ protected function parseRule($rule, &$attributeData)
139143 case 'accepted ' :
140144 $ attributeData ['required ' ] = true ;
141145 $ attributeData ['type ' ] = 'boolean ' ;
146+ $ attributeData ['value ' ] = $ faker ->url ;
142147 break ;
143148 case 'after ' :
144149 $ attributeData ['type ' ] = 'date ' ;
145150 $ attributeData ['description ' ][] = 'Must be a date after: ` ' . date (DATE_RFC850 , strtotime ($ parameters [0 ])) . '` ' ;
151+ $ attributeData ['value ' ] = date (DATE_RFC850 , strtotime ('+1 day ' ,strtotime ($ parameters [0 ])));
146152 break ;
147153 case 'alpha ' :
148154 $ attributeData ['description ' ][] = 'Only alphabetic characters allowed ' ;
155+ $ attributeData ['value ' ] = $ faker ->word ;
149156 break ;
150157 case 'alpha_dash ' :
151158 $ attributeData ['description ' ][] = 'Allowed: alpha-numeric characters, as well as dashes and underscores. ' ;
@@ -155,9 +162,11 @@ protected function parseRule($rule, &$attributeData)
155162 break ;
156163 case 'in ' :
157164 $ attributeData ['description ' ][] = $ this ->fancyImplode ($ parameters , ', ' , ' or ' );
165+ $ attributeData ['value ' ] = $ faker ->randomElement ($ parameters );
158166 break ;
159167 case 'not_in ' :
160168 $ attributeData ['description ' ][] = 'Not in: ' . $ this ->fancyImplode ($ parameters , ', ' , ' or ' );
169+ $ attributeData ['value ' ] = $ faker ->word ;
161170 break ;
162171 case 'min ' :
163172 $ attributeData ['description ' ][] = 'Minimum: ` ' . $ parameters [0 ] . '` ' ;
@@ -168,10 +177,12 @@ protected function parseRule($rule, &$attributeData)
168177 case 'between ' :
169178 $ attributeData ['type ' ] = 'numeric ' ;
170179 $ attributeData ['description ' ][] = 'Between: ` ' . $ parameters [0 ] . '` and ` ' . $ parameters [1 ] . '` ' ;
180+ $ attributeData ['value ' ] = $ faker ->numberBetween ($ parameters [0 ], $ parameters [1 ]);
171181 break ;
172182 case 'before ' :
173183 $ attributeData ['type ' ] = 'date ' ;
174184 $ attributeData ['description ' ][] = 'Must be a date preceding: ` ' . date (DATE_RFC850 , strtotime ($ parameters [0 ])) . '` ' ;
185+ $ attributeData ['value ' ] = date (DATE_RFC850 , strtotime ('-1 day ' ,strtotime ($ parameters [0 ])));
175186 break ;
176187 case 'date_format ' :
177188 $ attributeData ['type ' ] = 'date ' ;
@@ -183,17 +194,20 @@ protected function parseRule($rule, &$attributeData)
183194 case 'digits ' :
184195 $ attributeData ['type ' ] = 'numeric ' ;
185196 $ attributeData ['description ' ][] = 'Must have an exact length of ` ' . $ parameters [0 ] . '` ' ;
197+ $ attributeData ['value ' ] = $ faker ->randomNumber ($ parameters [0 ], true );
186198 break ;
187199 case 'digits_between ' :
188200 $ attributeData ['type ' ] = 'numeric ' ;
189201 $ attributeData ['description ' ][] = 'Must have a length between ` ' . $ parameters [0 ] . '` and ` ' . $ parameters [1 ] . '` ' ;
190202 break ;
191203 case 'image ' :
204+ $ attributeData ['type ' ] = 'image ' ;
192205 $ attributeData ['description ' ][] = 'Must be an image (jpeg, png, bmp, gif, or svg) ' ;
193206 break ;
194207 case 'json ' :
195208 $ attributeData ['type ' ] = 'string ' ;
196209 $ attributeData ['description ' ][] = 'Must be a valid JSON string. ' ;
210+ $ attributeData ['value ' ] = json_encode (['foo ' ,'bar ' ,'baz ' ]);
197211 break ;
198212 case 'mimetypes ' :
199213 case 'mimes ' :
@@ -225,29 +239,41 @@ protected function parseRule($rule, &$attributeData)
225239 break ;
226240 case 'timezone ' :
227241 $ attributeData ['description ' ][] = 'Must be a valid timezone identifier ' ;
242+ $ attributeData ['value ' ] = $ faker ->timezone ;
228243 break ;
229244 case 'exists ' :
230245 $ attributeData ['description ' ][] = 'Valid ' . Str::singular ($ parameters [0 ]) . ' ' . $ parameters [1 ];
231246 break ;
232247 case 'active_url ' :
233248 $ attributeData ['type ' ] = 'url ' ;
249+ $ attributeData ['value ' ] = $ faker ->url ;
234250 break ;
235251 case 'regex ' :
236252 $ attributeData ['type ' ] = 'string ' ;
237253 $ attributeData ['description ' ][] = 'Must match this regular expression: ` ' . $ parameters [0 ] . '` ' ;
238254 break ;
239255 case 'boolean ' :
256+ $ attributeData ['value ' ] = $ faker ->boolean ();
240257 case 'array ' :
258+ $ attributeData ['value ' ] = $ faker ->word ;
241259 case 'date ' :
260+ $ attributeData ['value ' ] = $ faker ->date ();
242261 case 'email ' :
243- case ' image ' :
262+ $ attributeData [ ' value ' ] = $ faker -> safeEmail ;
244263 case 'string ' :
264+ $ attributeData ['value ' ] = $ faker ->word ;
245265 case 'integer ' :
266+ $ attributeData ['value ' ] = $ faker ->randomNumber ();
246267 case 'numeric ' :
268+ $ attributeData ['value ' ] = $ faker ->randomNumber ();
247269 case 'url ' :
270+ $ attributeData ['value ' ] = $ faker ->url ;
248271 case 'ip ' :
249272 $ attributeData ['type ' ] = $ rule ;
250273 break ;
274+ default :
275+ $ attributeData ['value ' ] = $ faker ->word ;
276+ break ;
251277 }
252278 }
253279
0 commit comments