/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('name')->add('description')->add('countries')->add('tags', 'text', ['mapped' => false]); $tagManager = $this->tagManager; $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { if (!$event->getData() || !$event->getData()->getId()) { $event->getForm()->add('url', 'url')->add('type', 'text', ['mapped' => false, 'constraints' => [new Constraints\NotBlank(['groups' => ['new']]), new Constraints\Choice(['choices' => Platform::getAvailableTypes(), 'groups' => ['new'], 'message' => 'Неправильный тип площадки'])]]); } }); $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) use($tagManager) { /** @var Platform $platform */ $platform = $event->getData(); $form = $event->getForm(); $formTags = $form['tags']->getData(); if (!empty($formTags) && !is_string($formTags)) { $error = new FormError('неправильный формат тегов'); $form['tags']->addError($error); } else { $tagNames = $tagManager->splitTagNames($form['tags']->getData()); $tags = $tagManager->loadOrCreateTags($tagNames); $tagManager->replaceTags($tags, $platform); } if (!$platform->getId() && $platform->getUrl()) { // для новой площадки $url = new Url($platform->getUrl()); $platform->setUrl(rtrim($url->format('hp'), '//')); if (in_array($url->getHostname(), ['vk.com', 'vkontakte.ru']) !== ($form['type']->getData() == 'vk')) { $error = new FormError('Тип площадки не соответствует адресу'); $form['url']->addError($error); } } }); }
/** * Prepares the request authentication based on Url components (username:password) * * @param mixed $url */ protected function prepareUserAuth($url) { if (!$url instanceof Url) { $url = new Url($url); } if ($url->getUser()) { $authListener = new BasicAuthListener($url->getUser(), $url->getPassword()); $this->httpBrowser->setListener($authListener); } }
public function preSend(RequestInterface $request) { $raw = $request->getContent(); $url = new Url($this->apiBaseUrl . $request->getResource() . '.json'); $request->setContent(json_encode($raw)); $request->setHost($url->getHost()); $request->setResource($url->getResource()); $request->addHeader('Authorization: Bearer ' . $this->token); $request->addHeader('Accept: application/json'); $request->addHeader('Content-Type: application/json'); }
public function uploadActivity($file) { $request = new FormRequest(FormRequest::METHOD_POST); // Set the request URL $url = new Url('https://connect.garmin.com/proxy/upload-service-1.1/json/upload/.fit'); $url->applyToRequest($request); // Set the form fields $request->setField('responseContentType', 'text/html'); $data = new FormUpload($file); $data->setContentType('image/x-fits'); $request->setField('data', $data); $response = new Response(); $this->browser->getClient()->send($request, $response); return json_decode($response->getContent(), true); }
/** * Sends a form request. * * @param string $url The URL to submit to * @param array $fields An array of fields * @param string $method The request method to use * @param array $headers An array of request headers * * @return Response The response object */ public function submit($url, array $fields, $method = RequestInterface::METHOD_POST, $headers = array()) { $request = $this->factory->createFormRequest(); if (!$url instanceof Url) { $url = new Url($url); } $url->applyToRequest($request); $request->addHeaders($headers); $request->setMethod($method); $request->setFields($fields); return $this->send($request); }
/** * Sends a request. * * @param string $url The URL to call * @param string $method The request method to use * @param array $headers An array of request headers * @param string $content The request content * @param int $cacheLifetime serverside cache lifetime * * @return MessageInterface The response object */ public function call($url, $method, $headers = array(), $content = '', $cacheLifetime = null) { if ($this->cacher == null) { return parent::call($url, $method, $headers, $content, $cacheLifetime); } $request = $this->factory->createRequest($method); if (!$url instanceof Url) { $url = new Url($url); } $url->applyToRequest($request); $request->addHeaders($headers); $request->setContent($content); $this->data = $this->cacher->retrieveCachedResponse($request); if (!$this->data) { $this->fromCache = false; $this->send($request); $this->data = array('request' => parent::getLastRequest(), 'response' => parent::getLastResponse()); $this->cacher->cacheResponse($this->data['request'], $this->data['response'], $cacheLifetime); } return $this->data['response']; }
/** * @inheritdoc */ public function request(array $params) { try { $headers = array(); $url = new Url($params['url']); // Buzz cannot handle gziped content yet <@:( //$headers[] = 'Accept-Encoding: gzip,deflate'; if ($params['config']->isAuthenticationPossible() === true && $this->option['keys']['public'] !== null && $this->option['keys']['private'] !== null) { /** * Note: DATE_RFC1123 my not be RFC 1123 compliant, depending on your platform. * @link http://www.php.net/manual/de/function.gmdate.php#25031 */ $date = gmdate('D, d M Y H:i:s \\G\\M\\T'); $path = $url->getPath(); $headers[] = 'Date: ' . $date; $headers[] = 'Authorization: ' . $this->signRequest('GET', $date, $path); } if (isset($params['lastmodified'])) { $headers[] = 'If-Modified-Since: ' . $params['lastmodified']; } $response = $this->client->get($url, $headers); $body = $response->getContent(); $headers = null; if ($this->option['responseheader']) { $headers = array(); $temp = $response->getHeaders(); foreach ($temp as $header) { if (substr($header, 0, 5) === 'HTTP/') { continue; } list($key, $value) = explode(': ', $header); $headers[$key] = $value; } $this->lastResponseHeaders = $headers; } } catch (\Exception $e) { throw new ClientException('Client exception catched, use getPrevious().', 0, $e); } return $this->createResponse($params['config']->isJson(), $response->getStatusCode(), $body, $headers); }
/** * A convenience method for populating the current request from a URL. * * @param Url|string $url An URL */ public function fromUrl($url) { if (!$url instanceof Url) { $url = new Url($url); } $url->applyToRequest($this); }
/** * @dataProvider providePattern */ public function testFormat($input, $pattern, $expected) { $url = new Url($input); $this->assertEquals($expected, $url->format($pattern)); }