webhubworks / craft-weclapp-api
A Craft CMS wrapper around webhubworks/weclapp-api-core.
Package info
github.com/webhubworks/craft-weclapp-api
Type:craft-plugin
pkg:composer/webhubworks/craft-weclapp-api
Requires
- php: ^8.3
- craftcms/cms: ^4.0 || ^5.0
- webhubworks/weclapp-api-core: 3.1.*
Requires (Dev)
- craftcms/ecs: dev-main
- craftcms/phpstan: dev-main
README
A Craft CMS wrapper around webhubworks/weclapp-api-core.
It is the Craft counterpart to webhubworks/weclapp-api-laravel: instead of a
Laravel service provider + facade, it registers a singleton Yii service that
exposes a fully configured core Client. The base URL and auth token are read
from environment variables, so no per-call configuration is needed.
Requirements
- Craft CMS 4.0+ or 5.0+
- PHP 8.3+
Installation
composer require webhubworks/craft-weclapp-api php craft plugin/install weclapp-api
Configuration
Set the two required environment variables in your .env:
WECLAPP_API_BASE_URL=https://your-tenant.weclapp.com/webapp/api/v2 WECLAPP_AUTH_TOKEN=your-auth-token # Optional - request/response logging to storage/logs/weclapp-api.log (default: true) WECLAPP_ENABLE_LOGGING=true
Note:
WECLAPP_API_BASE_URLshould include the full API path (e.g./webapp/api/v2). The adapter concatenates this base with the relative endpoint paths produced by the core client.
Usage
The plugin registers the core client behind a singleton api service:
use Webhub\WeclappApiCraft\Plugin; // Shared, configured core client $client = Plugin::getInstance()->getClient(); // equivalent to: $client = Plugin::getInstance()->api->getClient(); $count = $client->getArticleCount(); $articles = $client->getArticle();
getClient() returns the generated Webhubworks\WeclappApiCore\Client, so every
endpoint method from the core package is available.
How it works
Plugin::config()registersWeclappServiceas theapicomponent. Craft instantiates Yii components once per request, giving singleton semantics.WeclappService::getClient()readsWECLAPP_API_BASE_URLandWECLAPP_AUTH_TOKENviacraft\helpers\App::env(), then builds the core client with theCraftHttpClientPSR-18 adapter, caching the result.CraftHttpClientimplementsPsr\Http\Client\ClientInterfaceon top ofCraft::createGuzzleClient(). It prepends the base URL to each relative endpoint URI and attaches theAuthenticationTokenheader - the same contract the Laravel wrapper fulfils with Laravel's HTTP client.
License
The MIT License (MIT). Please see License File for more information.