public int GetHashCode(IJsonMember obj) { if (obj == null) { return(0); } unchecked { var hashCode = obj.Id?.GetHashCode() ?? 0; hashCode = (hashCode * 397) ^ (obj.AvatarHash?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (obj.Bio?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (obj.FullName?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (obj.Initials?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (obj.MemberType?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ obj.Status.GetHashCode(); hashCode = (hashCode * 397) ^ (obj.Url?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (obj.Username?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ obj.AvatarSource.GetHashCode(); hashCode = (hashCode * 397) ^ obj.Confirmed.GetHashCode(); hashCode = (hashCode * 397) ^ (obj.Email?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (obj.GravatarHash?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ GetCollectionHashCode(obj.LoginTypes); hashCode = (hashCode * 397) ^ GetCollectionHashCode(obj.Trophies); hashCode = (hashCode * 397) ^ (obj.UploadedAvatarHash?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ GetCollectionHashCode(obj.OneTimeMessagesDismissed); hashCode = (hashCode * 397) ^ obj.Similarity.GetHashCode(); hashCode = (hashCode * 397) ^ (obj.Prefs?.GetHashCode() ?? 0); return(hashCode); } }
private static IJsonMember FindElementInCollection(IJsonMember member, string indexOrKey) { var array = member as JsonArray; if (array != null) { int index; if (int.TryParse(indexOrKey, out index)) { return(array[index]); } } var dictionary = member as JsonObject; if (dictionary != null) { IJsonMember element; if (dictionary.TryGetValue(indexOrKey, out element)) { return(dictionary[indexOrKey]); } } return(null); }
public bool Equals(IJsonMember x, IJsonMember y) { if (x == null && y != null) { return(false); } if (x != null && y == null) { return(false); } if (x == null) { return(true); } return(x.AvatarHash == y.AvatarHash && x.AvatarSource == y.AvatarSource && x.Bio == y.Bio && x.Confirmed == y.Confirmed && x.Email == y.Email && x.FullName == y.FullName && x.GravatarHash == y.GravatarHash && x.Id == y.Id && x.Initials == y.Initials && (x.LoginTypes?.SequenceEqual(y.LoginTypes) ?? true) && x.MemberType == y.MemberType && (x.OneTimeMessagesDismissed?.SequenceEqual(y.OneTimeMessagesDismissed) ?? true) && Instance.Equals(x.Prefs, y.Prefs) && x.Similarity == y.Similarity && x.Status == y.Status && (x.Trophies?.SequenceEqual(y.Trophies) ?? true) && x.UploadedAvatarHash == y.UploadedAvatarHash && x.Url == y.Url && x.Username == y.Username); }
/// <summary> /// Writes member to Json text and returns it. /// </summary> /// <param name="member">The target member.</param> public string Write(IJsonMember member) { WriteMember(member); string result = m_builder.ToString(); Reset(); return(result); }
/// <summary> /// Writes member to Json text and returns it. /// </summary> /// <param name="member">The target member.</param> /// <param name="readable">If true, format to readable layout. Otherwise used compact layout. Default is false.</param> public static string Write(IJsonMember member, bool readable = false) { var writer = new JsonWriter(); string result = writer.Write(member); if (readable) { result = ToReadable(result); } return(result); }
public void FromJson(JsonValue json, JsonSerializer serializer) { if (json.Type != JsonValueType.Object) { return; } var obj = json.Object; Id = obj.TryGetString("id"); MemberCreator = obj.Deserialize <IJsonMember>(serializer, "idMemberCreator"); Data = obj.Deserialize <IJsonNotificationData>(serializer, "data"); Unread = obj.TryGetBoolean("unread"); Type = obj.Deserialize <NotificationType?>(serializer, "type"); Date = obj.Deserialize <DateTime?>(serializer, "date"); }
internal static async Task <string> GetId(TrelloAuthorization auth, CancellationToken ct) { var endpoint = EndpointFactory.Build(EntityRequestType.Service_Read_Me); _myJson = await JsonRepository.Execute <IJsonMember>(auth, endpoint, ct); // If this object exists in the cache already as a regular Member, it needs to be replaced. var meAsMember = TrelloConfiguration.Cache.Find <Member>(_myJson.Id); if (meAsMember != null) { TrelloConfiguration.Cache.Remove(meAsMember); } return(_myJson.Id); }
private static string GetId() { var endpoint = EndpointFactory.Build(EntityRequestType.Service_Read_Me); _myJson = JsonRepository.Execute <IJsonMember>(TrelloAuthorization.Default, endpoint); // If this object exists in the cache already as a regular Member, it needs to be replaced. var meAsMember = TrelloConfiguration.Cache.Find <Member>(m => m.Id == _myJson.Id); if (meAsMember != null) { TrelloConfiguration.Cache.Remove(meAsMember); } return(_myJson.Id); }
/// <summary> /// Finds the value of member by specified path. /// <para>If member cannot be found or value cannot be converted to specified type, returns default value.</para> /// </summary> /// <typeparam name="T">The target type of value.</typeparam> /// <param name="member">The target member for search.</param> /// <param name="path">The path for search of member.</param> /// <param name="defaultValue">The default value, if find was failed.</param> public static T FindValue <T>(IJsonMember member, string path, T defaultValue = default(T)) { var target = Find(member, path); if (target != null) { try { return((T)Convert.ChangeType(target.GetValue(), typeof(T))); } catch { return(defaultValue); } } return(defaultValue); }
public void FromJson(JsonValue json, JsonSerializer serializer) { if (json.Type != JsonValueType.Object) { return; } var obj = json.Object; Id = obj.TryGetString("id"); MemberCreator = obj.Deserialize <IJsonMember>(serializer, "idMemberCreator"); Data = obj.Deserialize <IJsonNotificationData>(serializer, "data"); Unread = obj.TryGetBoolean("unread"); try { Type = obj.Deserialize <NotificationType?>(serializer, "type"); } catch (TargetInvocationException tie) { bool shouldThrow = true; if (tie.InnerException != null && tie.InnerException is ArgumentException ae) { if (!string.IsNullOrWhiteSpace(ae.Message) && ae.Message.StartsWith("Requested value '") && ae.Message.EndsWith("' was not found.")) { // Error parsing notification type - default to Unknown shouldThrow = false; Type = NotificationType.Unknown; } } if (shouldThrow) { throw; } } Date = obj.Deserialize <DateTime?>(serializer, "date"); }
public void FromJson(JsonValue json, JsonSerializer serializer) { if (json.Type != JsonValueType.Object) { return; } var obj = json.Object; Id = obj.TryGetString("id"); MemberCreator = obj.Deserialize <IJsonMember>(serializer, "idMemberCreator"); Data = obj.Deserialize <IJsonNotificationData>(serializer, "data"); Unread = obj.TryGetBoolean("unread"); Type = obj.Deserialize <NotificationType?>(serializer, "type"); #if IOS var dateString = obj.TryGetString("date"); DateTime date; if (DateTime.TryParseExact(dateString, "yyyy-MM-ddThh:mm:ss.fffZ", CultureInfo.CurrentCulture, DateTimeStyles.None, out date)) { Date = date.ToLocalTime(); } #else Date = obj.Deserialize <DateTime?>(serializer, "date"); #endif }
public static IJsonMember Find(IJsonMember member, string path) { var names = path.Split('.'); var target = member; for (int i = 0; i < names.Length; i++) { if (target.MemberType == JsonMemberType.Array || target.MemberType == JsonMemberType.Object) { target = FindElementInCollection(target, names[i]); if (target == null) { return(null); } } else { return(null); } } return(target); }
private void WriteMember(IJsonMember member) { switch (member.MemberType) { case JsonMemberType.Value: { if (member is JsonNull) { WriteNumber("null"); } else { var typeCode = Type.GetTypeCode(member.GetValueType()); switch (typeCode) { case TypeCode.Boolean: { var value = (JsonValue <bool>)member; WriteNumber(value.Value ? bool.TrueString : bool.FalseString); break; } case TypeCode.Byte: case TypeCode.Decimal: case TypeCode.Double: case TypeCode.Int16: case TypeCode.Int32: case TypeCode.Int64: case TypeCode.SByte: case TypeCode.Single: case TypeCode.UInt16: case TypeCode.UInt32: case TypeCode.UInt64: { string value = Convert.ToString(member.GetValue(), CultureInfo.InvariantCulture); WriteNumber(value); break; } case TypeCode.Char: case TypeCode.String: { string value = Convert.ToString(member.GetValue(), CultureInfo.InvariantCulture); WriteString(value); break; } case TypeCode.DateTime: case TypeCode.DBNull: case TypeCode.Empty: case TypeCode.Object: { Debug.LogWarningFormat("Unexpected member value type, member will be skipped: '{0}'.", member); break; } } } break; } case JsonMemberType.Array: { WriteArray((JsonArray)member); break; } case JsonMemberType.Object: { WriteObject((JsonObject)member); break; } } }
private static MemberSearchResult GetResult(IJsonMember json, TrelloAuthorization auth) { return(new MemberSearchResult(json.GetFromCache <Member>(auth), json.Similarity)); }
internal Member(IJsonMember json, TrelloAuthorization auth) : this(json.Id, false, auth) { _context.Merge(json); }
public JsonPair(string name, IJsonMember value) { this.Name = name; this.Value = value; }