├── src
└── TumblThree
│ ├── TumblThree.Presentation
│ ├── Resources
│ │ ├── Images
│ │ │ ├── About.png
│ │ │ ├── Pause.png
│ │ │ ├── Play.png
│ │ │ ├── Scan.png
│ │ │ ├── Stop.png
│ │ │ ├── AddBlog.png
│ │ │ ├── AddQueue.png
│ │ │ ├── Download.png
│ │ │ ├── Explorer.png
│ │ │ ├── Resume.png
│ │ │ ├── Settings.png
│ │ │ ├── Tumblr.ico
│ │ │ ├── Tumblr.png
│ │ │ ├── Clipboard.png
│ │ │ ├── RemoveBlog.png
│ │ │ └── RemoveQueue.png
│ │ ├── TextBoxResources.xaml
│ │ ├── LayoutResources.xaml
│ │ ├── BrushResources.xaml
│ │ └── ConverterResources.xaml
│ ├── Controls
│ │ ├── RatingItemState.cs
│ │ ├── HorizontalFlyoutAlignment.cs
│ │ ├── SuperToolTip.cs
│ │ └── FocusAdvancement.cs
│ ├── DesignData
│ │ ├── MockView.cs
│ │ ├── SampleBlogFile.cs
│ │ ├── SampleAboutViewModel.cs
│ │ ├── MockSelectionService.cs
│ │ ├── MockManagerService.cs
│ │ ├── SampleShellViewModel.cs
│ │ ├── SampleDetailsViewModel.cs
│ │ └── MockShellService.cs
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── CodeAnalysisDictionary.xml
│ │ ├── Settings.settings
│ │ └── Settings.Designer.cs
│ ├── Services
│ │ ├── ClipboardService.cs
│ │ ├── PresentationService.cs
│ │ └── EnvironmentService.cs
│ ├── Themes
│ │ ├── Generic.xaml
│ │ └── Generic
│ │ │ └── SuperToolTip.xaml
│ ├── Converters
│ │ ├── ConverterHelper.cs
│ │ ├── DateToDisplayValueConverter.cs
│ │ ├── TotalImageConverter.cs
│ │ ├── IntToDisplayValueConverter.cs
│ │ ├── BlogTitleConverter.cs
│ │ ├── NullToVisibilityConverter.cs
│ │ ├── StatusToBoolConverter.cs
│ │ ├── ItemsCountConverter.cs
│ │ ├── BlogQueueProgressConverter.cs
│ │ ├── IsLessThanConverter.cs
│ │ ├── IsQueueItemCrawlingMultiConverter.cs
│ │ ├── InverseBooleanConverter.cs
│ │ ├── BlogQueueInfoConverter.cs
│ │ ├── IsBlogInQueueMultiConverter.cs
│ │ ├── NullImageConverter.cs
│ │ ├── ErrorMessagesConverter.cs
│ │ ├── StringListToStringConverter.cs
│ │ ├── WindowTitleConverter.cs
│ │ ├── DetailsProgressConverter.cs
│ │ ├── RatingToStarsConverter.cs
│ │ └── BlogtypeToDisplayValueConverter.cs
│ ├── ValidationRules
│ │ ├── TimeSpanRule.cs
│ │ ├── IntRangeRule.cs
│ │ └── BandwidthRangeRule.cs
│ ├── Views
│ │ ├── CrawlerView.xaml.cs
│ │ ├── AboutView.xaml.cs
│ │ ├── DetailsViews
│ │ │ ├── DetailsAllView.xaml.cs
│ │ │ ├── DetailsTumblrBlogView.xaml.cs
│ │ │ ├── DetailsTumblrSearchView.xaml.cs
│ │ │ ├── DetailsTumblrLikedByView.xaml.cs
│ │ │ ├── DetailsTumblrTagSearchView.xaml.cs
│ │ │ └── DetailsTumblrHiddenBlogView.xaml.cs
│ │ ├── AuthenticateView.xaml
│ │ ├── SettingsView.xaml.cs
│ │ ├── FullScreenMediaView.xaml.cs
│ │ └── ShellWindow.xaml.cs
│ ├── DispatcherHelper.cs
│ ├── App.xaml
│ ├── App.config
│ └── Extensions
│ │ └── EnumBindingSourceExtension.cs
│ ├── TumblThree.Applications
│ ├── Views
│ │ ├── IQueueView.cs
│ │ ├── ICrawlerView.cs
│ │ ├── IDetailsView.cs
│ │ ├── IAboutView.cs
│ │ ├── IFullScreenMediaView.cs
│ │ ├── ISettingsView.cs
│ │ ├── IManagerView.cs
│ │ ├── IAuthenticateView.cs
│ │ └── IShellView.cs
│ ├── DataModels
│ │ ├── TumblrCrawlerData
│ │ │ ├── ITumblrCrawlerData.cs
│ │ │ └── TumblrCrawlerData.cs
│ │ ├── DownloadProgress.cs
│ │ ├── IPostQueue.cs
│ │ ├── TumblrPosts
│ │ │ ├── LinkPost.cs
│ │ │ ├── TextPost.cs
│ │ │ ├── AudioPost.cs
│ │ │ ├── PhotoPost.cs
│ │ │ ├── QuotePost.cs
│ │ │ ├── VideoPost.cs
│ │ │ ├── AnswerPost.cs
│ │ │ ├── AudioMetaPost.cs
│ │ │ ├── PhotoMetaPost.cs
│ │ │ ├── VideoMetaPost.cs
│ │ │ ├── ExternalPhotoPost.cs
│ │ │ ├── ExternalVideoPost.cs
│ │ │ ├── ConversationPost.cs
│ │ │ └── TumblrPost.cs
│ │ ├── PostQueue.cs
│ │ └── TumblrSearchJson.cs
│ ├── Services
│ │ ├── IClipboardService.cs
│ │ ├── IEnvironmentService.cs
│ │ ├── IConfirmTumblrPrivacyConsent.cs
│ │ ├── ISettingsService.cs
│ │ ├── ISettingsProvider.cs
│ │ ├── IDetailsService.cs
│ │ ├── ILoginService.cs
│ │ ├── ApplicationBusyContext.cs
│ │ ├── CrawlerServiceExtensions.cs
│ │ ├── IApplicationUpdateService.cs
│ │ ├── ISelectionService.cs
│ │ ├── ISharedCookieService.cs
│ │ ├── IFolderBrowserDialog.cs
│ │ ├── ShellServiceExtensions.cs
│ │ ├── IBlogService.cs
│ │ ├── IManagerService.cs
│ │ ├── IPresentationService.cs
│ │ ├── IWebRequestFactory.cs
│ │ ├── SelectionService.cs
│ │ ├── IShellService.cs
│ │ ├── ICrawlerService.cs
│ │ └── ManagerService.cs
│ ├── Properties
│ │ ├── Settings.settings
│ │ ├── AssemblyInfo.cs
│ │ ├── ManagerSettings.cs
│ │ ├── CodeAnalysisDictionary.xml
│ │ ├── Settings.Designer.cs
│ │ └── QueueSettings.cs
│ ├── Parser
│ │ ├── ITumblrParser.cs
│ │ ├── ICatBoxParser.cs
│ │ ├── IUguuParser.cs
│ │ ├── ISafeMoeParser.cs
│ │ ├── ILoliSafeParser.cs
│ │ ├── IMixtapeParser.cs
│ │ ├── IWebmshareParser.cs
│ │ ├── IGfycatParser.cs
│ │ ├── IImgurParser.cs
│ │ ├── ITumblrToText.cs
│ │ ├── TumblrParser.cs
│ │ ├── ITumblrApiXmlToText.cs
│ │ ├── UguuParser.cs
│ │ ├── SafeMoeParser.cs
│ │ ├── CatBoxParser.cs
│ │ ├── LoliSafeParser.cs
│ │ ├── MixtapeParser.cs
│ │ ├── WebmshareParser.cs
│ │ ├── TumblrSvcJsonToJson.cs
│ │ └── ImgurParser.cs
│ ├── Downloader
│ │ ├── ICrawlerDataDownloader.cs
│ │ └── IDownloader.cs
│ ├── Crawler
│ │ ├── ITumblrBlogDetector.cs
│ │ ├── ICrawler.cs
│ │ └── ICrawlerFactory.cs
│ ├── ViewModels
│ │ ├── IDetailsViewModel.cs
│ │ ├── FullScreenMediaViewModel.cs
│ │ ├── CrawlerViewModel.cs
│ │ └── AuthenticateViewModel.cs
│ ├── App.config
│ ├── Extensions
│ │ └── TaskTimeoutExtension.cs
│ ├── Data
│ │ ├── SupportedFileTypes.cs
│ │ └── StringListConverter.cs
│ └── ProgressThrottler.cs
│ ├── TumblThree.Domain
│ ├── Models
│ │ ├── ICrawlerData.cs
│ │ ├── IBlogFactory.cs
│ │ ├── BlogTypes.cs
│ │ ├── Files
│ │ │ ├── TumblrBlogFiles.cs
│ │ │ ├── TumblrHiddenBlogFiles.cs
│ │ │ ├── TumblrLikedByBlogFiles.cs
│ │ │ ├── TumblrSearchBlogFiles.cs
│ │ │ ├── TumblrTagSearchBlogFiles.cs
│ │ │ └── IFiles.cs
│ │ ├── IUrlValidator.cs
│ │ ├── MetadataType.cs
│ │ ├── UguuTypes.cs
│ │ ├── CatboxTypes.cs
│ │ ├── LoliSafeTypes.cs
│ │ ├── SafeMoeTypes.cs
│ │ ├── MixtapeTypes.cs
│ │ ├── WebmshareTypes.cs
│ │ ├── GfycatType.cs
│ │ ├── Blogs
│ │ │ ├── TumblrBlog.cs
│ │ │ ├── TumblrHiddenBlog.cs
│ │ │ ├── TumblrLikedByBlog.cs
│ │ │ ├── TumblrTagSearchBlog.cs
│ │ │ └── TumblrSearchBlog.cs
│ │ ├── PostCounter.cs
│ │ ├── BlogFactory.cs
│ │ └── UrlValidator.cs
│ ├── Properties
│ │ ├── Settings.settings
│ │ ├── AssemblyInfo.cs
│ │ ├── CodeAnalysisDictionary.xml
│ │ └── Settings.Designer.cs
│ ├── App.config
│ ├── Queue
│ │ └── QueueListItem.cs
│ ├── Attributes
│ │ └── LocalizedDescriptionAttribute.cs
│ ├── Logger.cs
│ └── Converter
│ │ └── EnumDescriptionTypeConverter.cs
│ └── SharedAssemblyInfo.cs
├── lib
├── WpfApplicationFramework
│ └── WpfApplicationFramework
│ │ ├── WpfApplicationFramework.csproj.vspscc
│ │ ├── Applications
│ │ ├── IView.cs
│ │ ├── IModuleController.cs
│ │ ├── DispatcherHelper.cs
│ │ ├── PropertyChangedEventListener.cs
│ │ ├── CollectionChangedEventListener.cs
│ │ ├── ViewModel.Generic.cs
│ │ ├── ViewModel.cs
│ │ ├── Services
│ │ │ └── FileDialogResult.cs
│ │ └── ViewHelper.cs
│ │ ├── Foundation
│ │ ├── IReadOnlyObservableList.cs
│ │ ├── DataErrorInfoExtensions.cs
│ │ ├── CollectionHelper.cs
│ │ └── ReadOnlyObservableList.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ ├── WafConfiguration.cs
│ │ └── Presentation
│ │ ├── ValidationReloadedTracker.cs
│ │ └── Converters
│ │ └── InvertBooleanConverter.cs
└── RateLimiter
│ └── RateLimiter
│ ├── LongMath.cs
│ ├── Properties
│ └── AssemblyInfo.cs
│ └── SleepingStopwatch.cs
├── .gitattributes
└── LICENSE
/src/TumblThree/TumblThree.Presentation/Resources/Images/About.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/About.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/Pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/Pause.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/Play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/Play.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/Scan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/Scan.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/Stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/Stop.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/AddBlog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/AddBlog.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/AddQueue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/AddQueue.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/Download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/Download.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/Explorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/Explorer.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/Resume.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/Resume.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/Settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/Settings.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/Tumblr.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/Tumblr.ico
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/Tumblr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/Tumblr.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/Clipboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/Clipboard.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/RemoveBlog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/RemoveBlog.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/Images/RemoveQueue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TarekJor/TumblThree/master/src/TumblThree/TumblThree.Presentation/Resources/Images/RemoveQueue.png
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Views/IQueueView.cs:
--------------------------------------------------------------------------------
1 | using System.Waf.Applications;
2 |
3 | namespace TumblThree.Applications.Views
4 | {
5 | public interface IQueueView : IView
6 | {
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Views/ICrawlerView.cs:
--------------------------------------------------------------------------------
1 | using System.Waf.Applications;
2 |
3 | namespace TumblThree.Applications.Views
4 | {
5 | public interface ICrawlerView : IView
6 | {
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Views/IDetailsView.cs:
--------------------------------------------------------------------------------
1 | using System.Waf.Applications;
2 |
3 | namespace TumblThree.Applications.Views
4 | {
5 | public interface IDetailsView : IView
6 | {
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/DataModels/TumblrCrawlerData/ITumblrCrawlerData.cs:
--------------------------------------------------------------------------------
1 | namespace TumblThree.Applications.DataModels.TumblrCrawlerData
2 | {
3 | interface ITumblrCrawlerData
4 | {
5 |
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Services/IClipboardService.cs:
--------------------------------------------------------------------------------
1 | namespace TumblThree.Applications.Services
2 | {
3 | public interface IClipboardService
4 | {
5 | void SetText(string text);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Domain/Models/ICrawlerData.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace TumblThree.Domain.Models
4 | {
5 | public interface ICrawlerData
6 | {
7 | Type BlogType { get; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/DataModels/DownloadProgress.cs:
--------------------------------------------------------------------------------
1 | namespace TumblThree.Applications.DataModels
2 | {
3 | public class DownloadProgress
4 | {
5 | public string Progress { get; set; }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Services/IEnvironmentService.cs:
--------------------------------------------------------------------------------
1 | namespace TumblThree.Applications.Services
2 | {
3 | public interface IEnvironmentService
4 | {
5 | string AppSettingsPath { get; }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Controls/RatingItemState.cs:
--------------------------------------------------------------------------------
1 | namespace TumblThree.Presentation.Controls
2 | {
3 | public enum RatingItemState
4 | {
5 | Empty,
6 | Partial,
7 | Filled
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Controls/HorizontalFlyoutAlignment.cs:
--------------------------------------------------------------------------------
1 | namespace TumblThree.Presentation.Controls
2 | {
3 | public enum HorizontalFlyoutAlignment
4 | {
5 | Left,
6 | Center,
7 | Right
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Resources/TextBoxResources.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Views/IAboutView.cs:
--------------------------------------------------------------------------------
1 | using System.Waf.Applications;
2 |
3 | namespace TumblThree.Applications.Views
4 | {
5 | public interface IAboutView : IView
6 | {
7 | void ShowDialog(object owner);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/DesignData/MockView.cs:
--------------------------------------------------------------------------------
1 | using System.Waf.Applications;
2 |
3 | namespace TumblThree.Presentation.DesignData
4 | {
5 | public class MockView : IView
6 | {
7 | public object DataContext { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Services/IConfirmTumblrPrivacyConsent.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 |
3 | namespace TumblThree.Applications.Services
4 | {
5 | public interface IConfirmTumblrPrivacyConsent
6 | {
7 | Task ConfirmPrivacyConsent();
8 | }
9 | }
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Views/IFullScreenMediaView.cs:
--------------------------------------------------------------------------------
1 | using System.Waf.Applications;
2 |
3 | namespace TumblThree.Applications.Views
4 | {
5 | public interface IFullScreenMediaView : IView
6 | {
7 | void ShowDialog(object owner);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Domain/Models/IBlogFactory.cs:
--------------------------------------------------------------------------------
1 | namespace TumblThree.Domain.Models
2 | {
3 | public interface IBlogFactory
4 | {
5 | bool IsValidTumblrBlogUrl(string blogUrl);
6 |
7 | IBlog GetBlog(string blogUrl, string path);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Domain/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Services/ISettingsService.cs:
--------------------------------------------------------------------------------
1 | using TumblThree.Domain.Models;
2 |
3 | namespace TumblThree.Applications.Services
4 | {
5 | internal interface ISettingsService
6 | {
7 | IBlog TransferGlobalSettingsToBlog(IBlog blog);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/DesignData/SampleBlogFile.cs:
--------------------------------------------------------------------------------
1 | using TumblThree.Domain.Models;
2 |
3 | namespace TumblThree.Presentation.DesignData
4 | {
5 | public class SampleBlogFile : Blog
6 | {
7 | public SampleBlogFile(string url)
8 | {
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Parser/ITumblrParser.cs:
--------------------------------------------------------------------------------
1 | using System.Text.RegularExpressions;
2 |
3 | namespace TumblThree.Applications.Crawler
4 | {
5 | public interface ITumblrParser
6 | {
7 | Regex GetTumblrPhotoUrlRegex();
8 |
9 | Regex GetTumblrVideoUrlRegex();
10 | }
11 | }
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Services/ISettingsProvider.cs:
--------------------------------------------------------------------------------
1 | namespace TumblThree.Applications.Services
2 | {
3 | internal interface ISettingsProvider
4 | {
5 | T LoadSettings(string fileName) where T : class, new();
6 |
7 | void SaveSettings(string fileName, object settings);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Views/ISettingsView.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Waf.Applications;
3 |
4 | namespace TumblThree.Applications.Views
5 | {
6 | public interface ISettingsView : IView
7 | {
8 | void ShowDialog(object owner);
9 |
10 | event EventHandler Closed;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Domain/Models/BlogTypes.cs:
--------------------------------------------------------------------------------
1 | namespace TumblThree.Domain.Models
2 | {
3 | public enum BlogTypes
4 | {
5 | tumblr,
6 | tmblrpriv,
7 | instagram,
8 | twitter,
9 | tlb,
10 | tumblrsearch,
11 | tumblrtagsearch,
12 | all
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Services/IDetailsService.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | using TumblThree.Domain.Models;
4 |
5 | namespace TumblThree.Applications.Services
6 | {
7 | public interface IDetailsService
8 | {
9 | void SelectBlogFiles(IReadOnlyList blogFiles);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/DataModels/IPostQueue.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace TumblThree.Applications.DataModels
4 | {
5 | public interface IPostQueue
6 | {
7 | void Add(T post);
8 | void CompleteAdding();
9 | IEnumerable GetConsumingEnumerable();
10 | }
11 | }
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Domain/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Windows;
3 |
4 | [assembly: AssemblyTitle("TumblThree.Domain")]
5 | [assembly: AssemblyDescription("")]
6 | [assembly: AssemblyConfiguration("")]
7 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
8 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Windows;
3 |
4 | [assembly: AssemblyTitle("TumblThree.Applications")]
5 | [assembly: AssemblyDescription("")]
6 | [assembly: AssemblyConfiguration("")]
7 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
8 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Parser/ICatBoxParser.cs:
--------------------------------------------------------------------------------
1 | using System.Text.RegularExpressions;
2 | using TumblThree.Domain.Models;
3 |
4 | namespace TumblThree.Applications.Parser
5 | {
6 | public interface ICatBoxParser
7 | {
8 | Regex GetCatBoxUrlRegex();
9 |
10 | string CreateCatBoxUrl(string id, string detectedUrl, CatBoxTypes type);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Parser/IUguuParser.cs:
--------------------------------------------------------------------------------
1 | using System.Text.RegularExpressions;
2 | using TumblThree.Domain.Models;
3 |
4 | namespace TumblThree.Applications.Parser
5 | {
6 | public interface IUguuParser
7 | {
8 | Regex GetUguuUrlRegex();
9 |
10 | string CreateUguuUrl(string uguuId, string detectedUrl, UguuTypes uguuType);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/WpfApplicationFramework/WpfApplicationFramework/WpfApplicationFramework.csproj.vspscc:
--------------------------------------------------------------------------------
1 | ""
2 | {
3 | "FILE_VERSION" = "9237"
4 | "ENLISTMENT_CHOICE" = "NEVER"
5 | "PROJECT_FILE_RELATIVE_PATH" = ""
6 | "NUMBER_OF_EXCLUDED_FILES" = "0"
7 | "ORIGINAL_PROJECT_FILE_PATH" = ""
8 | "NUMBER_OF_NESTED_PROJECTS" = "0"
9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
10 | }
11 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Parser/ISafeMoeParser.cs:
--------------------------------------------------------------------------------
1 | using System.Text.RegularExpressions;
2 | using TumblThree.Domain.Models;
3 |
4 | namespace TumblThree.Applications.Parser
5 | {
6 | public interface ISafeMoeParser
7 | {
8 | Regex GetSafeMoeUrlRegex();
9 |
10 | string CreateSafeMoeUrl(string id, string detectedUrl, SafeMoeTypes type);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Presentation/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Windows;
3 |
4 | [assembly: AssemblyTitle("TumblThree - A Tumblr Blog Backup Application")]
5 | [assembly: AssemblyDescription("")]
6 | [assembly: AssemblyConfiguration("")]
7 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
8 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Parser/ILoliSafeParser.cs:
--------------------------------------------------------------------------------
1 | using System.Text.RegularExpressions;
2 | using TumblThree.Domain.Models;
3 |
4 | namespace TumblThree.Applications.Parser
5 | {
6 | public interface ILoliSafeParser
7 | {
8 | Regex GetLoliSafeUrlRegex();
9 |
10 | string CreateLoliSafeUrl(string id, string detectedUrl, LoliSafeTypes type);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Services/ILoginService.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 |
3 | namespace TumblThree.Applications.Services
4 | {
5 | public interface ILoginService
6 | {
7 | Task PerformTumblrLogin(string login, string password);
8 |
9 | bool CheckIfLoggedIn();
10 |
11 | Task GetTumblrUsername();
12 | }
13 | }
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Parser/IMixtapeParser.cs:
--------------------------------------------------------------------------------
1 | using System.Text.RegularExpressions;
2 | using TumblThree.Domain.Models;
3 |
4 | namespace TumblThree.Applications.Crawler
5 | {
6 | public interface IMixtapeParser
7 | {
8 | Regex GetMixtapeUrlRegex();
9 |
10 | string CreateMixtapeUrl(string mixtapeId, string detectedUrl, MixtapeTypes mixtapeType);
11 | }
12 | }
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Downloader/ICrawlerDataDownloader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace TumblThree.Applications.Downloader
8 | {
9 | public interface ICrawlerDataDownloader
10 | {
11 | Task DownloadCrawlerDataAsync();
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Crawler/ITumblrBlogDetector.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 |
3 | namespace TumblThree.Applications.Crawler
4 | {
5 | interface ITumblrBlogDetector
6 | {
7 | Task IsHiddenTumblrBlog(string url);
8 |
9 | Task IsPasswordProtectedTumblrBlog(string url);
10 |
11 | Task IsTumblrBlog(string url);
12 | }
13 | }
--------------------------------------------------------------------------------
/src/TumblThree/TumblThree.Applications/Views/IManagerView.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Waf.Applications;
4 | using System.Windows;
5 |
6 | namespace TumblThree.Applications.Views
7 | {
8 | public interface IManagerView : IView
9 | {
10 | Dictionary