124 lines
3.0 KiB
PHP
124 lines
3.0 KiB
PHP
<?php
|
||
|
||
namespace Qiniu\Storage;
|
||
|
||
use Qiniu\Auth;
|
||
use Qiniu\Config;
|
||
use Qiniu\Zone;
|
||
use Qiniu\Http\Client;
|
||
use Qiniu\Http\Error;
|
||
|
||
/**
|
||
* 主要涉及了内容审核接口的实现,具体的接口规格可以参考
|
||
*
|
||
* @link https://developer.qiniu.com/censor/api/5620/video-censor
|
||
*/
|
||
final class ArgusManager
|
||
{
|
||
private $auth;
|
||
private $config;
|
||
|
||
public function __construct(Auth $auth, Config $config = null)
|
||
{
|
||
$this->auth = $auth;
|
||
if ($config == null) {
|
||
$this->config = new Config();
|
||
} else {
|
||
$this->config = $config;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 视频审核
|
||
*
|
||
* @param string $body body信息
|
||
*
|
||
* @return array 成功返回NULL,失败返回对象Qiniu\Http\Error
|
||
* @link https://developer.qiniu.com/censor/api/5620/video-censor
|
||
*/
|
||
public function censorVideo($body)
|
||
{
|
||
$path = '/v3/video/censor';
|
||
|
||
return $this->arPost($path, $body);
|
||
}
|
||
|
||
|
||
/**
|
||
* 图片审核
|
||
*
|
||
* @param string $body
|
||
*
|
||
* @return array 成功返回NULL,失败返回对象Qiniu\Http\Error
|
||
* @link https://developer.qiniu.com/censor/api/5588/image-censor
|
||
*/
|
||
public function censorImage($body)
|
||
{
|
||
$path = '/v3/image/censor';
|
||
|
||
return $this->arPost($path, $body);
|
||
}
|
||
|
||
/**
|
||
* 查询视频审核结果
|
||
*
|
||
* @param string $jobid 任务ID
|
||
* @return array
|
||
* @link https://developer.qiniu.com/censor/api/5620/video-censor
|
||
*/
|
||
public function censorStatus($jobid)
|
||
{
|
||
$scheme = "http://";
|
||
|
||
if ($this->config->useHTTPS === true) {
|
||
$scheme = "https://";
|
||
}
|
||
$url = $scheme . Config::ARGUS_HOST . "/v3/jobs/video/$jobid";
|
||
$response = $this->get($url);
|
||
if (!$response->ok()) {
|
||
print("statusCode: " . $response->statusCode);
|
||
return array(null, new Error($url, $response));
|
||
}
|
||
return array($response->json(), null);
|
||
}
|
||
|
||
private function getArHost()
|
||
{
|
||
$scheme = "http://";
|
||
if ($this->config->useHTTPS === true) {
|
||
$scheme = "https://";
|
||
}
|
||
return $scheme . Config::ARGUS_HOST;
|
||
}
|
||
|
||
private function arPost($path, $body = null)
|
||
{
|
||
$url = $this->getArHost() . $path;
|
||
return $this->post($url, $body);
|
||
}
|
||
|
||
private function get($url)
|
||
{
|
||
$headers = $this->auth->authorizationV2($url, 'GET');
|
||
|
||
return Client::get($url, $headers);
|
||
}
|
||
|
||
private function post($url, $body)
|
||
{
|
||
$headers = $this->auth->authorizationV2($url, 'POST', $body, 'application/json');
|
||
$headers['Content-Type'] = 'application/json';
|
||
$ret = Client::post($url, $body, $headers);
|
||
if (!$ret->ok()) {
|
||
print("statusCode: " . $ret->statusCode);
|
||
return array(null, new Error($url, $ret));
|
||
}
|
||
$r = ($ret->body === null) ? array() : $ret->json();
|
||
if (strstr($url, "video")) {
|
||
$jobid = $r['job'];
|
||
return array($jobid, null);
|
||
}
|
||
return array($r, null);
|
||
}
|
||
}
|