Author: David Grudl
 public function authenticate(array $credentials)
 {
     $mcrypt = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
     $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($mcrypt), MCRYPT_DEV_RANDOM);
     mcrypt_generic_init($mcrypt, $this->cryptPassword, $iv);
     $url = $this->getUrl($credentials[self::USERNAME], $credentials[self::PASSWORD], $mcrypt, $iv);
     try {
         $res = $this->httpClient->get($url)->send();
     } catch (\Guzzle\Http\Exception\ClientErrorResponseException $e) {
         if ($e->getResponse()->getStatusCode() === 403) {
             throw new \Nette\Security\AuthenticationException("User '{$credentials[self::USERNAME]}' not found.", self::INVALID_CREDENTIAL);
         } elseif ($e->getResponse()->getStatusCode() === 404) {
             throw new \Nette\Security\AuthenticationException("Invalid password.", self::IDENTITY_NOT_FOUND);
         } else {
             throw $e;
         }
     }
     $responseBody = trim(mdecrypt_generic($mcrypt, $res->getBody(TRUE)));
     $apiData = Json::decode($responseBody);
     $user = $this->db->table('users')->where('id = ?', $apiData->id)->fetch();
     $registered = new \DateTimeImmutable($apiData->registered->date, new \DateTimeZone($apiData->registered->timezone));
     $userData = array('username' => $credentials[self::USERNAME], 'password' => $this->calculateAddonsPortalPasswordHash($credentials[self::PASSWORD]), 'email' => $apiData->email, 'realname' => $apiData->realname, 'url' => $apiData->url, 'signature' => $apiData->signature, 'language' => $apiData->language, 'num_posts' => $apiData->num_posts, 'apiToken' => $apiData->apiToken, 'registered' => $registered->getTimestamp());
     if (!$user) {
         $userData['id'] = $apiData->id;
         $userData['group_id'] = 4;
         $this->db->table('users')->insert($userData);
         $user = $this->db->table('users')->where('username = ?', $credentials[self::USERNAME])->fetch();
     } else {
         $user->update($userData);
     }
     return $this->createIdentity($user);
 }
 /**
  * Funkce pro naparsování odpovědi získané od scoreru
  * @param array|string $scorerResponseData
  */
 private function parseResultResponse($scorerResponseData)
 {
     if (is_string($scorerResponseData)) {
         $scorerResponseData = Json::decode($scorerResponseData);
     }
     #region score and rule
     if (!empty($scorerResponseData['score'])) {
         foreach ($scorerResponseData['score'] as $i => $rowResult) {
             if ($rowResult == null) {
                 $this->classificationResults[] = null;
                 $this->rules[] = null;
                 continue;
             }
             if ($this->classificationAttribute == "") {
                 foreach ($rowResult as $key => $value) {
                     $this->classificationAttribute = $key;
                     break;
                 }
             }
             $this->classificationResults[] = @$rowResult[$this->classificationAttribute];
             if (!empty($scorerResponseData['rule'][$i]) && !empty($scorerResponseData['rule'][$i]['id'])) {
                 $this->rules[] = $scorerResponseData['rule'][$i]['id'];
             } else {
                 $this->rules[] = null;
             }
         }
     }
     #endregion score and rule
     #region confusionMatrix
     $this->confusionMatrix = new ScoringConfusionMatrix($scorerResponseData['confusionMatrix']['labels'], $scorerResponseData['confusionMatrix']['matrix']);
     #endregion confusionMatrix
 }
Exemplo n.º 3
0
 public function actionCreateOrder()
 {
     $post = $this->getHttpRequest()->getPost();
     $data = Json::decode($post['data'], 1);
     $this->orderManager->createOrder($data['language'], $data['products'], $data['customer']);
     $this->terminate();
 }
