Beispiel #1
0
 public function testEncodeKeysign()
 {
     $settings = array('cloud_access_key' => 'testkey', 'cloud_secret_key' => 'testsecret');
     $this->getSettingService()->set('storage', $settings);
     $auth = new ApiAuth();
     $request = Request::create('/?a=b', 'GET', array(), array(), array(), array());
     $token = $auth->encodeKeysign($request);
     $request->headers->set('X-Auth-Method', 'keysign');
     $request->headers->set('X-Auth-Token', $token);
     $auth->auth($request);
     exit;
     $decoded = $auth->decodeKeysign($token);
     var_dump($decoded);
 }
Beispiel #2
0
$app->register(new Silex\Provider\ServiceControllerServiceProvider());
$app->view(function (array $result, Request $request) use($app) {
    // 兼容气球云搜索的接口
    $documentType = $request->headers->get('X-Search-Document');
    if ($documentType) {
        $class = "Topxia\\Api\\SpecialResponse\\{$documentType}Response";
        if (!class_exists($class)) {
            throw new \RuntimeException("{$documentType}Response不存在!");
        }
        $obj = new $class();
        $result = $obj->filter($result);
    }
    return new JsonResponse($result);
});
$app->before(function (Request $request) use($app) {
    $auth = new ApiAuth(include __DIR__ . '/config/whitelist.php');
    $auth->auth($request);
});
$app->error(function (\Exception $exception, $code) use($app) {
    $error = array('code' => $code, 'message' => $exception->getMessage());
    if ($app['debug']) {
        if (!$exception instanceof FlattenException) {
            $exception = FlattenException::create($exception);
        }
        $error['previous'] = array();
        $flags = PHP_VERSION_ID >= 50400 ? ENT_QUOTES | ENT_SUBSTITUTE : ENT_QUOTES;
        $count = count($exception->getAllPrevious());
        $total = $count + 1;
        foreach ($exception->toArray() as $position => $e) {
            $previous = array();
            $ind = $count - $position + 1;