Installation:
composer require dyb/api-bundle:dev-master
Add to AppKernel.php:
new Dyb\ApiBundle\DybApiBundle(),
Configuration:
Add to config.yml:
dyb_api:
showcase:
key: "your_api_key"
secret: "your_api_secret"
Routing:
Include in routing.yml:
dyb_showcase:
resource: "@DybApiBundle/Controller/Showcase/"
type: annotation
prefix: /dyb/showcase/
First Use Case:
Access /dyb/showcase/list to fetch paginated user data or /dyb/showcase/choice for a selectable dropdown list.
API Integration:
Use the bundle’s built-in DybApiClient (if exposed) to interact with DoYouBuzz endpoints. Example:
$client = $this->get('dyb.api.client'); // Hypothetical service
$users = $client->getUsers(); // Assuming such a method exists
Controller Usage:
Leverage the pre-built ShowcaseController for basic CRUD-like operations (e.g., listing/choosing users). Extend or override methods for custom logic:
// src/AppBundle/Controller/DybShowcaseController.php
use Dyb\ApiBundle\Controller\ShowcaseController;
class CustomShowcaseController extends ShowcaseController {
public function listAction() {
$users = parent::listAction(); // Reuse parent logic
// Add custom filtering/logic
return $this->render('custom_template.html.twig', ['users' => $users]);
}
}
Twig Integration: Pass data to templates for rendering:
{% for user in users %}
<option value="{{ user.id }}">{{ user.firstname }} {{ user.lastname }}</option>
{% endfor %}
Service Layer: If the bundle lacks direct service access, create a custom service to wrap API calls:
# services.yml
services:
dyb.api.user_service:
class: AppBundle\Service\DybUserService
arguments: ['@dyb.api.client'] # Hypothetical client
Deprecated Symfony 2:
No Laravel Support:
Undocumented API:
ShowcaseController.ShowcaseController or contact DoYouBuzz for undocumented features.Hardcoded Routes:
/dyb/showcase/*). Override them in routing.yml if conflicts arise:
dyb_custom_showcase:
resource: "@DybApiBundle/Controller/Showcase/"
prefix: /custom/dyb/
No Rate Limiting:
// Example: Decorate the client service
$client = new RateLimitedApiClient($originalClient, 10); // 10 requests/min
API Key/Secret Validation:
401/403, verify config.yml values and DoYouBuzz account permissions (Partner vs. Application access).cURL Dependencies:
curl enabled. Test with:
php -m | grep curl
Logging:
ShowcaseController to inspect raw API responses:
use Psr\Log\LoggerInterface;
public function listAction(LoggerInterface $logger) {
$response = $this->getApiResponse();
$logger->debug('Raw API Response:', [$response]);
// ...
}
Custom Endpoints:
// src/AppBundle/Controller/DybCustomController.php
class DybCustomController extends Controller {
public function customAction() {
$client = $this->get('dyb.api.client');
$data = $client->request('GET', '/custom/endpoint', ['param' => 'value']);
return new JsonResponse($data);
}
}
Response Transformation:
// src/AppBundle/Service/DybResponseTransformer.php
class DybResponseTransformer {
public function transform(array $data): array {
return array_map(function($user) {
$user['full_name'] = "{$user['firstname']} {$user['lastname']}";
return $user;
}, $data);
}
}
Event Listeners:
# services.yml
services:
dyb.api.event_listener:
class: AppBundle\EventListener\DybApiListener
tags:
- { name: kernel.event_listener, event: dyb.api.response, method: onResponse }
How can I help you explore Laravel packages today?