فهرست منبع

Add prerequest hook

shalvah 3 سال پیش
والد
کامیت
25cbdc193f
4فایلهای تغییر یافته به همراه35 افزوده شده و 1 حذف شده
  1. 1 1
      config/scribe.php
  2. 14 0
      src/Extracting/Strategies/Responses/ResponseCalls.php
  3. 18 0
      src/Scribe.php
  4. 2 0
      src/Tools/Globals.php

+ 1 - 1
config/scribe.php

@@ -350,9 +350,9 @@ INTRO
         ],
         'responses' => [
             Strategies\Responses\UseTransformerTags::class,
+            Strategies\Responses\UseApiResourceTags::class,
             Strategies\Responses\UseResponseTag::class,
             Strategies\Responses\UseResponseFileTag::class,
-            Strategies\Responses\UseApiResourceTags::class,
             Strategies\Responses\ResponseCalls::class,
         ],
         'responseFields' => [

+ 14 - 0
src/Extracting/Strategies/Responses/ResponseCalls.php

@@ -18,6 +18,7 @@ use Knuckles\Scribe\Extracting\ParamHelpers;
 use Knuckles\Scribe\Extracting\Strategies\Strategy;
 use Knuckles\Scribe\Tools\ConsoleOutputUtils as c;
 use Knuckles\Scribe\Tools\ErrorHandlingUtils as e;
+use Knuckles\Scribe\Tools\Globals;
 use Knuckles\Scribe\Tools\Utils;
 
 /**
@@ -82,6 +83,10 @@ class ResponseCalls extends Strategy
 
         $request = $this->prepareRequest($endpointData->route, $rulesToApply, $urlParameters, $bodyParameters, $queryParameters, $fileParameters, $headers);
 
+        $request = $this->runPreRequestHook($request, $endpointData);
+
+        ray($request->headers);
+
         try {
             $response = $this->makeApiCall($request, $endpointData->route);
             $response = [
@@ -153,6 +158,15 @@ class ResponseCalls extends Strategy
         return $request;
     }
 
+    protected function runPreRequestHook(Request $request, ExtractedEndpointData $endpointData): Request
+    {
+        if (is_callable(Globals::$beforeResponseCall)) {
+            call_user_func_array(Globals::$beforeResponseCall, [$request, $endpointData]);
+        }
+
+        return $request;
+    }
+
     private function setLaravelConfigs(array $config)
     {
         if (empty($config)) {

+ 18 - 0
src/Scribe.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace Knuckles\Scribe;
+
+use Knuckles\Camel\Extraction\ExtractedEndpointData;
+use Knuckles\Scribe\Tools\Globals;
+use Symfony\Component\HttpFoundation\Request;
+
+class Scribe
+{
+    /**
+     * @param callable(Request, ExtractedEndpointData): mixed $callable
+     */
+    public static function beforeResponseCall(callable $callable)
+    {
+        Globals::$beforeResponseCall = $callable;
+    }
+}

+ 2 - 0
src/Tools/Globals.php

@@ -7,4 +7,6 @@ class Globals
     public const SCRIBE_VERSION = '3.10.3';
 
     public static bool $shouldBeVerbose = false;
+
+    public static $beforeResponseCall;
 }