Beispiel #1
0
        public static bool IsRearFace(string name)
        {
            if (Transforms == null)
            {
                Transforms = new List <string>();
                if (File.Exists("transforms.txt"))
                {
                    Transforms.AddRange(File.ReadAllLines("transforms.txt"));
                }
            }

            if (Transforms.Contains(name))
            {
                return(true);
            }

            if (NotTransforms.Contains(name))
            {
                return(false);
            }

            var url = $"https://api.scryfall.com/cards/named?exact={name}";

            using (var wc = new WebClient())
            {
                try
                {
                    var     blob = wc.DownloadString(url);
                    var     json = JsonConvert.DeserializeObject(blob) as JObject;
                    JObject face;

                    switch (json.Value <string>("layout"))
                    {
                    case "transform":
                    case "flip":
                        face = json["card_faces"].First(f => f.Value <string>(nameof(name)) == name) as JObject;
                        break;

                    case "meld":
                        face = json;
                        break;

                    case "adventure":
                        face = json["card_faces"].First(f => f.Value <string>(nameof(name)) == name) as JObject;
                        break;

                    default:
                        return(false);
                    }

                    if (!face.TryGetValue("mana_cost", out var cost) || string.IsNullOrEmpty(face.Value <string>("mana_cost")) || face.Value <string>("type_line").Contains("Adventure"))
                    {
                        Transforms.Add(name);
                        try
                        {
                            File.AppendAllLines("transforms.txt", new string[] { name });
                        }
                        catch (IOException)
                        {
                        }
                        return(true);
                    }
                    else
                    {
                        NotTransforms.Add(name);
                        return(false);
                    }
                }
                catch (WebException c)
                {
                    NotTransforms.Add(name);
                    Console.WriteLine(name);
                    SentrySdk.CaptureException(c);
                }

                return(false);
            }
        }