<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/recommendationengine/v1beta1/user_event.proto

namespace Google\Cloud\RecommendationEngine\V1beta1;

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

/**
 * Information of end users.
 *
 * Generated from protobuf message <code>google.cloud.recommendationengine.v1beta1.UserInfo</code>
 */
class UserInfo extends \Google\Protobuf\Internal\Message
{
    /**
     * Required. A unique identifier for tracking visitors with a length limit of
     * 128 bytes.
     * For example, this could be implemented with a http cookie, which should be
     * able to uniquely identify a visitor on a single device. This unique
     * identifier should not change if the visitor log in/out of the website.
     * Maximum length 128 bytes. Cannot be empty.
     *
     * Generated from protobuf field <code>string visitor_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private $visitor_id = '';
    /**
     * Optional. Unique identifier for logged-in user with a length limit of 128
     * bytes. Required only for logged-in users.
     *
     * Generated from protobuf field <code>string user_id = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    private $user_id = '';
    /**
     * Optional. IP address of the user. This could be either IPv4 (e.g. 104.133.9.80) or
     * IPv6 (e.g. 2001:0db8:85a3:0000:0000:8a2e:0370:7334). This should *not* be
     * set when using the javascript pixel or if `direct_user_request` is set.
     * Used to extract location information for personalization.
     *
     * Generated from protobuf field <code>string ip_address = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    private $ip_address = '';
    /**
     * Optional. User agent as included in the HTTP header. UTF-8 encoded string
     * with a length limit of 1 KiB.
     * This should *not* be set when using the JavaScript pixel or if
     * `directUserRequest` is set.
     *
     * Generated from protobuf field <code>string user_agent = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    private $user_agent = '';
    /**
     * Optional. Indicates if the request is made directly from the end user
     * in which case the user_agent and ip_address fields can be populated
     * from the HTTP request. This should *not* be set when using the javascript
     * pixel. 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).
     *
     * Generated from protobuf field <code>bool direct_user_request = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    private $direct_user_request = false;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $visitor_id
     *           Required. A unique identifier for tracking visitors with a length limit of
     *           128 bytes.
     *           For example, this could be implemented with a http cookie, which should be
     *           able to uniquely identify a visitor on a single device. This unique
     *           identifier should not change if the visitor log in/out of the website.
     *           Maximum length 128 bytes. Cannot be empty.
     *     @type string $user_id
     *           Optional. Unique identifier for logged-in user with a length limit of 128
     *           bytes. Required only for logged-in users.
     *     @type string $ip_address
     *           Optional. IP address of the user. This could be either IPv4 (e.g. 104.133.9.80) or
     *           IPv6 (e.g. 2001:0db8:85a3:0000:0000:8a2e:0370:7334). This should *not* be
     *           set when using the javascript pixel or if `direct_user_request` is set.
     *           Used to extract location information for personalization.
     *     @type string $user_agent
     *           Optional. User agent as included in the HTTP header. UTF-8 encoded string
     *           with a length limit of 1 KiB.
     *           This should *not* be set when using the JavaScript pixel or if
     *           `directUserRequest` is set.
     *     @type bool $direct_user_request
     *           Optional. Indicates if the request is made directly from the end user
     *           in which case the user_agent and ip_address fields can be populated
     *           from the HTTP request. This should *not* be set when using the javascript
     *           pixel. 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).
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Recommendationengine\V1Beta1\UserEvent::initOnce();
        parent::__construct($data);
    }

    /**
     * Required. A unique identifier for tracking visitors with a length limit of
     * 128 bytes.
     * For example, this could be implemented with a http cookie, which should be
     * able to uniquely identify a visitor on a single device. This unique
     * identifier should not change if the visitor log in/out of the website.
     * Maximum length 128 bytes. Cannot be empty.
     *
     * Generated from protobuf field <code>string visitor_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return string
     */
    public function getVisitorId()
    {
        return $this->visitor_id;
    }

    /**
     * Required. A unique identifier for tracking visitors with a length limit of
     * 128 bytes.
     * For example, this could be implemented with a http cookie, which should be
     * able to uniquely identify a visitor on a single device. This unique
     * identifier should not change if the visitor log in/out of the website.
     * Maximum length 128 bytes. Cannot be empty.
     *
     * Generated from protobuf field <code>string visitor_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param string $var
     * @return $this
     */
    public function setVisitorId($var)
    {
        GPBUtil::checkString($var, True);
        $this->visitor_id = $var;

        return $this;
    }

    /**
     * Optional. Unique identifier for logged-in user with a length limit of 128
     * bytes. Required only for logged-in users.
     *
     * Generated from protobuf field <code>string user_id = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getUserId()
    {
        return $this->user_id;
    }

    /**
     * Optional. Unique identifier for logged-in user with a length limit of 128
     * bytes. Required only for logged-in users.
     *
     * Generated from protobuf field <code>string user_id = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setUserId($var)
    {
        GPBUtil::checkString($var, True);
        $this->user_id = $var;

        return $this;
    }

    /**
     * Optional. IP address of the user. This could be either IPv4 (e.g. 104.133.9.80) or
     * IPv6 (e.g. 2001:0db8:85a3:0000:0000:8a2e:0370:7334). This should *not* be
     * set when using the javascript pixel or if `direct_user_request` is set.
     * Used to extract location information for personalization.
     *
     * Generated from protobuf field <code>string ip_address = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getIpAddress()
    {
        return $this->ip_address;
    }

    /**
     * Optional. IP address of the user. This could be either IPv4 (e.g. 104.133.9.80) or
     * IPv6 (e.g. 2001:0db8:85a3:0000:0000:8a2e:0370:7334). This should *not* be
     * set when using the javascript pixel or if `direct_user_request` is set.
     * Used to extract location information for personalization.
     *
     * Generated from protobuf field <code>string ip_address = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setIpAddress($var)
    {
        GPBUtil::checkString($var, True);
        $this->ip_address = $var;

        return $this;
    }

    /**
     * Optional. User agent as included in the HTTP header. UTF-8 encoded string
     * with a length limit of 1 KiB.
     * This should *not* be set when using the JavaScript pixel or if
     * `directUserRequest` is set.
     *
     * Generated from protobuf field <code>string user_agent = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getUserAgent()
    {
        return $this->user_agent;
    }

    /**
     * Optional. User agent as included in the HTTP header. UTF-8 encoded string
     * with a length limit of 1 KiB.
     * This should *not* be set when using the JavaScript pixel or if
     * `directUserRequest` is set.
     *
     * Generated from protobuf field <code>string user_agent = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setUserAgent($var)
    {
        GPBUtil::checkString($var, True);
        $this->user_agent = $var;

        return $this;
    }

    /**
     * Optional. Indicates if the request is made directly from the end user
     * in which case the user_agent and ip_address fields can be populated
     * from the HTTP request. This should *not* be set when using the javascript
     * pixel. 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).
     *
     * Generated from protobuf field <code>bool direct_user_request = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return bool
     */
    public function getDirectUserRequest()
    {
        return $this->direct_user_request;
    }

    /**
     * Optional. Indicates if the request is made directly from the end user
     * in which case the user_agent and ip_address fields can be populated
     * from the HTTP request. This should *not* be set when using the javascript
     * pixel. 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).
     *
     * Generated from protobuf field <code>bool direct_user_request = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param bool $var
     * @return $this
     */
    public function setDirectUserRequest($var)
    {
        GPBUtil::checkBool($var);
        $this->direct_user_request = $var;

        return $this;
    }

}

