/**
  * addLocationInput
  *
  * @param Riak\Location $location
  *
  * @return $this
  */
 public function addLocationInput(Riak\Location $location)
 {
     // default bucket type cannot be passed to the MR api due to a bug
     if ($location->getBucket()->getType() == 'default') {
         $input = [$location->getBucket()->getName(), $location->getKey()];
     } else {
         $input = [$location->getBucket()->getName(), $location->getKey(), '', $location->getBucket()->getType()];
     }
     $this->inputs[] = $input;
     return $this;
 }
 /**
  * @param Location $location
  *
  * @return $this
  */
 public function atLocation(Location $location)
 {
     $this->bucket = $location->getBucket();
     $this->location = $location;
     return $this;
 }
Example #3
0
 /**
  * Retrieves the Location value from the response headers
  *
  * @return Location
  * @throws \Basho\Riak\Command\Exception
  */
 public function getLocation()
 {
     return Location::fromString($this->getHeader('Location'));
 }
Example #4
0
 protected function parseResponse()
 {
     // trim leading / trailing whitespace
     $body = $this->responseBody;
     $location = null;
     if ($this->getResponseHeader('Location')) {
         $location = Location::fromString($this->getResponseHeader('Location'));
     }
     if ($this->statusCode == 500) {
         $this->success = false;
         $this->error = $body;
     }
     switch (get_class($this->command)) {
         case 'Basho\\Riak\\Command\\Bucket\\Store':
         case 'Basho\\Riak\\Command\\Bucket\\Fetch':
             $bucket = null;
             $modified = $this->getResponseHeader(static::LAST_MODIFIED_KEY, '');
             $properties = json_decode($body, true);
             if (isset($properties['props']) && $this->command->getBucket()) {
                 $bucket = new Bucket($this->command->getBucket()->getName(), $this->command->getBucket()->getType(), $properties['props']);
             }
             $response = new Command\Bucket\Response($this->success, $this->statusCode, $this->error, $bucket, $modified);
             break;
         case 'Basho\\Riak\\Command\\Object\\Fetch':
         case 'Basho\\Riak\\Command\\Object\\Store':
             /** @var Command\Object $command */
             $command = $this->command;
             $objects = (new Api\Http\Translator\ObjectResponse($command, $this->statusCode))->parseResponse($body, $this->responseHeaders);
             $response = new Command\Object\Response($this->success, $this->statusCode, $this->error, $location, $objects);
             break;
         case 'Basho\\Riak\\Command\\Object\\FetchPreflist':
             $response = new Command\Object\Response($this->success, $this->statusCode, $this->error, $location, [new Object(json_decode($body))]);
             break;
         case 'Basho\\Riak\\Command\\DataType\\Counter\\Store':
         case 'Basho\\Riak\\Command\\DataType\\Counter\\Fetch':
             $counter = null;
             $json_object = json_decode($body);
             if ($json_object && isset($json_object->value)) {
                 $counter = new Counter($json_object->value);
             }
             $response = new Command\DataType\Counter\Response($this->success, $this->statusCode, $this->error, $location, $counter, $this->getResponseHeader('Date'));
             break;
         case 'Basho\\Riak\\Command\\DataType\\Set\\Store':
         case 'Basho\\Riak\\Command\\DataType\\Set\\Fetch':
             $set = null;
             $json_object = json_decode($body);
             if ($json_object && isset($json_object->value)) {
                 $set = new Set($json_object->value, $json_object->context);
             }
             $response = new Command\DataType\Set\Response($this->success, $this->statusCode, $this->error, $location, $set, $this->getResponseHeader('Date'));
             break;
         case 'Basho\\Riak\\Command\\DataType\\Map\\Store':
         case 'Basho\\Riak\\Command\\DataType\\Map\\Fetch':
             $map = null;
             $json_object = json_decode($body, true);
             if ($json_object && isset($json_object['value'])) {
                 $map = new Map($json_object['value'], $json_object['context']);
             }
             $response = new Command\DataType\Map\Response($this->success, $this->statusCode, $this->error, $location, $map, $this->getResponseHeader('Date'));
             break;
         case 'Basho\\Riak\\Command\\DataType\\Hll\\Store':
         case 'Basho\\Riak\\Command\\DataType\\Hll\\Fetch':
             $hll = null;
             $json_object = json_decode($body);
             if ($json_object && isset($json_object->value)) {
                 $hll = new Hll($json_object->value);
             }
             $response = new Command\DataType\Hll\Response($this->success, $this->statusCode, $this->error, $location, $hll, $this->getResponseHeader('Date'));
             break;
         case 'Basho\\Riak\\Command\\Search\\Fetch':
             $results = in_array($this->statusCode, [200, 204]) ? json_decode($body) : null;
             $docs = [];
             if (!empty($results->response->docs)) {
                 foreach ($results->response->docs as $doc) {
                     $docs[] = new Doc($doc);
                 }
             }
             $numFound = !empty($results->response->numFound) ? $results->response->numFound : 0;
             $response = new Command\Search\Response($this->success, $this->statusCode, $this->error, $numFound, $docs);
             break;
         case 'Basho\\Riak\\Command\\Search\\Index\\Store':
         case 'Basho\\Riak\\Command\\Search\\Index\\Fetch':
             $index = json_decode($body);
             $response = new Command\Search\Index\Response($this->success, $this->statusCode, $this->error, $index);
             break;
         case 'Basho\\Riak\\Command\\Search\\Schema\\Store':
         case 'Basho\\Riak\\Command\\Search\\Schema\\Fetch':
             $response = new Command\Search\Schema\Response($this->success, $this->statusCode, $this->error, $body, $this->getResponseHeader(static::CONTENT_TYPE_KEY));
             break;
         case 'Basho\\Riak\\Command\\MapReduce\\Fetch':
             $results = in_array($this->statusCode, [200, 204]) ? json_decode($body) : null;
             $response = new Command\MapReduce\Response($this->success, $this->statusCode, $this->error, $results);
             break;
         case 'Basho\\Riak\\Command\\Indexes\\Query':
             $json_object = in_array($this->statusCode, [200, 204]) ? json_decode($body, true) : null;
             $results = [];
             $termsReturned = false;
             $continuation = null;
             $done = true;
             if (isset($json_object['keys'])) {
                 $results = $json_object['keys'];
             }
             if (isset($json_object['results'])) {
                 $results = $json_object['results'];
                 $termsReturned = true;
             }
             if (isset($json_object['continuation'])) {
                 $continuation = $json_object['continuation'];
                 $done = false;
             }
             $response = new Command\Indexes\Response($this->success, $this->statusCode, $this->error, $results, $termsReturned, $continuation, $done, $this->getResponseHeader('Date'));
             break;
         case 'Basho\\Riak\\Command\\Stats':
             $response = new Command\Stats\Response($this->success, $this->statusCode, $this->error, json_decode($body, true));
             break;
         case 'Basho\\Riak\\Command\\TimeSeries\\Fetch':
             $row = in_array($this->statusCode, ['200', '201', '204']) ? json_decode($body, true) : [];
             $response = new Command\TimeSeries\Response($this->success, $this->statusCode, $this->error, [$row]);
             break;
         case 'Basho\\Riak\\Command\\TimeSeries\\Query\\Fetch':
             $results = in_array($this->statusCode, ['200', '204']) ? json_decode($body) : [];
             $rows = [];
             if (isset($results->rows)) {
                 foreach ($results->rows as $row) {
                     $cells = [];
                     foreach ($results->columns as $index => $column) {
                         $cells[$column] = $row[$index];
                     }
                     $rows[] = $cells;
                 }
             }
             $response = new Command\TimeSeries\Query\Response($this->success, $this->statusCode, $this->error, $rows);
             break;
         case 'Basho\\Riak\\Command\\TimeSeries\\Store':
         case 'Basho\\Riak\\Command\\TimeSeries\\Delete':
         case 'Basho\\Riak\\Command\\Object\\Delete':
         case 'Basho\\Riak\\Command\\Bucket\\Delete':
         case 'Basho\\Riak\\Command\\Search\\Index\\Delete':
         case 'Basho\\Riak\\Command\\Ping':
         default:
             $response = new Command\Response($this->success, $this->statusCode, $this->error);
             break;
     }
     $this->response = $response;
 }
Example #5
0
 /**
  * @param Pb\Message\RpbGetReq|Pb\Message\RpbPutReq|\ProtobufMessage $message
  * @param Location|null $location
  */
 protected function setLocationOnMessage(\ProtobufMessage &$message, Location $location = null)
 {
     if (!empty($location)) {
         $message->setKey($location->getKey());
     }
 }