Ejemplo n.º 1
0
 private EventUser MaybeInlineUser(User user, bool inline)
 {
     if (inline)
     {
         return(user == null ? null : EventUser.FromUser(user, _config));
     }
     return(null);
 }
Ejemplo n.º 2
0
        private EventOutput MakeOutputEvent(Event e)
        {
            switch (e)
            {
            case FeatureRequestEvent fe:
                bool inlineUser = _config.InlineUsersInEvents || fe.Debug;
                return(new FeatureRequestEventOutput
                {
                    Kind = fe.Debug ? "debug" : "feature",
                    CreationDate = fe.CreationDate,
                    Key = fe.Key,
                    User = MaybeInlineUser(fe.User, inlineUser),
                    UserKey = MaybeUserKey(fe.User, inlineUser),
                    Version = fe.Version,
                    Variation = fe.Variation,
                    Value = fe.Value,
                    Default = fe.Default,
                    PrereqOf = fe.PrereqOf
                });

            case IdentifyEvent ie:
                return(new IdentifyEventOutput
                {
                    Kind = "identify",
                    CreationDate = e.CreationDate,
                    Key = e.User == null ? null : e.User.Key,
                    User = e.User == null ? null : EventUser.FromUser(e.User, _config)
                });

            case CustomEvent ce:
                return(new CustomEventOutput
                {
                    Kind = "custom",
                    CreationDate = ce.CreationDate,
                    Key = ce.Key,
                    User = MaybeInlineUser(ce.User, _config.InlineUsersInEvents),
                    UserKey = MaybeUserKey(ce.User, _config.InlineUsersInEvents),
                    Data = ce.JsonData
                });

            case IndexEvent ie:
                return(new IndexEventOutput
                {
                    Kind = "index",
                    CreationDate = e.CreationDate,
                    User = EventUser.FromUser(e.User, _config)
                });
            }
            return(null);
        }
        private void WriteUser(User user)
        {
            if (user is null)
            {
                return;
            }
            var eu = EventUser.FromUser(user, _config);

            _jsonWriter.WritePropertyName("user");
            _jsonWriter.WriteStartObject();
            MaybeWriteString("key", eu.Key);
            MaybeWriteString("secondary", eu.SecondaryKey);
            MaybeWriteString("ip", eu.IpAddress);
            MaybeWriteString("country", eu.Country);
            MaybeWriteString("firstName", eu.FirstName);
            MaybeWriteString("lastName", eu.LastName);
            MaybeWriteString("name", eu.Name);
            MaybeWriteString("avatar", eu.Avatar);
            MaybeWriteString("email", eu.Email);
            if (eu.Anonymous.HasValue)
            {
                _jsonWriter.WritePropertyName("anonymous");
                _jsonWriter.WriteValue(eu.Anonymous.Value);
            }
            if (eu.Custom != null && eu.Custom.Count > 0)
            {
                _jsonWriter.WritePropertyName("custom");
                _jsonWriter.WriteStartObject();
                foreach (var kv in eu.Custom)
                {
                    _jsonWriter.WritePropertyName(kv.Key);
                    _jsonSerializer.Serialize(_jsonWriter, kv.Value);
                }
                _jsonWriter.WriteEndObject();
            }
            if (eu.PrivateAttrs != null)
            {
                _jsonWriter.WritePropertyName("privateAttrs");
                _jsonWriter.WriteStartArray();
                foreach (var a in eu.PrivateAttrs)
                {
                    _jsonWriter.WriteValue(a);
                }
                _jsonWriter.WriteEndArray();
            }
            _jsonWriter.WriteEndObject();
        }