| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-19 03:53:39 +08:00
										 |  |  | namespace BookStack\Http; | 
					
						
							| 
									
										
										
										
											2019-12-28 22:58:07 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | use BookStack\Api\ListingResponseBuilder; | 
					
						
							|  |  |  | use Illuminate\Database\Eloquent\Builder; | 
					
						
							|  |  |  | use Illuminate\Http\JsonResponse; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-22 22:56:19 +08:00
										 |  |  | abstract class ApiController extends Controller | 
					
						
							| 
									
										
										
										
											2019-12-28 22:58:07 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2020-01-12 22:45:54 +08:00
										 |  |  |     protected $rules = []; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-28 22:58:07 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Provide a paginated listing JSON response in a standard format | 
					
						
							|  |  |  |      * taking into account any pagination parameters passed by the user. | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2022-02-03 20:33:26 +08:00
										 |  |  |     protected function apiListingResponse(Builder $query, array $fields, array $modifiers = []): JsonResponse | 
					
						
							| 
									
										
										
										
											2019-12-28 22:58:07 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-02-03 20:33:26 +08:00
										 |  |  |         $listing = new ListingResponseBuilder($query, request(), $fields); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         foreach ($modifiers as $modifier) { | 
					
						
							|  |  |  |             $listing->modifyResults($modifier); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-28 22:58:07 +08:00
										 |  |  |         return $listing->toResponse(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-01-12 22:45:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Get the validation rules for this controller. | 
					
						
							| 
									
										
										
										
											2021-11-15 06:03:22 +08:00
										 |  |  |      * Defaults to a $rules property but can be a rules() method. | 
					
						
							| 
									
										
										
										
											2020-01-12 22:45:54 +08:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2022-02-04 00:52:28 +08:00
										 |  |  |     public function getValidationRules(): array | 
					
						
							| 
									
										
										
										
											2020-01-12 22:45:54 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-02-19 02:36:34 +08:00
										 |  |  |         return $this->rules(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-11-15 06:03:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-19 02:36:34 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get the validation rules for the actions in this controller. | 
					
						
							|  |  |  |      * Defaults to a $rules property but can be a rules() method. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected function rules(): array | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2020-01-12 22:45:54 +08:00
										 |  |  |         return $this->rules; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-03-08 06:24:05 +08:00
										 |  |  | } |