dsl / mytarget-client-bundle
Requires
- php: >=5.5
- dsl/cache-control: ~0.1
- dsl/my-target-sdk: >=1.0.1
- guzzlehttp/guzzle: ^6.2
- predis/predis: ^1.0
- symfony/framework-bundle: >=2.7.3
README
This bundle provides easy setup for MyTarget SDK client in symfony framework.
Install using composer
Since the bundle and SDK are not stable it's reasonable to use dev-master revisions. The stable version is coming soon.
composer require dsl/my-target-client-bundle:~0.4.0
Add \DSL\MyTargetClientBundle\DslMyTargetClientBundle
to your symfony AppKernel.
<?php class AppKernel extends Kernel { //... public function registerBundles() { ... $bundles = [ ... , new \DSL\MyTargetClientBundle\DslMyTargetClientBundle(), ]; ... return $bundles; } //... }
Configure Symfony bundle
In the example below 2 separate clients are configured:
dsl_my_target_client:
redis_lock_client: acme.bundle.service.predis_client #id of predis client service. Must be configured in your app to store locks.
redis_token_client: acme.bundle.service.predis_client #id of predis client service. Must be configured in your app to store tokens cache. Can be the same as previous.
lock_prefix: lock_ #keys prefix for reddis
lock_lifetime: 300 #lifetime for token lock. default value is 300
default_client: test
clients:
main:
auth:
client_id: 12 #your mytarget client id
client_secret: someclientsecret #your mytarget client secret
guzzle_client: acme.bundle.service.guzzle_client #custom guzzle client. not required
test:
auth:
client_id: 49
client_secret: someotherclientsecret
transport_service: acme.bundle.service.guzzle_client #custom http transport. not required
Usage
With the config above you can use two services:
dsl.my_target_client.service.client.test
dsl.my_target_client.service.client.main
Also, the bundle creates the alias dsl.mytarget_client.client
for a service, specified in the default_client
parameter.
In this example the alias dsl.mytarget_client.client
points to dsl.my_target_client.service.client.test
but by default the default_client
parameter is equals main
. So if you omit this parameter, alias will point to dsl.my_target_client.service.client.main
.
<?php //... $mtClient =$this->getContainer()->get('dsl.my_target_client.client'); // dsl.my_target_client.service.client.test // or $mtClient =$this->getContainer()->get('dsl.my_target_client.service.client.main'); $mtMapper =$this->getContainer()->get('dsl.my_target_client.service.mapper'); $bannerOperator = new BannerOperator($mtClient, $mtMapper); var_dump( $bannerOperator->all() ); //...
Middlewares
You can create your own middlewares and mark them with a tag <tag name="dsl.my_target_client.middleware" radius="128" client="client-name" />
.
If you specify client
attribute this middleware will be added to this client only, otherwise all clients will receive it.
By default all middlewares get the radius of PHP_INT_MAX
, you can specify any other desirable value in the range from PHP_INT_MIN
to PHP_INT_MAX
. You can think of a middleware as a spherical layer and the radius is a proximity of the middleware to the centre of the sphere, where HttpTransport
is at the centre.