protected function getCommandWithArrayParamAndFilters()
 {
     $operation = new Operation(array('httpMethod' => 'POST', 'parameters' => array('foo' => new Parameter(array('type' => 'string', 'location' => 'query', 'sentAs' => 'Foo', 'required' => true, 'default' => 'bar', 'filters' => array('strtoupper'))), 'arr' => new Parameter(array('type' => 'array', 'location' => 'query', 'sentAs' => 'Arr', 'required' => true, 'default' => array(123, 456, 789), 'filters' => array(array('method' => 'implode', 'args' => array(',', '@value'))))))));
     $command = new OperationCommand(array(), $operation);
     $command->setClient(new MockClient());
     return $command;
 }
 public static function fromCommand(OperationCommand $command)
 {
     $response = json_decode($command->getResponse()->getBody(true), true);
     $class = get_called_class();
     // Cannot do new self() with abstract class
     return new $class($response);
 }
示例#3
0
 /**
  * The fromCommand method is used by Guzzle to create an instance of this class. It "injects"
  * the response data, which is then parsed to populate this and the associated models.
  *
  * @param Guzzle\Service\Command\OperationCommand
  * @return array
  */
 public static function fromCommand(\Guzzle\Service\Command\OperationCommand $command)
 {
     // Grab the results, which will be in JSON format
     //krumo($command->getResponse());
     $result = $command->getResponse()->json();
     // Start building an array, since a call to the API can include several different sites
     $websites = array();
     // Now iterate through the results
     foreach ($result as $key => $row) {
         // "Target" is a stripped-down version of the URL provided
         $url = $row['target'];
         // Create a new Website model
         $website = new Website($url);
         // The 0 axis holds information about trustworthiness
         if (isset($row[0])) {
             $website->setTrustworthiness($row[0][0], $row[0][1]);
         }
         // The 4 axis contins information pertaining to child satefy
         if (isset($row[4])) {
             $website->setChildSafety($row[4][0], $row[4][1]);
         }
         // NOTE: the axes in indexes 1 and 2 are deprecated.
         // If any categories are specified, set them
         if (isset($row['categories'])) {
             $website->setCategories($row['categories']);
         }
         // If provided, set the blacklist information; we'll discard the timestamp information
         if (isset($row['blacklists'])) {
             $website->setBlacklists(array_keys($row['blacklists']));
         }
         // Add the website
         $websites[$key] = $website;
     }
     return $websites;
 }
示例#4
0
 /**
  * {@inheritdoc}
  */
 public static function fromCommand(OperationCommand $command)
 {
     $data = $command->getResponse()->json();
     $brandAddress = self::hydrateModelProperties(new Address(), $data['agentBrand']['address']);
     $brand = self::hydrateModelProperties(new Brand(), $data['agentBrand'], array(), array('address' => $brandAddress));
     $address = self::hydrateModelProperties(new Address(), $data['address']);
     return self::hydrateModelProperties(new self(), $data, array(), array('address' => $address, 'agentBrand' => $brand));
 }
 public function testAlreadyOverriddenUserAgent()
 {
     $_SERVER['HTTP_USER_AGENT'] = 'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14';
     $command = new OperationCommand();
     $command->set('ua', 'some_value');
     $this->dispatchCommand($command);
     $this->assertSame('some_value', $command->get('ua'));
 }
示例#6
0
 /**
  * {@inheritdoc}
  */
 public static function fromCommand(OperationCommand $command)
 {
     $activities = new Collection();
     foreach ($command->getResponse()->json() as $key => $activity) {
         $activities->add($key, self::hydrateModelProperties(new self(), $activity));
     }
     return $activities;
 }
示例#7
0
 /**
  * {@inheritdoc}
  */
 public static function fromCommand(OperationCommand $command)
 {
     $items = new Collection();
     foreach ($command->getResponse()->json() as $key => $item) {
         $items[$key] = self::hydrateModelProperties(new self(), $item, array('address1' => 'addressLineOne', 'address2' => 'addressLineTwo', 'address3' => 'addressLineThree', 'address4' => 'addressLineFour', 'address5' => 'addressLineFive'));
     }
     return $items;
 }
 public function testAlreadyOverriddenUserAgent()
 {
     $_SERVER['REMOTE_ADDR'] = '1.2.3.4';
     $command = new OperationCommand();
     $command->set('uip', '4.3.2.1');
     $this->dispatchCommand($command);
     $this->assertSame('4.3.2.1', $command->get('uip'));
 }
 public static function fromCommand(OperationCommand $command)
 {
     $xml = $command->getResponse()->xml();
     if (!isset($xml->AuthInfo)) {
         throw new AuthenticationException((string) $xml, $xml->attributes()['errorcode']);
     }
     $authToken = (string) $xml->AuthInfo->attributes()['authToken'];
     return $authToken;
 }
 public function testAddsContentTypeWhenExpectsIsSetOnCommand()
 {
     $op = new OperationCommand(array(), new Operation());
     $op['command.expects'] = 'application/json';
     $op->setClient(new Client());
     $request = $op->prepare();
     $request->setResponse(new Response(200, null, '{"Baz":"Bar"}'), true);
     $this->assertEquals(array('Baz' => 'Bar'), $op->execute());
 }
 /**
  * Create a response model object from a completed command.
  *
  * @param OperationCommand $command That serialized the request
  * @return \Illuminate\Support\Collection
  */
 public static function fromCommand(OperationCommand $command)
 {
     // Initialize the collection
     $collection = new self($command->getResponse()->json());
     // Set the Usergrid API client on the collection
     $collection->setApiClient($command->getClient()->getApiClient());
     // Return the collection
     return $collection;
 }
