示例#1
0
 public SubredditImage(Reddit reddit, SubredditStyle subredditStyle,
     string cssLink, string name)
 {
     Reddit = reddit;
     SubredditStyle = subredditStyle;
     Name = name;
     CssLink = cssLink;
 }
示例#2
0
 public SubredditImage(Reddit reddit, SubredditStyle subredditStyle,
                       string cssLink, string name)
 {
     Reddit         = reddit;
     SubredditStyle = subredditStyle;
     Name           = name;
     CssLink        = cssLink;
 }
 public SubredditImage(Reddit reddit, SubredditStyle subredditStyle,
     string cssLink, string name, IWebAgent webAgent)
 {
     Reddit = reddit;
     WebAgent = webAgent;
     SubredditStyle = subredditStyle;
     Name = name;
     CssLink = cssLink;
 }
示例#4
0
 public SubredditImage(Reddit reddit, SubredditStyle subredditStyle,
                       string cssLink, string name, IWebAgent webAgent)
 {
     Reddit         = reddit;
     WebAgent       = webAgent;
     SubredditStyle = subredditStyle;
     Name           = name;
     CssLink        = cssLink;
 }
 public SubredditImage(Reddit reddit, SubredditStyle subreddit,
     string cssLink, string name, string url, IWebAgent webAgent)
     : this(reddit, subreddit, cssLink, name, webAgent)
 {
     Url = url;
     // Handle legacy image urls
     // http://thumbs.reddit.com/FULLNAME_NUMBER.png
     int discarded;
     if (int.TryParse(url, out discarded))
         Url = string.Format("http://thumbs.reddit.com/{0}_{1}.png", subreddit.Subreddit.FullName, url);
 }
示例#6
0
        public SubredditImage(Reddit reddit, SubredditStyle subreddit,
                              string cssLink, string name, string url)
            : this(reddit, subreddit, cssLink, name)
        {
            Url = url;
            // Handle legacy image urls
            // http://thumbs.reddit.com/FULLNAME_NUMBER.png
            int discarded;

            if (int.TryParse(url, out discarded))
            {
                Url = string.Format("http://thumbs.reddit.com/{0}_{1}.png", subreddit.Subreddit.FullName, url);
            }
        }
        public void SubredditImageTest()
        {
            //var sub = new Mock<Things.Subreddit>();
            Things.Subreddit sub = new Things.Subreddit();
            sub.FullName = "TestSub";

            var subStyle = new SubredditStyle(null, sub, null);

            SubredditImage img = new SubredditImage(null, subStyle, "link", "imagename", "12345", null);

            Assert.IsTrue(img.Url.ToString() == "http://thumbs.reddit.com/TestSub_12345.png");

            img = new SubredditImage(null, subStyle, "link", "imagename", "https://testuri.uri/", null);
            Assert.IsTrue(img.Url.ToString() == "https://testuri.uri/");
        }
示例#8
0
        public void Execute(string[] args, Reddit reddit)
        {
            if (args.Length != 3)
            {
                Console.WriteLine("Invalid usage. See 'srutil help backup' for more information.");
                return;
            }
            var subreddit = reddit.GetSubreddit(args[1]);
            // Verify archive
            var settings   = new SubredditSettings(reddit, subreddit);
            var styles     = new SubredditStyle(reddit, subreddit);
            var serializer = new JsonSerializer();

            using (var file = new ZipFile(File.OpenRead(args[2])))
            {
                if (file.GetEntry("stylesheet.css") == null ||
                    file.GetEntry("settings.json") == null ||
                    file.GetEntry("flair.json") == null)
                {
                    Console.WriteLine("{0} is not a valid subreddit backup.", args[2]);
                    return;
                }
                Console.WriteLine("Resetting {0} to default settings...", subreddit.DisplayName);
                var reset = new Reset();
                reset.Execute(new[] { "reset", subreddit.DisplayName, "all" }, reddit);
                foreach (ZipEntry entry in file)
                {
                    if (!entry.IsFile)
                    {
                        continue;
                    }
                    if (entry.Name == "stylesheet.css")
                    {
                        var stream = new StreamReader(file.GetInputStream(entry));
                        styles.CSS = stream.ReadToEnd();
                        // We udpate the CSS last to avoid errors with images
                    }
                    else if (entry.Name == "settings.json")
                    {
                        Console.WriteLine("Restoring settings...");
                        var stream = new StreamReader(file.GetInputStream(entry));
                        serializer.Populate(new JsonTextReader(stream), settings);
                        settings.UpdateSettings();
                    }
                    else if (entry.Name == "flair.json") // TODO: Link flair templates, selected flair for users
                    {
                        var stream = new StreamReader(file.GetInputStream(entry));
                        var flair  = serializer.Deserialize <UserFlairTemplate[]>(new JsonTextReader(stream));
                        if (flair.Any())
                        {
                            Console.WriteLine("Restoring user flair templates...");
                            int progress = 1;
                            int left = Console.CursorLeft; int top = Console.CursorTop;
                            foreach (var item in flair)
                            {
                                subreddit.AddFlairTemplate(item.CssClass, FlairType.User, item.Text, true);
                                Console.CursorLeft = left; Console.CursorTop = top;
                                Console.WriteLine("{0}/{1}", progress++, flair.Length);
                            }
                        }
                    }
                    else if (entry.Name == "header.png" || entry.Name == "header.jpg")
                    {
                        var image = Path.GetFileName(entry.Name);
                        Console.WriteLine("Restoring header image...");
                        var stream = file.GetInputStream(entry);
                        var data   = new byte[entry.Size];
                        stream.Read(data, 0, (int)entry.Size);
                        subreddit.UploadHeaderImage(entry.Name,
                                                    Path.GetExtension(entry.Name) == "png" ? ImageType.PNG : ImageType.JPEG, data);
                    }
                    else if (entry.Name.StartsWith("images/"))
                    {
                        var image = Path.GetFileName(entry.Name);
                        Console.WriteLine("Restoring image: " + image);
                        var stream = file.GetInputStream(entry);
                        var data   = new byte[entry.Size];
                        stream.Read(data, 0, (int)entry.Size);
                        styles.UploadImage(Path.GetFileNameWithoutExtension(image),
                                           Path.GetExtension(image) == ".png" ? ImageType.PNG : ImageType.JPEG, data);
                    }
                }
                Console.WriteLine("Restoring CSS...");
                styles.UpdateCss();
                Console.WriteLine("Finished restoring {0}", subreddit.DisplayName);
            }
        }