Exemplo n.º 4
0
 /**
  * @return string
  */
 public function getPanel()
 {
     if (!$this->queries) {
         return NULL;
     }
     ob_start();
     $esc = callback('Nette\\Templating\\Helpers::escapeHtml');
     $click = class_exists('\\Tracy\\Dumper') ? function ($o, $c = FALSE, $d = 4) {
         return \Tracy\Dumper::toHtml($o, array('collapse' => $c, 'depth' => $d));
     } : callback('\\Tracy\\Helpers::clickableDump');
     $totalTime = $this->totalTime ? sprintf('%0.3f', $this->totalTime * 1000) . ' ms' : 'none';
     $extractData = function ($object) {
         if ($object instanceof Elastica\Request) {
             $data = $object->getData();
         } elseif ($object instanceof Elastica\Response) {
             $data = $object->getData();
         } else {
             return array();
         }
         try {
             return !is_array($data) ? Json::decode($data, Json::FORCE_ARRAY) : $data;
         } catch (Nette\Utils\JsonException $e) {
             try {
                 return array_map(function ($row) {
                     return Json::decode($row, Json::FORCE_ARRAY);
                 }, explode("\n", trim($data)));
             } catch (Nette\Utils\JsonException $e) {
                 return $data;
             }
         }
     };
     $processedQueries = array();
     $allQueries = $this->queries;
     foreach ($allQueries as $authority => $requests) {
         /** @var Elastica\Request[] $item */
         foreach ($requests as $i => $item) {
             $processedQueries[$authority][$i] = $item;
             if (isset($item[3])) {
                 continue;
                 // exception, do not re-execute
             }
             if (stripos($item[0]->getPath(), '_search') === FALSE || $item[0]->getMethod() !== 'GET') {
                 continue;
                 // explain only search queries
             }
             if (!is_array($data = $extractData($item[0]))) {
                 continue;
             }
             try {
                 $response = $this->client->request($item[0]->getPath(), $item[0]->getMethod(), $item[0]->getData(), array('explain' => 1) + $item[0]->getQuery());
                 // replace the search response with the explained response
                 $processedQueries[$authority][$i][1] = $response;
             } catch (\Exception $e) {
                 // ignore
             }
         }
     }
     require __DIR__ . '/panel.phtml';
     return ob_get_clean();
 }
Exemplo n.º 5
0
 /**
  * @param Request $request
  * @return Notification
  */
 public static function createFromRequest(Request $request)
 {
     $notification = new Notification();
     $parsed = Json::decode($request->getRawBody());
     $notification->setLive($parsed->live === 'true');
     $items = array();
     foreach ($parsed->notificationItems as $rawItem) {
         $item = new NotificationRequestItem($notification);
         $item->setAdditionalData(self::getNotificationRequestItemValue($rawItem, 'additionalData'));
         $item->setAmountValue(self::getNotificationRequestItemValue($rawItem, 'amount.value'));
         $item->setAmountCurrency(self::getNotificationRequestItemValue($rawItem, 'amount.currency'));
         $item->setPspReference(self::getNotificationRequestItemValue($rawItem, 'pspReference'));
         $item->setEventCode(self::getNotificationRequestItemValue($rawItem, 'eventCode'));
         $date = new DateTime(self::getNotificationRequestItemValue($rawItem, 'eventDate'));
         $item->setEventDate($date);
         $item->setMerchantAccountCode(self::getNotificationRequestItemValue($rawItem, 'merchantAccountCode'));
         $item->setOperations(self::getNotificationRequestItemValue($rawItem, 'operations'));
         $item->setMerchantReference(self::getNotificationRequestItemValue($rawItem, 'merchantReference'));
         $item->setOriginalReference(self::getNotificationRequestItemValue($rawItem, 'originalReference'));
         $item->setPaymentMethod(self::getNotificationRequestItemValue($rawItem, 'paymentMethod'));
         $item->setReason(self::getNotificationRequestItemValue($rawItem, 'reason'));
         $item->setSuccess(self::getNotificationRequestItemValue($rawItem, 'success') === 'true');
         $items[] = $item;
     }
     $notification->setNotificationItems($items);
     return $notification;
 }
Exemplo n.º 6
0
 /**
  * Get plugins
  *
  * @param array $pluginsDirs Plugins directories
  *
  * @return array
  */
 private function getPlugins(array $pluginsDirs)
 {
     $plugins = array();
     foreach (Finder::findFiles("plugin.json")->from($pluginsDirs) as $plugin) {
         $config = Json::decode(file_get_contents($plugin->getRealPath()), 1);
         if (!isset($config["class"]) || !class_exists($config["class"])) {
             continue;
         }
         // Get types
         foreach (class_implements($config["class"]) as $interface) {
             if (isset($this->pluginTypes[$interface])) {
                 $config["types"][$this->pluginTypes[$interface]] = true;
             }
         }
         // Skip if unknown plugin type
         if (empty($config["types"])) {
             continue;
         }
         // Get plugin dir path
         $config["path"] = dirname($plugin->getPathName());
         // Get unique plugin name from class
         $config["name"] = strtolower(stripslashes($config["class"]));
         $plugins[$config["name"]] = $config;
     }
     return $plugins;
 }