示例#12
0
 public static function fromCommand(OperationCommand $command)
 {
     $response = $command->getResponse();
     $info = $response->getInfo();
     if ($info['content_type'] === 'image/png' || $info['content_type'] === 'image/jpg') {
         return new static(['logo' => $info['url']]);
     }
     throw new BadResponseException('Content type invalid. API returned ' . $info['content_type']);
 }
示例#13
0
 /**
  * @covers Desk\Command\PreValidator::castPrimitivesToArrays
  * @dataProvider dataCastPrimitivesToArrays
  *
  * @param array $param    Parameter description/structure
  * @param mixed $value    Input value for the parameter
  * @param mixed $expected Expected output value
  */
 public function testCastPrimitivesToArrays(array $param, $value, $expected)
 {
     $command = new OperationCommand(array('foo' => $value), new Operation(array('parameters' => array('foo' => $param))));
     $command->setClient(new Client());
     $event = new Event(array('command' => $command));
     $preValidator = $this->mock('castPrimitivesToArrays');
     $preValidator->castPrimitivesToArrays($event);
     $this->assertSame($expected, $command->get('foo'));
 }
示例#14
0
 public function testAllowsRawResponses()
 {
     $description = new ServiceDescription(array('operations' => array('foo' => array('responseClass' => 'bar', 'responseType' => 'model')), 'models' => array('bar' => array())));
     $op = new OperationCommand(array(OperationCommand::RESPONSE_PROCESSING => OperationCommand::TYPE_RAW), $description->getOperation('foo'));
     $op->setClient(new Client());
     $request = $op->prepare();
     $response = new Response(200, array('Content-Type' => 'application/xml'), '<Foo><Baz>Bar</Baz></Foo>');
     $request->setResponse($response, true);
     $this->assertSame($response, $op->execute());
 }
 public function testSkipsUnkownModels()
 {
     $parser = new OperationResponseParser();
     $operation = $this->getDescription()->getOperation('test');
     $operation->setResponseClass('Baz')->setResponseType('model');
     $op = new OperationCommand(array(), $operation);
     $op->setResponseParser($parser)->setClient(new Client());
     $op->prepare()->setResponse(new Response(201), true);
     $this->assertInstanceOf('Guzzle\\Http\\Message\\Response', $op->execute());
 }
示例#16
0
 /**
  * Create a response model object from a completed command
  *
  * @param OperationCommand $command That serialized the request
  *
  * @return CurrencyCollection
  */
 public static function fromCommand(OperationCommand $command)
 {
     $response = $command->getResponse();
     $json = $response->json();
     $currencies = array();
     foreach ($json as $currency) {
         $currencies[] = new Currency($currency['code'], $currency['name'], $currency['rate']);
     }
     return new self($currencies);
 }
示例#17
0
 public static function fromCommand(OperationCommand $command)
 {
     $xml = $command->getResponse()->xml();
     $styles = $xml->StyleList->style;
     $output = array();
     foreach ($styles as $style) {
         $output[(int) $style->attributes()['guid']] = trim((string) $style);
     }
     return $output;
 }
示例#18
0
 public static function fromCommand(OperationCommand $command)
 {
     $xml = $command->getResponse()->xml();
     $makes = $xml->MakeList->make;
     $output = array();
     foreach ($makes as $make) {
         $output[] = trim((string) $make);
     }
     return $output;
 }
示例#19
0
 public static function fromCommand(OperationCommand $command)
 {
     $xml = $command->getResponse()->xml();
     $years = $xml->YearList->year;
     $output = array();
     foreach ($years as $year) {
         $output[] = (int) $year;
     }
     return $output;
 }
 public function testForceSet()
 {
     $plugin = new DataSetter(array('test_key' => 'test_value'), true);
     $command = new OperationCommand();
     $command->set('test_key', 'already_stated_value');
     $event = new Event(array('command' => $command));
     $plugin->register($this->client);
     $this->client->getEventDispatcher()->dispatch('command.before_prepare', $event);
     $this->assertSame('test_value', $command->get('test_key'));
 }
