Example #1
0
 private function createJob()
 {
     $tokenData = self::$sapiClient->verifyToken();
     /** @var ObjectEncryptor $configEncryptor */
     $configEncryptor = self::$kernel->getContainer()->get('syrup.object_encryptor');
     return new Job($configEncryptor, ['id' => self::$sapiClient->generateId(), 'runId' => self::$sapiClient->generateId(), 'project' => ['id' => $tokenData['owner']['id'], 'name' => $tokenData['owner']['name']], 'token' => ['id' => $tokenData['id'], 'description' => $tokenData['description'], 'token' => self::$encryptor->encrypt(self::$sapiClient->getTokenString())], 'component' => SYRUP_APP_NAME, 'command' => 'run', 'process' => ['host' => 'test', 'pid' => posix_getpid()], 'createdTime' => date('c')], null, null, null);
 }
 protected function writerProxyPost($writerId, $query, $payload, $toFile = null)
 {
     if (is_array($payload)) {
         $payload = json_encode($payload);
     }
     $request = $this->getWriter()->post('/gooddata-writer/proxy', array('Content-Type' => 'application/json; charset=utf-8', 'Accept' => 'application/json', 'X-StorageApi-Token' => $this->sapiClient->getTokenString()), json_encode(array('wait' => 1, 'writerId' => $writerId, 'query' => $query, 'payload' => $payload)));
     if ($toFile != null) {
         $request->setResponseBody($toFile);
     }
     return $request->send()->json();
 }
Example #3
0
 public function create($command, array $params = [], $lockName = null)
 {
     $this->storageApiClient = $this->storageApiService->getClient();
     $tokenData = $this->storageApiService->getTokenData();
     $job = new Job($this->objectEncryptor, ['id' => $this->storageApiClient->generateId(), 'runId' => $this->storageApiClient->generateRunId($this->storageApiClient->getRunId()), 'project' => ['id' => $tokenData['owner']['id'], 'name' => $tokenData['owner']['name']], 'token' => ['id' => $tokenData['id'], 'description' => $tokenData['description'], 'token' => $this->objectEncryptor->encrypt($this->storageApiClient->getTokenString())], 'component' => $this->componentName, 'command' => $command, 'params' => $params, 'process' => ['host' => gethostname(), 'pid' => getmypid()], 'nestingLevel' => 0, 'createdTime' => date('c')], null, null, null);
     if ($lockName) {
         $job->setLockName($lockName);
     }
     $componentConfiguration = $this->getComponentConfiguration();
     if (isset($componentConfiguration['flags']) && in_array('encrypt', $componentConfiguration['flags'])) {
         $job->setEncrypted(true);
     }
     return $job;
 }
 public function ping()
 {
     $options = array('timeout' => 7200, 'headers' => array('X-StorageApi-Token' => $this->storageApi->getTokenString(), 'Accept-Encoding' => 'gzip', 'User-Agent' => $this->storageApi->getUserAgent()));
     if ($this->storageApi->getRunId()) {
         $options['headers']['X-KBC-RunId'] = $this->storageApi->getRunId();
     }
     try {
         $response = $this->client->get('storage/tokens/verify', $options);
     } catch (RequestException $e) {
         $response = $e->getResponse();
         if ($response && $response->getStatusCode() == 503) {
             return false;
         } else {
             throw $e;
         }
     }
     if ($response && $response->getStatusCode() == 200) {
         $body = ResponseDecoder::decode($response);
         return array_key_exists('token', $body);
     }
     return false;
 }
 public function testConnection()
 {
     $testing = $this->container->getParameter('testing');
     $tokenData = $this->storageApi->verifyToken();
     /** @var Encryptor $encryptor */
     $encryptor = $this->container->get('syrup.encryptor');
     /** @var ObjectEncryptor $objectEncryptor */
     $objectEncryptor = $this->container->get('syrup.object_encryptor');
     /** @var Executor $executor */
     $executor = $this->container->get('syrup.job_executor');
     $executor->setStorageApi($this->storageApi);
     $result = $executor->execute(new Job($objectEncryptor, ['id' => $this->storageApi->generateId(), 'runId' => $this->storageApi->generateId(), 'project' => ['id' => $tokenData['owner']['id'], 'name' => $tokenData['owner']['name']], 'token' => ['id' => $tokenData['id'], 'description' => $tokenData['description'], 'token' => $encryptor->encrypt($this->storageApi->getTokenString())], 'component' => $this->componentName, 'command' => 'test', 'params' => $testing['db']['mysql'], 'process' => ['host' => gethostname(), 'pid' => getmypid()], 'createdTime' => date('c')]));
     $this->assertArrayHasKey('status', $result);
     $this->assertEquals('ok', $result['status']);
 }
 public function oauthAction(Request $request)
 {
     if (!$request->request->get('account')) {
         throw new ParameterMissingException("Parameter 'account' is missing");
     }
     $session = $this->get('session');
     $googleApi = $this->getGoogleApi();
     $token = $request->request->get('token');
     try {
         $client = new StorageApi(['token' => $token, 'url' => null, 'userAgent' => 'ex-google-analytics']);
         $url = $googleApi->getAuthorizationUrl($this->container->get('router')->generate('keboola_google_analytics_oauth_callback', array(), UrlGeneratorInterface::ABSOLUTE_URL), 'https://www.googleapis.com/auth/analytics.manage.users.readonly https://www.googleapis.com/auth/analytics.readonly profile email', 'force');
         $session->set('token', $client->getTokenString());
         $session->set('account', $request->request->get('account'));
         $session->set('referrer', $request->request->get('referrer'));
         return new RedirectResponse($url);
     } catch (\Exception $e) {
         throw new ApplicationException('OAuth UI request error', $e);
     }
 }
 public function oauthAction(Request $request)
 {
     if (!$request->request->get('account') && !$request->request->get('external')) {
         throw new ParameterMissingException("Parameter 'account' or 'external' is required");
     }
     $session = $this->get('session');
     $googleApi = $this->getGoogleApi();
     try {
         $client = new StorageApi(array('token' => $request->request->get('token'), 'userAgent' => $this->componentName));
         $url = $googleApi->getAuthorizationUrl($this->container->get('router')->generate('keboola_google_drive_writer_oauth_callback', array(), UrlGeneratorInterface::ABSOLUTE_URL), 'https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://spreadsheets.google.com/feeds', 'force');
         $session->set('token', $client->getTokenString());
         $session->set('account', $request->request->get('account'));
         $session->set('referrer', $request->request->get('referrer'));
         $session->set('external', $request->request->get('external'));
         return new RedirectResponse($url);
     } catch (\Exception $e) {
         throw new SyrupComponentException(500, 'OAuth UI request error', $e);
     }
 }