Official Riak Client for PHP
  • Namespace
  • Class
  • Tree

Namespaces

  • Basho
    • Riak
      • Api
        • Http
          • Translator
      • Command
        • Bucket
        • Builder
          • MapReduce
          • Search
          • TimeSeries
        • DataType
          • Counter
          • Map
          • Set
        • Indexes
        • MapReduce
        • Object
        • Search
          • Index
          • Schema
        • Stats
        • TimeSeries
          • Query
      • DataType
      • Node
        • Builder
      • Search
      • TimeSeries

Classes

  • Basho\Riak
  • Basho\Riak\Api
  • Basho\Riak\Api\Http
  • Basho\Riak\Api\Http\Translator\ObjectResponse
  • Basho\Riak\Api\Http\Translator\SecondaryIndex
  • Basho\Riak\Bucket
  • Basho\Riak\Command
  • Basho\Riak\Command\Bucket\Delete
  • Basho\Riak\Command\Bucket\Fetch
  • Basho\Riak\Command\Bucket\Response
  • Basho\Riak\Command\Bucket\Store
  • Basho\Riak\Command\Builder
  • Basho\Riak\Command\Builder\DeleteObject
  • Basho\Riak\Command\Builder\FetchBucketProperties
  • Basho\Riak\Command\Builder\FetchCounter
  • Basho\Riak\Command\Builder\FetchMap
  • Basho\Riak\Command\Builder\FetchObject
  • Basho\Riak\Command\Builder\FetchPreflist
  • Basho\Riak\Command\Builder\FetchSet
  • Basho\Riak\Command\Builder\FetchStats
  • Basho\Riak\Command\Builder\IncrementCounter
  • Basho\Riak\Command\Builder\MapReduce\FetchObjects
  • Basho\Riak\Command\Builder\Ping
  • Basho\Riak\Command\Builder\QueryIndex
  • Basho\Riak\Command\Builder\Search\AssociateIndex
  • Basho\Riak\Command\Builder\Search\DeleteIndex
  • Basho\Riak\Command\Builder\Search\DissociateIndex
  • Basho\Riak\Command\Builder\Search\FetchIndex
  • Basho\Riak\Command\Builder\Search\FetchObjects
  • Basho\Riak\Command\Builder\Search\FetchSchema
  • Basho\Riak\Command\Builder\Search\StoreIndex
  • Basho\Riak\Command\Builder\Search\StoreSchema
  • Basho\Riak\Command\Builder\SetBucketProperties
  • Basho\Riak\Command\Builder\StoreObject
  • Basho\Riak\Command\Builder\TimeSeries\DeleteRow
  • Basho\Riak\Command\Builder\TimeSeries\DescribeTable
  • Basho\Riak\Command\Builder\TimeSeries\FetchRow
  • Basho\Riak\Command\Builder\TimeSeries\Query
  • Basho\Riak\Command\Builder\TimeSeries\StoreRows
  • Basho\Riak\Command\Builder\UpdateMap
  • Basho\Riak\Command\Builder\UpdateSet
  • Basho\Riak\Command\DataType\Counter\Fetch
  • Basho\Riak\Command\DataType\Counter\Response
  • Basho\Riak\Command\DataType\Counter\Store
  • Basho\Riak\Command\DataType\Map\Fetch
  • Basho\Riak\Command\DataType\Map\Response
  • Basho\Riak\Command\DataType\Map\Store
  • Basho\Riak\Command\DataType\Set\Fetch
  • Basho\Riak\Command\DataType\Set\Response
  • Basho\Riak\Command\DataType\Set\Store
  • Basho\Riak\Command\Indexes\Query
  • Basho\Riak\Command\Indexes\Response
  • Basho\Riak\Command\MapReduce\Fetch
  • Basho\Riak\Command\MapReduce\Response
  • Basho\Riak\Command\Object
  • Basho\Riak\Command\Object\Delete
  • Basho\Riak\Command\Object\Fetch
  • Basho\Riak\Command\Object\FetchPreflist
  • Basho\Riak\Command\Object\Response
  • Basho\Riak\Command\Object\Store
  • Basho\Riak\Command\Ping
  • Basho\Riak\Command\Response
  • Basho\Riak\Command\Search\Fetch
  • Basho\Riak\Command\Search\Index\Delete
  • Basho\Riak\Command\Search\Index\Fetch
  • Basho\Riak\Command\Search\Index\Response
  • Basho\Riak\Command\Search\Index\Store
  • Basho\Riak\Command\Search\Response
  • Basho\Riak\Command\Search\Schema\Fetch
  • Basho\Riak\Command\Search\Schema\Response
  • Basho\Riak\Command\Search\Schema\Store
  • Basho\Riak\Command\Stats
  • Basho\Riak\Command\Stats\Response
  • Basho\Riak\Command\TimeSeries\Delete
  • Basho\Riak\Command\TimeSeries\Fetch
  • Basho\Riak\Command\TimeSeries\Query\Fetch
  • Basho\Riak\Command\TimeSeries\Query\Response
  • Basho\Riak\Command\TimeSeries\Response
  • Basho\Riak\Command\TimeSeries\Store
  • Basho\Riak\DataType
  • Basho\Riak\DataType\Counter
  • Basho\Riak\DataType\Map
  • Basho\Riak\DataType\Set
  • Basho\Riak\Location
  • Basho\Riak\Node
  • Basho\Riak\Node\Builder
  • Basho\Riak\Node\Config
  • Basho\Riak\Object
  • Basho\Riak\Search\Doc
  • Basho\Riak\TimeSeries\Cell