示例#21
0
 public static function fromCommand(OperationCommand $command)
 {
     $json = $command->getResponse()->json();
     // support collections
     if (array_key_exists(0, $json)) {
         return array_map(function (array $properties) {
             return new static($properties);
         }, $json);
     }
     return new static($json);
 }
示例#22
0
 /**
  * {@inheritdoc}
  */
 public static function fromCommand(OperationCommand $command)
 {
     $instance = new self();
     $response = $command->getResponse();
     $body = $response->getBody();
     if ($body instanceof Stream) {
         $contentDispositionParts = self::parseContentDisposition($response->getContentDisposition());
         $instance->setStream($body)->setSize($response->getBody()->getSize())->setMimeType($response->getContentType())->setFileExtension($contentDispositionParts['extension'])->setFileName($contentDispositionParts['filename'])->setData($response->getBody(true));
     }
     return $instance;
 }
 /**
  * Create a response model object from a completed command
  *
  * @param OperationCommand $command That serialized the request
  *
  * @return self
  */
 public static function fromCommand(OperationCommand $command)
 {
     $body = (string) $command->getResponse()->getBody();
     $lines = str_getcsv($body, "\n");
     $metadata = array();
     foreach ($lines as $line) {
         list($key, $value) = str_getcsv($line);
         $metadata[$key] = $value;
     }
     return new self($metadata);
 }
 /**
  * FromCommand
  *
  * @return ResponseSearchModel
  * @author James Pudney
  */
 public static function fromCommand(OperationCommand $command)
 {
     $response = $command->getResponse();
     $json = $response->json();
     $columns = self::getColumnNames($json['response']['metaData']['columns']);
     $results = $json['response']['results'];
     // reformat the results
     $results = self::formatSearchResults($results, $columns);
     // return the model
     return new self($results, $columns);
 }
 /**
  * Constructor
  *
  * @param OperationCommand $command
  */
 public function __construct(OperationCommand $command)
 {
     $this->setClient($command->getClient());
     $this->setCommandName($command->getName());
     $data = $command->getResponse()->json();
     foreach ($data as $key => $value) {
         $setter = 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key)));
         if (method_exists($this, $setter)) {
             $this->{$setter}($value);
         }
     }
 }
 /**
  * {@inheritdoc}
  */
 public static function fromCommand(OperationCommand $command)
 {
     $data = $command->getResponse()->json();
     $records = new Collection();
     if (isset($data['records']) && is_array($data['records'])) {
         foreach ($data['records'] as $key => $object) {
             $records->add($key, self::hydrateModelProperties(new ReferencingApplicationFindResult(), $object, array('applicationUuid' => 'referencingApplicationUuId')));
         }
     }
     $instance = self::hydrateModelProperties(new self(), $data, array(), array('records' => $records));
     return $instance;
 }
 /**
  * Create a response model object from a completed command
  *
  * @param OperationCommand $command That serialized the request
  *
  * @return self
  */
 public static function fromCommand(OperationCommand $command)
 {
     $lines = explode("\n", $command->getResponse()->getBody(true));
     $head = str_getcsv(array_shift($lines), ';');
     foreach ($head as $key => $headItem) {
         $head[$key] = self::strtocamelcase($headItem);
     }
     $array = array();
     foreach ($lines as $line) {
         $array[] = array_combine($head, str_getcsv($line, ';'));
     }
     return $array;
 }
示例#28
0
 public static function fromCommand(OperationCommand $command)
 {
     $response = $command->getResponse()->json();
     // If 'ok' is not set or not true, something went wrong
     if (!isset($response['response']) || empty($response['ok']) || $response['ok'] != 1) {
         throw new \Exception('response not ok');
     }
     // If response is not an array return true if 1, otherwise false
     if (!is_array($response['response'])) {
         return $response['response'] == 1 ? true : false;
     }
     return $response['response'];
 }
示例#29
0
 public static function fromCommand(OperationCommand $command)
 {
     $response = $command->getResponse()->json();
     if (self::isListing($response)) {
         $things = array();
         foreach ($response['data']['children'] as $input) {
             $things[] = self::thingFactory()->createThing($input);
         }
         return $things;
     } else {
         $thing = self::thingFactory()->createThing($response);
         return $thing;
     }
 }
示例#30
0
 /**
  * {@inheritdoc}
  */
 public static function fromCommand(OperationCommand $command)
 {
     $data = $command->getResponse()->json();
     // Indexed array of agent users
     if (self::isResponseDataIndexedArray($data)) {
         $users = new Collection();
         foreach ($data as $key => $userData) {
             $users->add($key, self::hydrateModelProperties(new self(), $userData, array('agentUserId' => 'agentUserUuId', 'fullName' => 'name')));
         }
         return $users;
     } else {
         return self::hydrateModelProperties(new self(), $data, array('agentUserId' => 'agentUserUuId', 'fullName' => 'name'));
     }
 }