示例#1
0
 public static VrcId NewVrcId(VrcIdType t)
 {
     return(new VrcId
     {
         IdType = t,
         guid = Guid.NewGuid()
     });
 }
示例#2
0
        public VrcId(string str)
        {
            if (str == null)
            {
                throw new ArgumentNullException(nameof(str));
            }

            if (str == "none")
            {
                guid   = Guid.Empty;
                IdType = VrcIdType.None;
                return;
            }

            if (str == "offline")
            {
                guid   = Guid.Empty;
                IdType = VrcIdType.Offline;
                return;
            }

            string[] elements = str.Split('_');
            if (elements.Length != 2)
            {
                if (str.Length != 10)
                {
                    throw new ArgumentException("Input guid must be a valid Guid or 10 a char b64 string!");
                }
                IdType = VrcIdType.LegacyUser;
                guid   = new Guid(Convert.FromBase64String($"AAAAAAAAAAAA{str}=="));
                return;
            }

            switch (elements[0])
            {
            case "avtr":                     // AvatarId
                IdType = VrcIdType.Avatar;
                break;

            case "usr":                     // UserId
                IdType = VrcIdType.User;
                break;

            case "wrld":                     // Post-2018 WorldId prefix
                IdType = VrcIdType.World;
                break;

            case "wld":                     // Pre-2018 WorldId prefix
                IdType = VrcIdType.LegacyWorld;
                break;

            case "unp":                     // UnityPackageId
                IdType = VrcIdType.UnityPackage;
                break;

            case "pmod":                     // Player moderation
                IdType = VrcIdType.PlayerModeration;
                break;

            case "not":                     // Notification
                IdType = VrcIdType.Not;
                break;

            case "authcookie":                     // Authcookie
                IdType = VrcIdType.AuthCookie;
                break;

            case "file":                     // File
                IdType = VrcIdType.AuthCookie;
                break;

            default:
                throw new ArgumentException("VrcId prefix is invalid!");
            }

            guid = new Guid(elements[1]);
        }
示例#3
0
 public VrcId(VrcIdType type, string id)
 {
     IdType = type;
     guid   = new Guid(id);
 }
示例#4
0
 public VrcId(VrcIdType type, Guid id)
 {
     IdType = type;
     guid   = id;
 }