示例#1
0
 /// <summary>
 /// Create a new HentaiPaser from the page and store in sitename/subfolder
 /// </summary>
 /// <param name="html">The downloaded page content as string</param>
 /// <param name="subfolder">The name or number of the doujin to download</param>
 /// <param name="siteName">Name of the site, comming from the Site Context</param>
 public HentaiParser(string html, string subfolder, string siteName, string basePath)
 {
     _albumName    = subfolder;
     _document     = new HtmlParser().ParseDocumentAsync(html).Result;
     _subfolder    = Path.Combine(basePath, "downloads", siteName, subfolder);
     _filesContext = new FilesContext(siteName, basePath);
 }
示例#2
0
        private void OkButton_Click(object sender, EventArgs e)
        {
            var tags = tagsBox.Text;

            if (tags.Contains("|"))
            {
                MessageBox.Show(
                    "Cannot use character '|' in tags.",
                    "Invalid tags",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Exclamation
                    );
                return;
            }
            var newTags = Helpers.TagStringToHash(tags);
            int count   = 0;

            foreach (var file in EditedFiles)
            {
                file.Custom_fts.UnionWith(newTags);
            }
            using (var ctx = new FilesContext())
            {
                count = ctx.UpdateFilesTags(EditedFiles);
            }
            MessageBox.Show(
                $"Updated {count} file(s).",
                "Updated"
                );
            Close();
        }
示例#3
0
        private void watcherListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            var index = watcherListBox.SelectedIndex;

            if (index == -1)
            {
                return;
            }
            HashSet <string> tagSet = new HashSet <string>();

            using (var ctx = new FilesContext())
            {
                Watcher found = ctx.Watchers.Include(watcher => watcher.Files).Where(watcher => watcher.Id == _watchers[index].Id).FirstOrDefault();
                if (found == null)
                {
                    return;
                }
                foreach (var fileTagSet in found.Files.Select(t => t.XMPTags_fts).Where(set => set != null))
                {
                    tagSet.UnionWith(fileTagSet);
                }
            }
            tagsWatcherListBox.BeginUpdate();
            tagsWatcherListBox.Items.Clear();
            tagsWatcherListBox.Items.AddRange(EnumerableToSortedArray(tagSet));
            tagsWatcherListBox.EndUpdate();
        }
 public ChatService(ApplicationContext context, FilesContext files, UserManager <User> users)
 {
     _users         = users;
     _files         = files;
     _application   = context;
     _chatConverter = new ChatConverter(_files);
 }
示例#5
0
        private void RemoveButton_Click(object sender, EventArgs e)
        {
            if (watcherListView.SelectedItems.Count == 0)
            {
                return;
            }
            var item = watcherListView.SelectedItems[0];
            var id   = (int)item.Tag;

            using (var ctx = new FilesContext())
            {
                Watcher found = ctx.Watchers.SingleOrDefault(watcher => watcher.Id == id);
                if (found == null)
                {
                    Console.Write($"Could not find watcher with id {id}.");
                    return;
                }
                var confirmResult = MessageBox.Show(
                    $"Are you sure you want to delete this watcher? This will delete all custom tags and command for files in:\n{found.Directory}",
                    "Confirmation",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Warning
                    );
                if (confirmResult != DialogResult.Yes)
                {
                    return;
                }
                ctx.Watchers.Remove(found);
                ctx.SaveChanges();
                Monitor.Stop(found);
            }
            RefreshListView();
        }
示例#6
0
        private void RefreshListView()
        {
            watcherListView.Items.Clear();
            List <ListViewItem> watcherList = new List <ListViewItem>();

            using (var ctx = new FilesContext())
            {
                foreach (var watcher in ctx.Watchers)
                {
                    var item = new ListViewItem(new[] {
                        watcher.Name,
                        watcher.Enabled.ToString(),
                        watcher.Directory,
                        Watcher.HashToExtensionString(watcher.Whitelist),
                        watcher.ScanSubdirectories.ToString(),
                        watcher.GenerateVideoThumbnails.ToString(),
                        watcher.ShortcutKeys == Keys.None ? "None" : _keysConverter.ConvertToString(watcher.ShortcutKeys),
                        watcher.GlobalShortcut.ToString()
                    });
                    item.Tag = watcher.Id;
                    watcherList.Add(item);
                }
            }
            watcherListView.Items.AddRange(watcherList.ToArray());
        }
