itkg/consumer

Itkg 消费者库

2.0.0 2016-08-09 11:24 UTC

README

Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight

特性

  • REST & Soap 消费者库
  • Web服务缓存
  • 日志记录
  • OAuth 管理

安装

通过 Composer 安装

如果你使用 composer,将库作为依赖项添加到你的应用的 composer.json 中

    "require": {
        "itkg/consumer": "dev-master"
    }

用法

REST WS 简单示例

$service =  new \Itkg\Consumer\Service\Service(
    $eventDispatcher,
    new Itkg\Consumer\Client\RestClient(array(
        'timeout' => 10
    )),
    array(
        'identifier' => 'my test'
    )
);

$response = $service
    ->sendRequest(\Symfony\Component\HttpFoundation\Request::create('http://URL/OF/MY/WEBSERVICE.json'))
    ->getResponse();

配置

日志

  • 创建一个新的日志记录器实例
$service =  new \Itkg\Consumer\Service\Service(
    $eventDispatcher,
    new Itkg\Consumer\Client\RestClient(array(
        'timeout' => 10
    )),
    array(
        'identifier' => 'my test',
        'logger'     => new \Monolog\Logger('my_logger', array(new \Monolog\Handler\StreamHandler('/tmp/test'))),
    )
);
  • 将日志记录器监听器添加到你的事件调度器
$eventDispatcher->addSubscriber(new \Itkg\Consumer\Listener\LoggerListener());

序列化

  • 将反序列化监听器添加到你的事件调度器(使用 JMS 序列化器构建器创建序列化器)
    $eventDispatcher->addSubscriber(
        new \Itkg\Consumer\Listener\DeserializerListener(JMS\Serializer\SerializerBuilder::create()->build())
    );
  • 定义 response_type & response_format
$service =  new \Itkg\Consumer\Service\Service(
    $eventDispatcher,
    new Itkg\Consumer\Client\RestClient(array(
        'timeout' => 10
    )),
    array(
        'identifier' => 'my test',
        'reponse_format' => 'xml,
        'response_type'  => 'My\Class
    )
);
  • 以这种方式获取反序列化内容
$object = $service->getResponse()->getDeserializedContent();

缓存

  • 将缓存监听器添加到你的事件调度器
    $eventDispatcher->addSubscriber(
        new \Itkg\Consumer\Listener\CacheListener($eventDispatcher)
    );
$service =  new \Itkg\Consumer\Service\Service(
    $eventDispatcher,
    new Itkg\Consumer\Client\RestClient(array(
        'timeout' => 10
    )),
    array(
        'identifier' => 'my test',
        'cache_adapter' => new \Itkg\Core\Cache\Adapter\Registry(),
        'cache_ttl => 10000
    )
);

  • 你可以通过定义 'cache_serializer' & 'cache_deserializer' 选项来定义序列化和反序列化方法