Exemplo n.º 7
0
 protected function process()
 {
     $v = $this->getValues();
     /** @var Rme\Subject $subject */
     $subject = $this->presenter->subject;
     $subject->title = $v->title;
     $subject->description = $v->description;
     /** @var self|EditorSelector[] $this */
     if ($this['editors']->isEditable()) {
         $subject->editors = $v->editors;
     }
     $schemas = Json::decode($v['positions']);
     foreach ($subject->schemas as $schema) {
         $schema->position = NULL;
         $schema->subject = NULL;
     }
     $position = 0;
     foreach ($schemas as $schemaId) {
         /** @var Rme\Schema $schema */
         $schema = $this->orm->schemas->getById($schemaId);
         $schema->position = $position;
         $schema->subject = $subject;
         $position++;
     }
     $this->orm->flush();
     $this->presenter->flashSuccess('editor.edited.schema');
     $this->presenter->purgeCacheTag('header');
     $this->presenter->redirect('this');
 }
Exemplo n.º 8
0
 public function loadConfiguration()
 {
     $builder = $this->getContainerBuilder();
     $config = $this->getConfig($this->defaults);
     $builder->addDefinition($this->prefix('helperSet'))->setClass('Symfony\\Component\\Console\\Helper\\HelperSet', array(array(new Nette\DI\Statement('Symfony\\Component\\Console\\Helper\\DialogHelper'), new Nette\DI\Statement('Symfony\\Component\\Console\\Helper\\FormatterHelper'), new Nette\DI\Statement('Symfony\\Component\\Console\\Helper\\ProgressHelper'), new Nette\DI\Statement('Kdyby\\Console\\Helpers\\PresenterHelper'))))->setInject(FALSE);
     $builder->addDefinition($this->prefix('application'))->setClass('Kdyby\\Console\\Application', array($config['name'], $config['version']))->addSetup('setHelperSet', array($this->prefix('@helperSet')))->setInject(FALSE);
     $builder->addDefinition($this->prefix('router'))->setClass('Kdyby\\Console\\CliRouter')->setAutowired(FALSE)->setInject(FALSE);
     $builder->getDefinition('router')->addSetup('Kdyby\\Console\\CliRouter::prependTo($service, ?)', array($this->prefix('@router')));
     $builder->getDefinition('nette.presenterFactory')->addSetup('if (method_exists($service, ?)) { $service->setMapping(array(? => ?)); } ' . 'elseif (property_exists($service, ?)) { $service->mapping[?] = ?; }', array('setMapping', 'Kdyby', 'KdybyModule\\*\\*Presenter', 'mapping', 'Kdyby', 'KdybyModule\\*\\*Presenter'));
     if (!empty($config['url'])) {
         if (!preg_match('~^https?://[^/]+\\.[a-z]+(/.*)?$~', $config['url'])) {
             throw new Nette\Utils\AssertionException("The url '{$config['url']}' is not valid, please use this format: 'http://domain.tld/path'.");
         }
         $builder->getDefinition('nette.httpRequestFactory')->setClass('Kdyby\\Console\\HttpRequestFactory')->addSetup('setFakeRequestUrl', array($config['url']));
     }
     $builder->addDefinition($this->prefix('dicHelper'))->setClass('Kdyby\\Console\\ContainerHelper')->addTag(self::HELPER_TAG, 'dic');
     Nette\Utils\Validators::assert($config, 'array');
     foreach ($config['commands'] as $command) {
         $def = $builder->addDefinition($this->prefix('command.' . md5(Nette\Utils\Json::encode($command))));
         list($def->factory) = Nette\DI\Compiler::filterArguments(array(is_string($command) ? new Nette\DI\Statement($command) : $command));
         if (class_exists($def->factory->entity)) {
             $def->class = $def->factory->entity;
         }
         $def->setAutowired(FALSE);
         $def->setInject(FALSE);
         $def->addTag(self::COMMAND_TAG);
     }
 }
Exemplo n.º 9
0
 /**
  * @secured
  * @param $usersID
  */
 public function handleDelete($usersID)
 {
     if (is_string($usersID)) {
         try {
             $usersID = (array) Json::decode($usersID);
             $usersID = array_values($usersID);
         } catch (JsonException $e) {
             $this['notification']->addError($e->getMessage());
             if ($this->isAjax()) {
                 $this['notification']->redrawControl('error');
             }
         }
     }
     $result = $this->userRepository->deactivate($usersID);
     if ($result === TRUE) {
         $this['notification']->addSuccess("Úspěšně deaktivováno...");
     } else {
         if (strpos("Integrity constraint violation", $result) != -1) {
             $this['notification']->addError("Uživatele se nepovedlo deaktivovat.");
         } else {
             $this['notification']->addError($result);
         }
     }
     if ($this->isAjax()) {
         $this['notification']->redrawControl('error');
         $this['notification']->redrawControl('success');
         $this['grid']->redrawControl();
     }
 }