示例#7
0
 public void InsertFile(File file)
 {
     using (var context = new FilesContext())
     {
         context.Fisiere.Add(file);
         context.SaveChanges();
     }
 }
示例#8
0
        public void Setup()
        {
            DbContextOptions <FilesContext> options = new DbContextOptionsBuilder <FilesContext>().UseSqlServer(SqlString).Options;
            FilesContext databaseContext            = new FilesContext(options);

            databaseContext.Database.EnsureCreated();
            _dbContext = databaseContext;
        }
示例#9
0
        public JsonResult Policy(string Company)
        {
            FilesContext  db         = new FilesContext();
            List <string> policyList = new List <string>();

            switch (Company)
            {
            case "Select":
                var select = new Company {
                    Name = "Select:"
                };
                policyList.Add(select.Name);
                break;

            case "WPS Insurance":
                var wpsList = from p in db.Policies
                              where p.Company.Name.Contains("WPS")
                              select p;
                foreach (Models.Policy p in wpsList)
                {
                    policyList.Add(p.Name);
                }

                break;

            case "United HealthCare":
                var uhcList = from p in db.Policies
                              where p.Company.Name.Contains("United HealthCare")
                              select p;
                foreach (Models.Policy p in uhcList)
                {
                    policyList.Add(p.Name);
                }
                break;

            case "Blue Cross Blue Shield":
                var bcbsList = from p in db.Policies
                               where p.Company.Name.Contains("Blue Cross Blue Shield")
                               select p;
                foreach (Models.Policy p in bcbsList)
                {
                    policyList.Add(p.Name);
                }
                break;

            case "Common Ground HealthCare":
                var cghcList = from p in db.Policies
                               where p.Company.Name.Contains("Common Ground Health")
                               select p;
                foreach (Models.Policy p in cghcList)
                {
                    policyList.Add(p.Name);
                }
                break;
            }

            return(Json(policyList));
        }
示例#10
0
 public static void InitDatabase(SearchTagEditor editor)
 {
     FilesContext.videoThumbnailExtractor = new VideoThumbnailExtractor();
     FilesContext.searchTagEditor         = editor;
     using (var ctx = new FilesContext())
     {
         ctx.Database.Migrate();
     }
 }
示例#11
0
 public void DeleteFile(File file)
 {
     using (var context = new FilesContext())
     {
         context.Fisiere.Attach(file);
         context.Fisiere.Remove(file);
         context.SaveChanges();
     }
 }
示例#12
0
        public File GetFileById(int id)
        {
            if (id == 0)
            {
                throw new ArgumentException("id");
            }

            using (var context = new FilesContext())
            {
                return(context.Fisiere.FirstOrDefault(c => c.Id == id));
            }
        }
示例#13
0
 public List <FileMetadata> GetFilesMetadataForUserId(int userId)
 {
     using (var context = new FilesContext())
     {
         return((from file in context.Fisiere
                 where file.UserId == userId
                 select new FileMetadata()
         {
             Description = file.Description, FileName = file.FileName, FileType = file.FileType, UserId = file.UserId, Id = file.Id, LastDateChanged = file.Data
         }).ToList());
     }
 }
示例#14
0
 public MultiXMPEditForm(List <File> files, SearchTagEditor searchTagEditor, WatcherMonitor watcherMonitor)
 {
     InitializeComponent();
     _files           = files;
     _searchTagEditor = searchTagEditor;
     _watcherMonitor  = watcherMonitor;
     using (var ctx = new FilesContext())
     {
         _watchers = ctx.Watchers.ToList();
     }
     RefreshView();
 }
示例#15
0
        public TestHelper()
        {
            var builder = new DbContextOptionsBuilder <FilesContext>();

            builder.UseInMemoryDatabase(databaseName: "LibraryDbInMemory");

            var dbContextOptions = builder.Options;

            fileContext = new FilesContext(dbContextOptions);
            // Delete existing db before creating a new one
            fileContext.Database.EnsureDeleted();
            fileContext.Database.EnsureCreated();
        }
