<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/retail/v2/common.proto

namespace Google\Cloud\Retail\V2;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 * Information of an end user.
 *
 * Generated from protobuf message <code>google.cloud.retail.v2.UserInfo</code>
 */
class UserInfo extends \Google\Protobuf\Internal\Message
{
    /**
     * Highly recommended for logged-in users. Unique identifier for logged-in
     * user, such as a user name. Don't set for anonymous users.
     * Always use a hashed value for this ID.
     * Don't set the field to the same fixed ID for different users. This mixes
     * the event history of those users together, which results in degraded
     * model quality.
     * The field must be a UTF-8 encoded string with a length limit of 128
     * characters. Otherwise, an INVALID_ARGUMENT error is returned.
     *
     * Generated from protobuf field <code>string user_id = 1;</code>
     */
    private $user_id = '';
    /**
     * The end user's IP address. This field is used to extract location
     * information for personalization.
     * This field must be either an IPv4 address (e.g. "104.133.9.80") or an IPv6
     * address (e.g. "2001:0db8:85a3:0000:0000:8a2e:0370:7334"). Otherwise, an
     * INVALID_ARGUMENT error is returned.
     * This should not be set when:
     * * setting
     * [SearchRequest.user_info][google.cloud.retail.v2.SearchRequest.user_info].
     * * using the JavaScript tag in
     * [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent]
     * or if
     * [direct_user_request][google.cloud.retail.v2.UserInfo.direct_user_request]
     * is set.
     *
     * Generated from protobuf field <code>string ip_address = 2;</code>
     */
    private $ip_address = '';
    /**
     * User agent as included in the HTTP header. Required for getting
     * [SearchResponse.sponsored_results][google.cloud.retail.v2.SearchResponse.sponsored_results].
     * The field must be a UTF-8 encoded string with a length limit of 1,000
     * characters. Otherwise, an INVALID_ARGUMENT error is returned.
     * This should not be set when using the client side event reporting with
     * GTM or JavaScript tag in
     * [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent]
     * or if
     * [direct_user_request][google.cloud.retail.v2.UserInfo.direct_user_request]
     * is set.
     *
     * Generated from protobuf field <code>string user_agent = 3;</code>
     */
    private $user_agent = '';
    /**
     * True if the request is made directly from the end user, in which case the
     * [ip_address][google.cloud.retail.v2.UserInfo.ip_address] and
     * [user_agent][google.cloud.retail.v2.UserInfo.user_agent] can be populated
     * from the HTTP request. This flag should be set only if the API request is
     * made directly from the end user such as a mobile app (and not if a gateway
     * or a server is processing and pushing the user events).
     * This should not be set when using the JavaScript tag in
     * [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent].
     *
     * Generated from protobuf field <code>bool direct_user_request = 4;</code>
     */
    private $direct_user_request = false;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $user_id
     *           Highly recommended for logged-in users. Unique identifier for logged-in
     *           user, such as a user name. Don't set for anonymous users.
     *           Always use a hashed value for this ID.
     *           Don't set the field to the same fixed ID for different users. This mixes
     *           the event history of those users together, which results in degraded
     *           model quality.
     *           The field must be a UTF-8 encoded string with a length limit of 128
     *           characters. Otherwise, an INVALID_ARGUMENT error is returned.
     *     @type string $ip_address
     *           The end user's IP address. This field is used to extract location
     *           information for personalization.
     *           This field must be either an IPv4 address (e.g. "104.133.9.80") or an IPv6
     *           address (e.g. "2001:0db8:85a3:0000:0000:8a2e:0370:7334"). Otherwise, an
     *           INVALID_ARGUMENT error is returned.
     *           This should not be set when:
     *           * setting
     *           [SearchRequest.user_info][google.cloud.retail.v2.SearchRequest.user_info].
     *           * using the JavaScript tag in
     *           [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent]
     *           or if
     *           [direct_user_request][google.cloud.retail.v2.UserInfo.direct_user_request]
     *           is set.
     *     @type string $user_agent
     *           User agent as included in the HTTP header. Required for getting
     *           [SearchResponse.sponsored_results][google.cloud.retail.v2.SearchResponse.sponsored_results].
     *           The field must be a UTF-8 encoded string with a length limit of 1,000
     *           characters. Otherwise, an INVALID_ARGUMENT error is returned.
     *           This should not be set when using the client side event reporting with
     *           GTM or JavaScript tag in
     *           [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent]
     *           or if
     *           [direct_user_request][google.cloud.retail.v2.UserInfo.direct_user_request]
     *           is set.
     *     @type bool $direct_user_request
     *           True if the request is made directly from the end user, in which case the
     *           [ip_address][google.cloud.retail.v2.UserInfo.ip_address] and
     *           [user_agent][google.cloud.retail.v2.UserInfo.user_agent] can be populated
     *           from the HTTP request. This flag should be set only if the API request is
     *           made directly from the end user such as a mobile app (and not if a gateway
     *           or a server is processing and pushing the user events).
     *           This should not be set when using the JavaScript tag in
     *           [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent].
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Retail\V2\Common::initOnce();
        parent::__construct($data);
    }

    /**
     * Highly recommended for logged-in users. Unique identifier for logged-in
     * user, such as a user name. Don't set for anonymous users.
     * Always use a hashed value for this ID.
     * Don't set the field to the same fixed ID for different users. This mixes
     * the event history of those users together, which results in degraded
     * model quality.
     * The field must be a UTF-8 encoded string with a length limit of 128
     * characters. Otherwise, an INVALID_ARGUMENT error is returned.
     *
     * Generated from protobuf field <code>string user_id = 1;</code>
     * @return string
     */
    public function getUserId()
    {
        return $this->user_id;
    }

    /**
     * Highly recommended for logged-in users. Unique identifier for logged-in
     * user, such as a user name. Don't set for anonymous users.
     * Always use a hashed value for this ID.
     * Don't set the field to the same fixed ID for different users. This mixes
     * the event history of those users together, which results in degraded
     * model quality.
     * The field must be a UTF-8 encoded string with a length limit of 128
     * characters. Otherwise, an INVALID_ARGUMENT error is returned.
     *
     * Generated from protobuf field <code>string user_id = 1;</code>
     * @param string $var
     * @return $this
     */
    public function setUserId($var)
    {
        GPBUtil::checkString($var, True);
        $this->user_id = $var;

        return $this;
    }

    /**
     * The end user's IP address. This field is used to extract location
     * information for personalization.
     * This field must be either an IPv4 address (e.g. "104.133.9.80") or an IPv6
     * address (e.g. "2001:0db8:85a3:0000:0000:8a2e:0370:7334"). Otherwise, an
     * INVALID_ARGUMENT error is returned.
     * This should not be set when:
     * * setting
     * [SearchRequest.user_info][google.cloud.retail.v2.SearchRequest.user_info].
     * * using the JavaScript tag in
     * [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent]
     * or if
     * [direct_user_request][google.cloud.retail.v2.UserInfo.direct_user_request]
     * is set.
     *
     * Generated from protobuf field <code>string ip_address = 2;</code>
     * @return string
     */
    public function getIpAddress()
    {
        return $this->ip_address;
    }

    /**
     * The end user's IP address. This field is used to extract location
     * information for personalization.
     * This field must be either an IPv4 address (e.g. "104.133.9.80") or an IPv6
     * address (e.g. "2001:0db8:85a3:0000:0000:8a2e:0370:7334"). Otherwise, an
     * INVALID_ARGUMENT error is returned.
     * This should not be set when:
     * * setting
     * [SearchRequest.user_info][google.cloud.retail.v2.SearchRequest.user_info].
     * * using the JavaScript tag in
     * [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent]
     * or if
     * [direct_user_request][google.cloud.retail.v2.UserInfo.direct_user_request]
     * is set.
     *
     * Generated from protobuf field <code>string ip_address = 2;</code>
     * @param string $var
     * @return $this
     */
    public function setIpAddress($var)
    {
        GPBUtil::checkString($var, True);
        $this->ip_address = $var;

        return $this;
    }

    /**
     * User agent as included in the HTTP header. Required for getting
     * [SearchResponse.sponsored_results][google.cloud.retail.v2.SearchResponse.sponsored_results].
     * The field must be a UTF-8 encoded string with a length limit of 1,000
     * characters. Otherwise, an INVALID_ARGUMENT error is returned.
     * This should not be set when using the client side event reporting with
     * GTM or JavaScript tag in
     * [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent]
     * or if
     * [direct_user_request][google.cloud.retail.v2.UserInfo.direct_user_request]
     * is set.
     *
     * Generated from protobuf field <code>string user_agent = 3;</code>
     * @return string
     */
    public function getUserAgent()
    {
        return $this->user_agent;
    }

    /**
     * User agent as included in the HTTP header. Required for getting
     * [SearchResponse.sponsored_results][google.cloud.retail.v2.SearchResponse.sponsored_results].
     * The field must be a UTF-8 encoded string with a length limit of 1,000
     * characters. Otherwise, an INVALID_ARGUMENT error is returned.
     * This should not be set when using the client side event reporting with
     * GTM or JavaScript tag in
     * [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent]
     * or if
     * [direct_user_request][google.cloud.retail.v2.UserInfo.direct_user_request]
     * is set.
     *
     * Generated from protobuf field <code>string user_agent = 3;</code>
     * @param string $var
     * @return $this
     */
    public function setUserAgent($var)
    {
        GPBUtil::checkString($var, True);
        $this->user_agent = $var;

        return $this;
    }

    /**
     * True if the request is made directly from the end user, in which case the
     * [ip_address][google.cloud.retail.v2.UserInfo.ip_address] and
     * [user_agent][google.cloud.retail.v2.UserInfo.user_agent] can be populated
     * from the HTTP request. This flag should be set only if the API request is
     * made directly from the end user such as a mobile app (and not if a gateway
     * or a server is processing and pushing the user events).
     * This should not be set when using the JavaScript tag in
     * [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent].
     *
     * Generated from protobuf field <code>bool direct_user_request = 4;</code>
     * @return bool
     */
    public function getDirectUserRequest()
    {
        return $this->direct_user_request;
    }

    /**
     * True if the request is made directly from the end user, in which case the
     * [ip_address][google.cloud.retail.v2.UserInfo.ip_address] and
     * [user_agent][google.cloud.retail.v2.UserInfo.user_agent] can be populated
     * from the HTTP request. This flag should be set only if the API request is
     * made directly from the end user such as a mobile app (and not if a gateway
     * or a server is processing and pushing the user events).
     * This should not be set when using the JavaScript tag in
     * [UserEventService.CollectUserEvent][google.cloud.retail.v2.UserEventService.CollectUserEvent].
     *
     * Generated from protobuf field <code>bool direct_user_request = 4;</code>
     * @param bool $var
     * @return $this
     */
    public function setDirectUserRequest($var)
    {
        GPBUtil::checkBool($var);
        $this->direct_user_request = $var;

        return $this;
    }

}