Exemplo n.º 10
0
 /**
  * {inheritDoc}
  */
 public function send(Nette\Http\IRequest $httpRequest, Nette\Http\IResponse $httpResponse)
 {
     $httpResponse->setContentType($this->getContentType(), 'utf-8');
     $httpResponse->setExpiration(FALSE);
     $httpResponse->setCode($this->code);
     echo Nette\Utils\Json::encode($this->getPayload(), Nette\Utils\Json::PRETTY);
 }
 /**
  * Funkce pro odeslání JSON odpovědi
  * @param array|object|string $data
  */
 protected function sendJsonResponse($data, $code = IResponse::S200_OK)
 {
     $httpResponse = $this->getHttpResponse();
     $httpResponse->setContentType('application/json', 'UTF-8');
     $httpResponse->setCode($code);
     $this->sendResponse(new TextResponse(is_string($data) ? $data : Json::encode($data)));
 }
 /**
  * funkce obstaravajici prihlaseni uzivatele
  */
 private function login()
 {
     $this->database = $this->context->getService("database.default.context");
     $data = Nette\Utils\Json::decode($this->request->getParameters()["data"]);
     $authenticator = new LoginAuthenticator($this->database);
     $user = $this->getUser();
     $user->setAuthenticator($authenticator);
     try {
         $user->login($data->username, $data->password);
     } catch (Nette\Security\AuthenticationException $e) {
         $error["err"] = true;
         $error["message"] = $e->getMessage();
         return $error;
     }
     $userIdent = (array) $user->getIdentity()->getData();
     $tokenId = base64_encode(mcrypt_create_iv(32));
     $issuedAt = time();
     $notBefore = $issuedAt;
     $expire = $notBefore + 60 * 60;
     $serverName = "lolnotepad";
     $token = ['iat' => $issuedAt, 'jti' => $tokenId, 'iss' => $serverName, 'nbf' => $notBefore, 'exp' => $expire, 'data' => $userIdent];
     $key = base64_decode(KEY);
     $jwt = JWT::encode($token, $key, 'HS256');
     return $jwt;
 }
Exemplo n.º 13
0
 /**
  * @param string $method
  * @param string $endpoint
  * @param array $parameters
  * @return mixed
  * @throws MailChimpException
  */
 public function call($method = 'GET', $endpoint = '', array $parameters = [])
 {
     $uri = $this->config['apiUrl'] . (strlen($endpoint) && $endpoint[0] == '/' ? substr($endpoint, 1) : $endpoint);
     $headers = ['Authorization' => 'apikey ' . $this->config['apiKey']];
     try {
         $body = $parameters ? Json::encode($parameters) : null;
     } catch (JsonException $e) {
         throw new MailChimpException('MailChimp request - invalid json', 667, $e);
     }
     $client = new Client();
     $request = new Request($method, $uri, $headers, $body);
     $resource = new Resource($request);
     try {
         /** @var \GuzzleHttp\Psr7\Response $response */
         $response = $client->send($request);
         $resource->setSuccessResponse($response);
     } catch (GuzzleException $e) {
         $resource->setErrorResponse($e);
     }
     $this->onResponse($resource);
     if ($resource->getException()) {
         throw new MailChimpException('MailChimp response - error', 666, $resource->getException());
     } else {
         return $resource->getResult();
     }
 }