示例#16
0
        public async Task <IActionResult> Index(SiteViewModel model)
        {
            if (ModelState.IsValid)
            {
                model.Sites = await _context.GetAllAsync();

                model.ToDownload = model.ToDownload.Trim('/');
                var siteName = model.Sites.Where(x => x.Id == model.SiteId).First().Name;

                var filesContext = new FilesContext(siteName, _environment.ContentRootPath);
                if (!await filesContext.AddDownloadingAsync(model.ToDownload))
                {
                    return(await GetFileForDownload(siteName, model.ToDownload));
                }

                try
                {
                    var siteType = _context.IdToType(model.SiteId);

                    var site = (ISite)Activator.CreateInstance(siteType);

                    var url      = site.GetDownloadUrl(model.Sites.Where(x => x.Id == model.SiteId).First().Url, model.ToDownload);
                    var response = await client.GetStringAsync(url);

                    var genericParser = Type.GetType("Ahegao.Models.HentaiParser`1");
                    var parser        = genericParser.MakeGenericType(new Type[] { siteType });
                    var p             = (IParser)Activator.CreateInstance(parser, new string[]
                    {
                        response,
                        model.ToDownload,
                        siteName,
                        _environment.ContentRootPath
                    });

                    await p.DownloadImages();

                    await p.GeneratePdf();

                    return(await GetFileForDownload(siteName, model.ToDownload));
                }
                catch (HttpRequestException e)
                {
                    Console.WriteLine("Exception Caught!");
                    Console.WriteLine("Message :{0} ", e.Message);
                }
            }

            return(View(model));
        }
示例#17
0
        private void OkButton_Click(object sender, EventArgs e)
        {
            var tags = tagsBox.Text;

            if (tags.Contains("|"))
            {
                MessageBox.Show("Cannot use character '|' in tags.");
                return;
            }
            EditedFile.Custom_fts = Helpers.TagStringToHash(tags);
            using (var ctx = new FilesContext())
            {
                ctx.UpdateFileTags(EditedFile);
            }
            Close();
        }
示例#18
0
        public List <File> GetFilesForUserProfile(UserProfile userProfile)
        {
            if (userProfile == null)
            {
                throw new ArgumentNullException("userProfile");
            }

            if (userProfile.UserId == 0)
            {
                throw new ArgumentException();
            }

            using (var context = new FilesContext())
            {
                return(context.Fisiere.Where <File>(c => c.UserId == userProfile.UserId).ToList());
            }
        }
示例#19
0
        public void EditFile(File file)
        {
            using (var context = new FilesContext())
            {
                var oldFile = context.Fisiere.FirstOrDefault(c => c.Id == file.Id);

                if (oldFile != null)
                {
                    oldFile.Data        = file.Data;
                    oldFile.FileContent = file.FileContent;
                    oldFile.FileType    = file.FileType;
                    oldFile.Description = file.Description;
                    oldFile.FileName    = file.FileName;
                }

                context.SaveChanges();
            }
        }
示例#20
0
        private void AddButton_Click(object sender, EventArgs e)
        {
            if (!ValidCheck())
            {
                return;
            }
            var     name      = NameTextBox.Text;
            var     directory = DirectoryTextBox.Text;
            var     whitelist = ExtensionTextBox.Text;
            Watcher watcher;

            using (var ctx = new FilesContext())
            {
                watcher = ctx.AddWatcherForm(name, directory, whitelist, GenerateVideoThumbnailsBox.Checked, scanSubdirectoriesBox.Checked);
            }
            Console.WriteLine(GenerateVideoThumbnailsBox.Checked);
            AddedWatcher = watcher;
            this.Close();
        }
示例#21
0
        private void MaybeUpdateWatcher()
        {
            bool whitelistChanged = !_orignalWhitelist.SetEquals(Watcher.ExtensionStringToHash(ExtensionTextBox.Text));

            if (_orignalName != NameTextBox.Text ||
                whitelistChanged ||
                _originalScanBool != scanSubdirectoriesBox.Checked ||
                _originalVideoBool != GenerateVideoThumbnailsBox.Checked)
            {
                using (var ctx = new FilesContext())
                {
                    ctx.UpdateWatcherForm(_watcher.Id, NameTextBox.Text, ExtensionTextBox.Text, scanSubdirectoriesBox.Checked, scanSubdirectoriesBox.Checked);
                }
                if (_originalScanBool != scanSubdirectoriesBox.Checked || whitelistChanged)
                {
                    Console.WriteLine("restart");
                    _watcherMonitor.RestartById(_watcher.Id);
                }
            }
        }
