Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Request Manager Bundle Laravel Package

devl0pr/request-manager-bundle

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation

    composer require devl0pr/request-manager-bundle
    

    Add to config/bundles.php:

    Devl0pr\RequestManagerBundle\RequestManagerBundle::class => ['all' => true],
    
  2. First Use Case: Logging Requests Inject RequestManager into a controller/service:

    use Devl0pr\RequestManagerBundle\Request\RequestManager;
    
    public function __construct(private RequestManager $requestManager) {}
    
    public function index(Request $request) {
        $this->requestManager->logRequest($request); // Logs full request data
        return new Response('Request logged!');
    }
    
  3. Where to Look First

    • RequestManager: src/Request/README.md (for HTTP request handling).
    • SmartProblem: src/Problem/README.md (for structured error responses).
    • Configuration: config/packages/devl0pr_request_manager.yaml (if auto-generated).

Implementation Patterns

Core Workflows

  1. Request Logging & Debugging

    • Log raw requests (headers, body, metadata) for debugging:
      $this->requestManager->logRequest($request, 'user_action');
      
    • Filter sensitive data (e.g., passwords) via config:
      devl0pr_request_manager:
          request_logging:
              blacklist: ['password', 'api_key']
      
  2. Structured Error Responses

    • Replace generic JsonResponse with SmartProblem:
      use Devl0pr\RequestManagerBundle\Problem\SmartProblem;
      
      return new SmartProblem(
          'Invalid input',
          SmartProblem::HTTP_UNPROCESSABLE_ENTITY,
          ['field' => 'email', 'error' => 'Invalid format']
      );
      
    • Customize error templates in templates/problem/error.html.twig.
  3. Middleware Integration

    • Attach RequestManager to middleware for global logging:
      public function handle(Request $request, Closure $next) {
          $this->requestManager->logRequest($request, 'middleware');
          return $next($request);
      }
      
  4. API Versioning

    • Tag requests with version headers:
      $this->requestManager->setRequestVersion($request, 'v2');
      

Integration Tips

  • Symfony Events: Listen to kernel.request to log all incoming requests:
    $eventDispatcher->addListener(KernelEvents::REQUEST, function (RequestEvent $event) {
        $this->requestManager->logRequest($event->getRequest());
    });
    
  • Monolog Bridge: Pipe logs to Monolog handlers:
    devl0pr_request_manager:
        request_logging:
            handler: monolog.handler.main
    
  • Testing: Mock RequestManager in tests:
    $this->requestManager->shouldReceive('logRequest')->once();
    

Gotchas and Tips

Pitfalls

  1. Performance Overhead

    • Logging every request can slow down high-traffic APIs. Use selectively:
      devl0pr_request_manager:
          request_logging:
              enabled: '%kernel.debug%' # Only in dev
      
    • Exclude specific routes:
      devl0pr_request_manager:
          request_logging:
              excluded_paths: ['/health', '/public/*']
      
  2. Sensitive Data Leaks

    • Blacklist is not enough: Always sanitize logs in production. Use whitelist for critical data:
      devl0pr_request_manager:
          request_logging:
              whitelist: ['user_id', 'session_token']
      
  3. SmartProblem Serialization

    • Custom error objects must implement JsonSerializable or Arrayable. Example:
      class CustomProblem implements JsonSerializable {
          public function jsonSerialize() {
              return ['code' => 422, 'message' => 'Custom error'];
          }
      }
      
  4. Configuration Conflicts

    • If SmartProblem templates override fails, clear cache:
      php bin/console cache:clear
      
    • Ensure Twig is properly configured in config/packages/twig.yaml.

Debugging Tips

  • Log Location: Request logs default to var/log/request_manager.log. Change via:
    devl0pr_request_manager:
        request_logging:
            log_file: '%kernel.logs_dir%/custom_requests.log'
    
  • Verbose Logging: Enable debug mode for detailed logs:
    devl0pr_request_manager:
        request_logging:
            debug: true
    
  • Check for Deprecations: The package is last updated in 2022. Test for PHP 8.1+ compatibility:
    composer require --dev phpunit/phpunit ^9.5
    vendor/bin/phpunit --testdoxhtml
    

Extension Points

  1. Custom Log Handlers

    • Implement Devl0pr\RequestManagerBundle\Request\LoggerInterface:
      class DatabaseLogger implements LoggerInterface {
          public function log(Request $request, string $context = null) {
              // Save to DB
          }
      }
      
    • Register in config:
      devl0pr_request_manager:
          request_logging:
              logger: App\Service\DatabaseLogger
      
  2. Dynamic Error Templates

    • Override SmartProblem templates in templates/devl0pr_request_manager/problem/.
    • Example: error.json.twig for custom JSON structures.
  3. Request Transformation

    • Extend RequestManager to modify requests before logging:
      $this->requestManager->extend(function (Request $request) {
          $request->headers->set('X-Processed', 'true');
      });
      
  4. API Rate Limiting

    • Combine with SmartProblem for rate-limit responses:
      return new SmartProblem(
          'Too Many Requests',
          SmartProblem::HTTP_TOO_MANY_REQUESTS,
          ['retry_after' => 60]
      );
      

---
```markdown
**Note**: Due to the package's low activity (last release in 2022), validate compatibility with your Laravel/Symfony version (e.g., test with PHP 8.1+ and Symfony 6.x). Consider forking if critical features are missing.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
comsave/common
alecsammon/php-raml-parser
chrome-php/wrench
lendable/composer-license-checker
typhoon/reflection
mesilov/moneyphp-percentage
mike42/gfx-php
bookdown/themes
aura/view
aura/html
aura/cli
povils/phpmnd
nayjest/manipulator
omnipay/tests
psr-mock/http-message-implementation
psr-mock/http-factory-implementation
psr-mock/http-client-implementation
voku/email-check
voku/urlify
rtheunissen/guzzle-log-middleware