Exemplo n.º 14
0
 public function create()
 {
     $form = new Form();
     $form->addText('workStart', 'Začátek', 3, 5)->setRequired('Vyplňte pole "Začátek prac. doby".')->setDefaultValue($this->defaultItemTime['workStart'])->setHtmlId('workStart')->setAttribute('class', 'input-time')->addRule(Form::PATTERN, 'Do pole "Začátek prac. doby" lze zadat pouze
                  čas v 24 hodinovém formátu po půlhodinách.', '([01]?[0-9]|2[0-3]):(0|3)0');
     $form->addText('workEnd', 'Konec', 3, 5)->setRequired('Vyplňte pole "Konec prac. doby".')->setDefaultValue($this->defaultItemTime['workEnd'])->setHtmlId('workEnd')->setAttribute('class', 'input-time')->addRule(Form::PATTERN, 'Do pole "Konec prac. doby" lze zadat pouze
                  čas v 24 hodinovém formátu po půlhodinách.', '([01]?[0-9]|2[0-3]):(0|3)0');
     $form->addText('lunch', 'Oběd', 3, 5)->setRequired('Vyplňte pole "Oběd".')->setDefaultValue($this->defaultItemTime['lunch'])->setHtmlId('lunch')->setAttribute('class', 'input-time')->addRule(Form::PATTERN, 'Do pole "Oběd" lze zadat pouze
                  čas v ve formátu s čárkou. (např. 1 nebo 1,5)', '^(0|[1-9]|1[0-9]|2[0-3])(,(0|5))?$');
     $form->addText('otherHours', 'Ostatní hod.')->setDefaultValue($this->defaultItemTime['otherHours'])->setHtmlId('otherHours')->setAttribute('class', 'input-time')->addCondition(Form::FILLED)->addRule(Form::PATTERN, 'Do pole "Ostaní hodiny" lze zadat pouze
                  čas ve formátu s čárkou.(např. 6 nebo 6,5)', '^(0|[1-9]|1[0-9]|2[0-3])(,(0|5))?$');
     $form->addText('locality', 'Místo pracoviště', 28, 40)->setRequired('Vyplňte pole "Místo pracoviště".')->setHtmlId('locality')->getControlPrototype()->class = 'item-text-input';
     $form->addText('description', 'Popis práce', 28, 30)->getControlPrototype()->class = 'item-text-input';
     $form->addText('descOtherHours', 'Komentář k ostat. hod. (např. svátek)', 28, 30)->addConditionOn($form['otherHours'], Form::FILLED)->addCondition(Form::FILLED)->addRule(function ($item, $arg) {
         return \InvoiceTime::processTime($arg) == '00:00:00' ? false : true;
     }, self::OTHER_HOURS_ZERO_TIME_ERROR_MSG, $form['otherHours']);
     $form['descOtherHours']->getControlPrototype()->class = 'item-text-input';
     // time control buttons
     $form->addButton('workStartAdd', '+')->setAttribute('class', self::BTN_TIME_ADD_CLASS)->setAttribute('data-time', Json::encode(['inputID' => $form['workStart']->control->attrs['id'], 'slider' => 'slider_range', 'pos' => 0, 'val' => -30]));
     $form->addButton('workStartSub', '-')->setAttribute('class', self::BTN_TIME_SUB_CLASS)->setAttribute('data-time', Json::encode(['inputID' => $form['workStart']->control->attrs['id'], 'slider' => 'slider_range', 'pos' => 0, 'val' => 30]));
     $form->addButton('workEndAdd', '+')->setAttribute('class', self::BTN_TIME_ADD_CLASS)->setAttribute('data-time', Json::encode(['inputID' => $form['workEnd']->control->attrs['id'], 'slider' => 'slider_range', 'pos' => 1, 'val' => 30]));
     $form->addButton('workEndSub', '-')->setAttribute('class', self::BTN_TIME_SUB_CLASS)->setAttribute('data-time', Json::encode(['inputID' => $form['workEnd']->control->attrs['id'], 'slider' => 'slider_range', 'pos' => 1, 'val' => -30]));
     $form->addButton('lunchAdd', '+')->setAttribute('class', self::BTN_TIME_ADD_CLASS)->setAttribute('data-time', Json::encode(['inputID' => $form['lunch']->control->attrs['id'], 'slider' => 'slider_lunch', 'val' => -30]));
     $form->addButton('lunchSub', '-')->setAttribute('class', self::BTN_TIME_SUB_CLASS)->setAttribute('data-time', Json::encode(['inputID' => $form['lunch']->control->attrs['id'], 'slider' => 'slider_lunch', 'val' => 30]));
     $form->addButton('otherHoursAdd', '+')->setAttribute('class', self::BTN_TIME_ADD_CLASS)->setAttribute('data-time', Json::encode(['inputID' => $form['otherHours']->control->attrs['id'], 'slider' => 'slider_time_other', 'val' => 0]));
     $form->addButton('otherHoursSub', '-')->setAttribute('class', self::BTN_TIME_SUB_CLASS)->setAttribute('data-time', Json::encode(['inputID' => $form['otherHours']->control->attrs['id'], 'slider' => 'slider_time_other', 'val' => 0]));
     $form->addSubmit('save', 'Uložit řádek');
     $form->getElementPrototype()->id = 'update-form';
     return $form;
 }
Exemplo n.º 15
0
 public function send(RequestInterface $request)
 {
     try {
         return parent::send($request);
     } catch (\GuzzleHttp\Exception\ServerException $e) {
         $response = $e->getResponse();
         $body = $response->getBody()->getContents();
         $message = $e->getMessage();
         try {
             $data = Json::decode($body);
             $message = implode(', ', $data->errors);
         } catch (JsonException $e) {
             //ignore
         }
         $ex = new ServerException($message, $e->getCode(), $e);
         $ex->setBody($body);
         throw $ex;
     } catch (\GuzzleHttp\Exception\ClientException $e) {
         $response = $e->getResponse();
         $body = $response->getBody()->getContents();
         $message = $e->getMessage();
         try {
             $data = Json::decode($body);
             $message = implode(', ', $data->errors);
         } catch (JsonException $e) {
             //ignore
         }
         $ex = new ClientException($message, $e->getCode(), $e);
         $ex->setBody($body);
         throw $ex;
     }
 }
Exemplo n.º 16
0
 private function request($req, $args = [])
 {
     $args = $args + ['api_key' => $this->apiKey, 'api_username' => $this->apiUsername];
     $url = self::DOMAIN . "{$req}?" . http_build_query($args);
     $raw = file_get_contents($url);
     return Json::decode($raw, Json::FORCE_ARRAY);
 }
 private function updateAddon(ActiveRow $addon)
 {
     $this->writeln('Updating: ' . $addon->name);
     $github = $this->normalizeGithubUrl($addon->repository);
     if ($github) {
         $guzzle = new \Guzzle\Http\Client();
         try {
             $guzzle->get($github)->send();
             $this->db->table('addons_resources')->insert(array('addonId' => $addon->id, 'type' => 'github', 'resource' => $github));
         } catch (\Guzzle\Http\Exception\RequestException $e) {
             $this->writeln((string) $e);
         }
     }
     if ($addon->type === 'composer') {
         $version = $addon->related('versions')->order('id', 'DESC')->fetch();
         $composerData = Json::decode($version->composerJson);
         $packagist = $this->generatePackagistUrl($composerData->name);
         $guzzle = new \Guzzle\Http\Client();
         try {
             $guzzle->get($packagist . '.json')->send();
             $this->db->table('addons_resources')->insert(array('addonId' => $addon->id, 'type' => 'packagist', 'resource' => $packagist));
         } catch (\Guzzle\Http\Exception\RequestException $e) {
             $this->writeln((string) $e);
         }
     }
     if ($addon->demo) {
         $guzzle = new \Guzzle\Http\Client();
         try {
             $guzzle->get($addon->demo)->send();
             $this->db->table('addons_resources')->insert(array('addonId' => $addon->id, 'type' => 'demo', 'resource' => $addon->demo));
         } catch (\Guzzle\Http\Exception\RequestException $e) {
             $this->writeln((string) $e);
         }
     }
 }
Exemplo n.º 18
0
 /**
  * @param string $method
  * @param string $endpoint
  * @param array $data
  *
  * @return \Kdyby\Curl\Response|NULL
  */
 private function call($method, $endpoint, $data = [])
 {
     $request = $this->createRequest($endpoint);
     $data = Json::encode($data);
     try {
         if ($method === Request::GET) {
             $response = $request->get($data);
         } else {
             $request->post = $data;
             $request->setMethod($method);
             $response = $request->send();
         }
     } catch (CurlException $e) {
         if ($e instanceof BadStatusException) {
             $response = $e->getResponse();
             if ($response->getCode() !== 404) {
                 Debugger::log($e);
                 return NULL;
             }
         } else {
             throw $e;
         }
     }
     return $response;
 }
 public function onUpload(Form $form)
 {
     /** @var UploadControl[] $form */
     /** @var FileUpload $json */
     /** @var FileUpload $audio */
     $json = $form['json']->getValue();
     $audio = $form['audio']->getValue();
     $data = Json::decode($json->getContents(), Json::FORCE_ARRAY);
     $blackboard = new Rme\Blackboard();
     $this->orm->contents->attach($blackboard);
     $blackboard->title = 'Nová nahrávka';
     $blackboard->description = ' ';
     $blackboard->hidden = TRUE;
     $blackboard->duration = $data['duration'];
     $blackboard->preview = 'https://placehold.it/480x320&text=...';
     $blackboard->author = $this->userEntity;
     $this->orm->flush();
     $base = $this->paths->getBlackboards() . "/{$blackboard->id}";
     $json->move("{$base}.json");
     $audio->move("{$base}.wav");
     $producer = $this->queue->getProducer('blackboardPreview');
     $producer->publish(serialize(['blackboard' => new EntityPointer($blackboard)]));
     $link = $this->link('BlackboardEditor:default', ['blackboardId' => $blackboard->id]);
     $this->sendJson(['redirect' => $link]);
 }
Exemplo n.º 20
0
 public function __construct($domain, $apiKey = NULL, $apiSecret = NULL)
 {
     $this->domain = $domain;
     $this->apiKey = $apiKey;
     $this->apiSecret = $apiSecret;
     $config = ['base_url' => $domain];
     $curl = new Client($config);
     $curl->onBeforeRequest[] = function (Curl\Request $request) {
         $data = $request->getData();
         $timestamp = time();
         $toSign = $data;
         $toSign['timestamp'] = (int) $timestamp;
         $toSign['apiKey'] = $this->apiKey;
         ksort($toSign);
         $json = \Nette\Utils\Json::encode($toSign);
         $signature = base64_encode(hash_hmac('sha512', $json, $this->apiSecret, $raw = TRUE));
         $request->setQuery('apiKey', $this->apiKey);
         $request->setQuery('timestamp', $timestamp);
         $request->setQuery('signature', $signature);
     };
     $curl->onBeforeResponse[] = function ($response) {
         return ResponseParser::parse($response);
     };
     $this->clients = new Clients($curl);
     $this->products = new Products($curl);
     $this->orders = new Orders($curl);
     $this->invoices = new Invoices($curl);
 }
Exemplo n.º 21
0
 protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
 {
     $output->writeln('Extracting files');
     $outputFolder = $input->getOption('o');
     if ($outputFolder === NULL) {
         $outputFolder = $this->outputFolder;
     }
     $files = $input->getOption('f');
     if ($files === NULL) {
         $files = $this->extractDirs;
     }
     if (!isset($files)) {
         $output->writeln('No input files given.');
         exit;
     }
     $remote = $input->getOption('r');
     if ($remote === NULL) {
         $remote = $this->remote;
     } else {
         $remote = (bool) $remote;
     }
     $extractor = new NetteExtractor();
     $extractor->setupForms()->setupDataGrid();
     $data = $extractor->scan($files);
     $builder = new TemplateBuilder();
     if ($remote === TRUE) {
         $templateData = $builder->formatTemplateData($data);
         $response = \Nette\Utils\Json::decode($this->uploader->upload($templateData));
         $output->writeln(sprintf('<info>Extracted %d tokens. Uploaded to remote server. Response: %s</info>', count($data), $response->message));
     } else {
         $outputFile = $outputFolder . '/template.neont';
         $builder->buildTemplate($outputFile, $data);
         $output->writeln(sprintf('<info>Extracted %d tokens. Output saved in: %s.</info>', count($data), $outputFile));
     }
 }
Exemplo n.º 22
0
 /**
  * @param string $method "/tag"
  * @param array $args [data => string]
  * @return mixed
  * @throws \Nette\Utils\JsonException
  */
 protected function request($method, $args)
 {
     $args = $args + ['output' => 'json'];
     $url = self::ENDPOINT . "{$method}?" . http_build_query($args);
     $raw = file_get_contents($url);
     return Json::decode($raw, Json::FORCE_ARRAY)['result'];
 }
Exemplo n.º 23
0
 public static function fromActiveRow(ActiveRow $row)
 {
     $version = new static();
     $version->id = $row->id;
     $version->version = $row->version;
     $version->license = $row->license;
     $version->distType = $row->distType;
     $version->distUrl = $row->distUrl;
     $version->sourceType = $row->sourceType;
     $version->sourceUrl = $row->sourceUrl;
     $version->sourceReference = $row->sourceReference;
     $version->composerJson = Json::decode($row->composerJson);
     // this may fail
     $version->updatedAt = $row->updatedAt;
     $linkTypes = self::getLinkTypes();
     $linkTypes = array_flip($linkTypes);
     foreach ($row->related('dependencies') as $dependencyRow) {
         $type = $dependencyRow->type;
         $type = $linkTypes[$type];
         $version->{$type}[$dependencyRow->packageName] = $dependencyRow->version;
         if ($dependencyRow->dependencyId) {
             $version->relatedAddons[$dependencyRow->packageName] = $dependencyRow->dependencyId;
         }
     }
     return $version;
 }
 /**
  * @param string|object $json
  * @param int $forcedDepth
  * @return \SimpleXMLElement
  */
 public function settingsFromJson($json, $forcedDepth = 3)
 {
     if (is_string($json)) {
         $json = Json::decode($json);
     }
     $strict = $json->strict;
     $rule = $json->rule0;
     // Create basic structure of Document.
     //TODO taskId
     $this->init(!empty($json->taskId) ? $json->taskId : '', $json->limitHits);
     // Create antecedent
     if (!empty($rule->antecedent->children)) {
         $antecedentId = $this->parseCedent($rule->antecedent, 1, $forcedDepth, $strict);
         $this->antecedentSetting[0] = (string) $antecedentId;
     }
     // IMs
     foreach ($rule->IMs as $IM) {
         $this->createInterestMeasureThreshold($IM);
     }
     if (!empty($rule->specialIMs)) {
         foreach ($rule->specialIMs as $IM) {
             $this->createInterestMeasureThreshold($IM);
         }
     }
     // Create consequent
     $consequentId = $this->parseCedent($rule->succedent, 1, $forcedDepth, $strict);
     $this->consequentSetting[0] = (string) $consequentId;
     return $this->pmml;
 }
Exemplo n.º 25
0
 /**
  * Generates control's HTML element
  *
  * @return Html
  */
 public function getControl()
 {
     $control = parent::getControl()->addClass('pswdinput');
     $this->data['fid'] = $this->getForm()->getElementPrototype()->id;
     $control->data('lohini-pswd', \Nette\Utils\Json::encode(array_filter($this->data)));
     return Html::el('span', ['style' => 'position: relative; float: left;'])->add($control);
 }
 public function loadConfiguration()
 {
     $builder = $this->getContainerBuilder();
     $config = $this->getConfig($this->defaults);
     $helperClasses = array('Symfony\\Component\\Console\\Helper\\FormatterHelper', 'Symfony\\Component\\Console\\Helper\\QuestionHelper', 'Kdyby\\Console\\Helpers\\PresenterHelper');
     $helperClasses = array_map(function ($class) {
         return new Nette\DI\Statement($class);
     }, $helperClasses);
     if (class_exists('Symfony\\Component\\Console\\Helper\\ProgressHelper')) {
         $helperClasses[] = new Nette\DI\Statement('Symfony\\Component\\Console\\Helper\\ProgressHelper', array(false));
     }
     if (class_exists('Symfony\\Component\\Console\\Helper\\DialogHelper')) {
         $helperClasses[] = new Nette\DI\Statement('Symfony\\Component\\Console\\Helper\\DialogHelper', array(false));
     }
     $builder->addDefinition($this->prefix('helperSet'))->setClass('Symfony\\Component\\Console\\Helper\\HelperSet', array($helperClasses))->setInject(FALSE);
     $builder->addDefinition($this->prefix('application'))->setClass('Kdyby\\Console\\Application', array($config['name'], $config['version']))->addSetup('setHelperSet', array($this->prefix('@helperSet')))->addSetup('injectServiceLocator')->setInject(FALSE);
     $builder->addDefinition($this->prefix('dicHelper'))->setClass('Kdyby\\Console\\ContainerHelper')->addTag(self::TAG_HELPER, 'dic');
     if ($config['disabled']) {
         return;
     }
     $builder->addDefinition($this->prefix('router'))->setClass('Kdyby\\Console\\CliRouter')->setAutowired(FALSE)->setInject(FALSE);
     Nette\Utils\Validators::assert($config, 'array');
     foreach ($config['commands'] as $command) {
         $def = $builder->addDefinition($this->prefix('command.' . md5(Nette\Utils\Json::encode($command))));
         list($def->factory) = Nette\DI\Compiler::filterArguments(array(is_string($command) ? new Nette\DI\Statement($command) : $command));
         if (class_exists($def->factory->entity)) {
             $def->class = $def->factory->entity;
         }
         $def->setAutowired(FALSE);
         $def->setInject(FALSE);
         $def->addTag(self::TAG_COMMAND);
     }
 }
Exemplo n.º 27
0
 public function __construct(OAuth\Consumer $consumer, Http\Url $url, $method = self::GET, array $post = [], array $headers = [], OAuth\Token $token = NULL)
 {
     $this->consumer = $consumer;
     $this->token = $token;
     $this->url = $url;
     $this->method = strtoupper($method);
     $this->headers = $headers;
     if (is_array($post) && !empty($post)) {
         $this->post = array_map(function ($value) {
             if ($value instanceof Http\UrlScript) {
                 return (string) $value;
             } elseif ($value instanceof \CURLFile) {
                 return $value;
             }
             return !is_string($value) ? Utils\Json::encode($value) : $value;
         }, $post);
     }
     $parameters = $this->getParameters();
     $defaults = ['oauth_version' => OAuth\DI\OAuthExtension::VERSION, 'oauth_nonce' => $this->generateNonce(), 'oauth_timestamp' => $this->generateTimestamp(), 'oauth_consumer_key' => $this->consumer->getKey()];
     if ($token && $token->getToken()) {
         $defaults['oauth_token'] = $this->token->getToken();
     }
     // Update query parameters
     $this->url->setQuery(array_merge($defaults, $parameters));
 }
Exemplo n.º 28
0
 /**
  * @param Screenplay[] $scenarios
  */
 public function publish(array $scenarios)
 {
     $ids = [];
     foreach ($scenarios as $screenplay) {
         $ids[] = $screenplay->getId();
     }
     $this->producer->publish(Json::encode($ids));
 }
Exemplo n.º 29
0
 private function parse($input)
 {
     try {
         return Json::decode($input);
     } catch (JsonException $exception) {
         throw new TransitException('Input is not valid transit.');
     }
 }
Exemplo n.º 30
0
 /**
  * @param Http\IRequest $request
  * @param Http\IResponse $response
  */
 public function send(Http\IRequest $request, Http\IResponse $response)
 {
     $response->setContentType($this->contentType);
     $response->setCode($this->code ?: Http\IResponse::S200_OK);
     $response->setExpiration($this->expiration);
     $response->setHeader('Pragma', $this->expiration ? 'cache' : 'no-cache');
     echo Json::encode($this->data);
 }