deuzu/request-collector-bundle
Installation
composer require deuzu/request-collector-bundle
Add the bundle to app/AppKernel.php (or config/bundles.php for Symfony Flex):
new Deuzu\RequestCollectorBundle\DeuzuRequestCollectorBundle(),
Configure the Collector
Edit app/config/config.yml (or config/packages/deuzu_request_collector.yaml):
deuzu_request_collector:
enabled: true
storage:
type: file # or 'database' (requires Doctrine)
path: "%kernel.logs_dir%/requests" # For file storage
email:
enabled: false # Set to true to email collected requests
to: "debug@example.com"
First Use Case
Access the collector endpoint at /_collector (or your custom route, see below). Send a test request (e.g., via curl or Postman):
curl -X POST http://your-app/_collector -d '{"test":"data"}' -H "X-Webhook: Test"
Check the configured storage (e.g., var/logs/requests/ for file storage) for the collected request.
Expose the Collector Endpoint
The bundle provides a default route (/collector). Override it in routing.yml:
deuzu_request_collector_collector:
path: /webhook-collector
methods: [POST]
Collect Requests Programmatically Trigger collection manually in controllers/services:
use Deuzu\RequestCollectorBundle\Collector\Collector;
public function someAction(Collector $collector) {
$request = $this->get('request_stack')->getCurrentRequest();
$collector->collect($request); // Manually collect a request
}
Extend with Custom Logic Tag a service to run after collection (e.g., for processing):
services:
app.request_processor:
class: AppBundle\Service\RequestProcessor
tags:
- { name: deuzu_request_collector.post_collect }
Implement the PostCollectInterface:
use Deuzu\RequestCollectorBundle\Collector\PostCollectInterface;
class RequestProcessor implements PostCollectInterface {
public function postCollect($requestData) {
// Custom logic (e.g., save to DB, trigger events)
}
}
Database Storage (Optional) Enable Doctrine storage in config:
deuzu_request_collector:
storage:
type: database
entity: AppBundle\Entity\RequestLog
Create a RequestLog entity (extend Deuzu\RequestCollectorBundle\Entity\RequestLog).
# config_prod.yml
deuzu_request_collector:
enabled: false
deuzu_request_collector:
security:
enabled: true
ip_whitelist: ["192.168.1.100"]
monolog handlers).RequestLog entity is properly mapped to your Doctrine schema.email.enabled: true, configure a valid SMTP server in framework/mailer to avoid failures./_collector route may conflict with other bundles. Customize the route path in config:
deuzu_request_collector:
route:
path: /debug/collector
enabled: true) and the route is properly configured.path (file storage) or Doctrine connection (database storage).var/log/dev.log.Deuzu\RequestCollectorBundle\Collector\StorageInterface for alternative storage (e.g., Elasticsearch).services:
deuzu_request_collector.collector:
class: AppBundle\Collector\CustomCollector
arguments: ["@deuzu_request_collector.storage"]
class CustomCollector extends \Deuzu\RequestCollectorBundle\Collector\Collector {
protected function shouldCollect(Request $request) {
return $request->headers->has('X-Collect-Me');
}
}
PostCollectInterface or overriding the collector’s collect() method.deuzu_request_collector:
email:
enabled: false
How can I help you explore Laravel packages today?