private function constructPutOrMergeEntityContext(
        $table,
        Entity $entity,
        $verb,
        $useETag,
        TableServiceOptions $options = null
    ) {
        Validate::canCastAsString($table, 'table');
        Validate::notNullOrEmpty($table, 'table');
        Validate::notNullOrEmpty($entity, 'entity');
        Validate::isTrue($entity->isValid($msg), $msg);

        $method       = $verb;
        $headers      = array();
        $queryParams  = array();
        $statusCode   = Resources::STATUS_NO_CONTENT;
        $partitionKey = $entity->getPartitionKey();
        $rowKey       = $entity->getRowKey();
        $path         = $this->getEntityPath($table, $partitionKey, $rowKey);
        $body         = $this->odataSerializer->getEntity($entity);

        if (is_null($options)) {
            $options = new TableServiceOptions();
        }

        if ($useETag) {
            $etag         = $entity->getETag();
            $ifMatchValue = is_null($etag) ? Resources::ASTERISK : $etag;

            $this->addOptionalHeader($headers, Resources::IF_MATCH, $ifMatchValue);
        }

        $this->addOptionalHeader(
            $headers,
            Resources::CONTENT_TYPE,
            Resources::JSON_CONTENT_TYPE
        );
        $this->addOptionalHeader(
            $headers,
            Resources::ACCEPT_HEADER,
            Resources::JSON_FULL_METADATA_CONTENT_TYPE
        );

        $options->setLocationMode(LocationMode::PRIMARY_ONLY);
        $context = new HttpCallContext();
        $context->setBody($body);
        $context->setHeaders($headers);
        $context->setMethod($method);
        $context->setPath($path);
        $context->setQueryParameters($queryParams);
        $context->addStatusCode($statusCode);
        $context->setServiceOptions($options);

        return $context;
    }
private function constructPutOrMergeEntityContext(
        $table,
        Entity $entity,
        $verb,
        $useETag,
        TableServiceOptions $options = null
    ) {
        Validate::canCastAsString($table, 'table');
        Validate::notNullOrEmpty($table, 'table');
        Validate::notNullOrEmpty($entity, 'entity');
        Validate::isTrue($entity->isValid($msg), $msg);

        $method       = $verb;
        $headers      = array();
        $queryParams  = array();
        $statusCode   = Resources::STATUS_NO_CONTENT;
        $partitionKey = $entity->getPartitionKey();
        $rowKey       = $entity->getRowKey();
        $path         = $this->getEntityPath($table, $partitionKey, $rowKey);
        $body         = $this->odataSerializer->getEntity($entity);

        if (is_null($options)) {
            $options = new TableServiceOptions();
        }

        if ($useETag) {
            $etag         = $entity->getETag();
            $ifMatchValue = is_null($etag) ? Resources::ASTERISK : $etag;

            $this->addOptionalHeader($headers, Resources::IF_MATCH, $ifMatchValue);
        }

        $this->addOptionalHeader(
            $headers,
            Resources::CONTENT_TYPE,
            Resources::JSON_CONTENT_TYPE
        );
        $this->addOptionalHeader(
            $headers,
            Resources::ACCEPT_HEADER,
            Resources::JSON_FULL_METADATA_CONTENT_TYPE
        );

        $options->setLocationMode(LocationMode::PRIMARY_ONLY);
        $context = new HttpCallContext();
        $context->setBody($body);
        $context->setHeaders($headers);
        $context->setMethod($method);
        $context->setPath($path);
        $context->setQueryParameters($queryParams);
        $context->addStatusCode($statusCode);
        $context->setServiceOptions($options);

        return $context;
    }
private function constructPutOrMergeEntityContext ( $ table , Entity $ entity , $ verb , $ useETag , TableServiceOptions $ options = null ) { Validate :: canCastAsString ( $ table , 'table' ) ; Validate :: notNullOrEmpty ( $ table , 'table' ) ; Validate :: notNullOrEmpty ( $ entity , 'entity' ) ; Validate :: isTrue ( $ entity -> isValid ( $ msg ) , $ msg ) ; $ method = $ verb ; $ headers = array ( ) ; $ queryParams = array ( ) ; $ statusCode = Resources :: STATUS_NO_CONTENT ; $ partitionKey = $ entity -> getPartitionKey ( ) ; $ rowKey = $ entity -> getRowKey ( ) ; $ path = $ this -> getEntityPath ( $ table , $ partitionKey , $ rowKey ) ; $ body = $ this -> odataSerializer -> getEntity ( $ entity ) ; if ( is_null ( $ options ) ) { $ options = new TableServiceOptions ( ) ; } if ( $ useETag ) { $ etag = $ entity -> getETag ( ) ; $ ifMatchValue = is_null ( $ etag ) ? Resources :: ASTERISK : $ etag ; $ this -> addOptionalHeader ( $ headers , Resources :: IF_MATCH , $ ifMatchValue ) ; } $ this -> addOptionalHeader ( $ headers , Resources :: CONTENT_TYPE , Resources :: JSON_CONTENT_TYPE ) ; $ this -> addOptionalHeader ( $ headers , Resources :: ACCEPT_HEADER , Resources :: JSON_FULL_METADATA_CONTENT_TYPE ) ; $ options -> setLocationMode ( LocationMode :: PRIMARY_ONLY ) ; $ context = new HttpCallContext ( ) ; $ context -> setBody ( $ body ) ; $ context -> setHeaders ( $ headers ) ; $ context -> setMethod ( $ method ) ; $ context -> setPath ( $ path ) ; $ context -> setQueryParameters ( $ queryParams ) ; $ context -> addStatusCode ( $ statusCode ) ; $ context -> setServiceOptions ( $ options ) ; return $ context ; }
Constructs HTTP call context for updateEntity, mergeEntity,
insertOrReplaceEntity and insertOrMergeEntity.

@param string              $table   The table name.
@param Entity              $entity  The entity instance to use.
@param string              $verb    The HTTP method.
@param boolean             $useETag The flag to include etag or not.
@param TableServiceOptions $options The optional parameters.

@return HttpCallContext
Constructs HTTP call context for updateEntity mergeEntity insertOrReplaceEntity and insertOrMergeEntity .