Interfaces

  • Basho\Riak\ApiInterface
  • Basho\Riak\Command\BuilderInterface
  • Basho\Riak\CommandInterface

Traits

  • Basho\Riak\Command\Builder\BucketTrait
  • Basho\Riak\Command\Builder\IndexTrait
  • Basho\Riak\Command\Builder\LocationTrait
  • Basho\Riak\Command\Builder\ObjectTrait
  • Basho\Riak\Command\Builder\TimeSeries\KeyTrait
  • Basho\Riak\Command\Builder\TimeSeries\RowsTrait
  • Basho\Riak\Command\Builder\TimeSeries\TableTrait
  • Basho\Riak\HeadersTrait

Exceptions

  • Basho\Riak\Api\Exception
  • Basho\Riak\Command\Builder\Exception
  • Basho\Riak\Command\Exception
  • Basho\Riak\DataType\Exception
  • Basho\Riak\Exception
  • Basho\Riak\Node\Builder\Exception
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 
<?php

namespace Basho\Riak\Api\Http\Translator;

use Basho\Riak\Api\Http;
use Basho\Riak\Command;
use Basho\Riak\Object;

class ObjectResponse
{
    /**
     * @var Command\Object
     */
    protected $command;

    protected $code;

    public function __construct(Command\Object $command, $code)
    {
        $this->command = $command;
        $this->code = $code;
    }

    /**
     * @param $response
     * @param array $headers
     * @return Object[]
     */
    public function parseResponse($response, $headers = [])
    {
        $objects = [];

        if ($this->code == '300') {
            $position = strpos($headers[Http::CONTENT_TYPE_KEY], 'boundary=');
            $boundary = '--' . substr($headers[Http::CONTENT_TYPE_KEY], $position + 9);
            $objects = $this->parseSiblings($response, $boundary, $headers[Http::VCLOCK_KEY]);
        } elseif (in_array($this->code, ['200','201','204'])) {
            $objects[] = $this->parseObject($response, $headers);
        }

        return $objects;
    }

    public function parseSiblings($response, $boundary, $vclock = '')
    {
        $siblings = [];
        $parts = explode($boundary, $response);
        foreach ($parts as $part) {
            $headers = [Http::VCLOCK_KEY => $vclock];
            $slice_point = 0;
            $empties = 0;

            $lines = preg_split('/\n\r|\n|\r/', trim($part));
            foreach ($lines as $key => $line) {
                if (strpos($line, ':')) {
                    $empties = 0;
                    list ($key, $value) = explode(':', $line);

                    $value = trim($value);

                    if (!empty($value)) {
                        if (!isset($headers[$key])) {
                            $headers[$key] = $value;
                        } elseif (is_array($headers[$key])) {
                            $headers[$key] = array_merge($headers[$key], [$value]);
                        } else {
                            $headers[$key] = array_merge([$headers[$key]], [$value]);
                        }
                    }
                } elseif ($line == '') {
                    // if we have two line breaks in a row, then we have finished headers
                    if ($empties) {
                        $slice_point = $key + 1;
                        break;
                    } else {
                        $empties++;
                    }
                }
            }

            $data = implode(PHP_EOL, array_slice($lines, $slice_point));
            $siblings[] = $this->parseObject($data, $headers);
        }

        return $siblings;
    }

    public function parseObject($response, $headers = [])
    {
        $contentType = !empty($headers[Http::CONTENT_TYPE_KEY]) ? $headers[Http::CONTENT_TYPE_KEY] : '';
        $data = $this->command->getDecodedData($response, $contentType);

        return new Object($data, $headers);
    }
}
Official Riak Client for PHP API documentation generated by ApiGen