spatie/laravel-symfony-bundle or manual integration). The separation of concerns (Key Auth vs. OAuth) aligns with Laravel’s service container and configuration patterns.DependencyInjection, Config) into Laravel. Tools like spatie/laravel-symfony-bundle can simplify this.config/ system can mirror Symfony’s YAML/XML config via PHP arrays (e.g., config/dms_meetup_api.php).MeetupClientInterface) with bindings..env and inject into config.league/oauth2-client for token management). May need custom middleware for token refresh.rdohms/meetup-api-client) may have higher activity; bundle could lag in updates.rdohms/meetup-api-client) is not actively maintained.rdohms/meetup-api-client actively maintained? If not, how will we handle API deprecations?php-meetup/api) with better adoption?config/dms_meetup_api.php:
return [
'client' => [
'key' => env('MEETUP_API_KEY'),
// OR for OAuth:
'consumer_key' => env('MEETUP_OAUTH_KEY'),
'consumer_secret' => env('MEETUP_OAUTH_SECRET'),
],
];
AppServiceProvider:
$this->app->bind('dms.meetup.client', function ($app) {
return (new DMSMeetupApiBundle())->getClient($app['config']['dms_meetup_api']);
});
$client = $this->app->make('dms.meetup.client');
$response = $client->get('/events');
.env.league/oauth2-client for token management:
use League\OAuth2\Client\Provider\GenericProvider;
$provider = new GenericProvider([...]);
$token = $provider->getAccessToken('authorization_code', [...]);
// Pass token to bundle or extend the client.
oauth_access_tokens table).MeetupApiException mapping to Laravel’s HttpException).symfony/dependency-injection, symfony/config (mitigated via bridge).rdohms/meetup-api-client supports Laravel’s HTTP stack (e.g., Guzzle 6/7)..env.dms/meetup-api-bundle and Symfony bridge.config/dms_meetup_api.php.Meetup::events()).laravel-config-validation.composer.json and monitor for breaking changes..env management tools (e.g., laravel/env-editor) and implement credential validation hooks.Handler stack.laravel-debugbar to inspect bundle services and requests.rdohms/meetup-api-client) for issues. Consider contributing Laravel-specific fixes upstream.use Illuminate\Support\Facades\Http;
Http::timeout(30)->retry(3, 100)->get($url);
Illuminate\Support\Facades\Cache::remember):
Cache::remember('meetup_events', now()->addHours(1), function () {
return $client->get('/events');
});
cache or database forHow can I help you explore Laravel packages today?