示例#22
0
        public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl)
        {
            string provider       = null;
            string providerUserId = null;

            if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId))
            {
                return(RedirectToAction("Manage"));
            }

            if (ModelState.IsValid)
            {
                // Insert a new user into the database
                using (var db = new FilesContext())
                {
                    UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower());
                    // Check if user already exists
                    if (user == null)
                    {
                        // Insert name into the profile table
                        db.UserProfiles.Add(new UserProfile {
                            UserName = model.UserName
                        });
                        db.SaveChanges();

                        OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
                        OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false);

                        return(RedirectToLocal(returnUrl));
                    }
                    else
                    {
                        ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name.");
                    }
                }
            }

            ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName;
            ViewBag.ReturnUrl           = returnUrl;
            return(View(model));
        }
示例#23
0
        private async Task <FileContentResult> GetFileForDownload(string siteName, string album)
        {
            var filesContext = new FilesContext(siteName, _environment.ContentRootPath);

            while (!await filesContext.IsDoujinDownloadedAsync(album))
            {
                await Task.Delay(500);
            }

            ContentDisposition cd = new ContentDisposition
            {
                FileName = $"{album}.pdf",
                Inline   = false // false = prompt the user for downloading;  true = browser to try to show the file inline
            };

            Response.Headers.Add("Content-Disposition", cd.ToString());

            var filepath = Path.Combine(_environment.ContentRootPath, "downloads", siteName, $"{album}.pdf");

            return(File(System.IO.File.ReadAllBytes(filepath), MediaTypeNames.Application.Pdf));
        }
示例#24
0
        private void okButton_Click(object sender, EventArgs e)
        {
            var tags = tagsBox.Text;

            if (tags.Contains("|"))
            {
                MessageBox.Show("Cannot use character '|' in tags.");
                return;
            }
            EditedFile.XMPTags_fts = Helpers.TagStringToHash(tags);
            var editResult = _searchTagEditor.setSearchTag(EditedFile.FullName, EditedFile.XMPTags_fts.ToHashSet());

            if (editResult == false)
            {
                MessageBox.Show("Could not set XMP tags for image.", "ImageGallery", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                using (var ctx = new FilesContext())
                {
                    ctx.UpdateXMPFileTags(EditedFile);
                }
            }
        }
示例#25
0
        private bool MaybeUpdateKey()
        {
            if ((enabledBox.Checked == false || hotkeyTextBox.Text.Length == 0) && _orignalKey != Keys.None)
            {
                using (var ctx = new FilesContext())
                {
                    ctx.UpdateShortcuts(_watcher, Keys.None, globalBox.Checked);
                }
            }
            else
            {
                try
                {
                    object keyObject = _keysConverter.ConvertFromInvariantString(hotkeyTextBox.Text);
                    if (keyObject == null)
                    {
                        throw new ArgumentException();
                    }

                    if (_orignalGlobalKeyBool != globalBox.Checked || (Keys)keyObject != _orignalKey)
                    {
                        using (var ctx = new FilesContext())
                        {
                            ctx.UpdateShortcuts(_watcher, (Keys)keyObject, globalBox.Checked);
                        }
                    }
                }
                catch (ArgumentException)
                {
                    MessageBox.Show("Invalid key", "Could not set this key.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
            }
            _watcherKeyManager.UpdateDataAndEnable();
            return(true);
        }
示例#26
0
        private void editButton_Click(object sender, EventArgs e)
        {
            if (watcherListView.SelectedItems.Count == 0)
            {
                return;
            }
            var     item  = watcherListView.SelectedItems[0];
            var     id    = (int)item.Tag;
            Watcher found = null;

            using (var ctx = new FilesContext())
            {
                found = ctx.Watchers.SingleOrDefault(watcher => watcher.Id == id);
            }
            if (found == null)
            {
                Console.Write($"Could not find watcher with id {id}.");
                return;
            }
            var editWatcherForm = new EditWatcherForm(found, _watcherKeyManager, Monitor);

            editWatcherForm.ShowDialog();
            RefreshListView();
        }
 public FilesController(FilesContext context)
 {
     _context = context;
 }
示例#28
0
 public UserService(UserManager <User> userManager, FilesContext files)
 {
     _files     = files;
     _users     = userManager;
     _converter = new UserConverter(_files);
 }
 public FilesFetcherHandler(ILogger <FilesController> logger, FilesContext dbContext)
 {
     _logger    = logger;
     _dbContext = dbContext;
 }
示例#30
0
 public FileDetailsRepository(FilesContext context)
 {
     _context = context;
 }