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); }
$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; $previous['message'] = "{$ind}/{$total} {$e['class']}: {$e['message']}";