Explorar o código

onedrive自动加载所有页

懒得勤快 %!s(int64=4) %!d(string=hai) anos
pai
achega
d4a8ae0459

+ 2 - 2
src/Masuit.MyBlogs.Core/Extensions/Hangfire/HangfireBackJob.cs

@@ -192,8 +192,8 @@ namespace Masuit.MyBlogs.Core.Extensions.Hangfire
         public void CheckLinks()
         {
             var client = _httpClientFactory.CreateClient();
-            client.DefaultRequestHeaders.UserAgent.Add(ProductInfoHeaderValue.Parse("MasuitBot-link/1.0"));
-            client.DefaultRequestHeaders.Referrer = new Uri("https://masuit.com");
+            client.DefaultRequestHeaders.UserAgent.Add(ProductInfoHeaderValue.Parse("Mozilla/5.0"));
+            client.DefaultRequestHeaders.Referrer = new Uri("https://google.com");
             client.Timeout = TimeSpan.FromSeconds(5);
             _linksService.GetQuery(l => !l.Except).AsParallel().ForAll(link =>
             {

+ 10 - 4
src/Masuit.MyBlogs.Core/Infrastructure/Drive/DriveService.cs

@@ -28,8 +28,9 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Drive
         public async Task<List<DriveFile>> GetRootItems(string siteName = "onedrive", bool showHiddenFolders = false)
         {
             var drive = siteName != "onedrive" ? _graph.Sites[GetSiteId(siteName)].Drive : _graph.Me.Drive;
-            var result = await drive.Root.Children.Request().GetAsync();
-            var files = GetItems(result, siteName, showHiddenFolders);
+            var request = drive.Root.Children.Request();
+            var result = await request.GetAsync();
+            var files = await GetItems(result, siteName, showHiddenFolders);
             return files;
         }
 
@@ -42,7 +43,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Drive
         {
             var drive = siteName != "onedrive" ? _graph.Sites[GetSiteId(siteName)].Drive : _graph.Me.Drive;
             var result = await drive.Root.ItemWithPath(path).Children.Request().GetAsync();
-            var files = GetItems(result, siteName, showHiddenFolders);
+            var files = await GetItems(result, siteName, showHiddenFolders);
             return files;
         }
         /// <summary>
@@ -105,7 +106,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Drive
             return file;
         }
 
-        private List<DriveFile> GetItems(IDriveItemChildrenCollectionPage result, string siteName = "onedrive", bool showHiddenFolders = false)
+        private async Task<List<DriveFile>> GetItems(IDriveItemChildrenCollectionPage result, string siteName = "onedrive", bool showHiddenFolders = false)
         {
             var files = new List<DriveFile>();
             foreach (var item in result)
@@ -141,6 +142,11 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Drive
                 files.Add(file);
             }
 
+            if (result.Count == 200)
+            {
+                files.AddRange(await GetItems(await result.NextPageRequest.GetAsync(), siteName, showHiddenFolders));
+            }
+
             return files;
         }
 

+ 6 - 6
src/Masuit.MyBlogs.Core/Infrastructure/Repository/BaseRepository.cs

@@ -350,7 +350,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>实体</returns>
         public virtual T Get(Expression<Func<T, bool>> where)
         {
-            return DataContext.Set<T>().FirstOrDefault(where);
+            return EF.CompileQuery((DataContext ctx) => ctx.Set<T>().FirstOrDefault(where))(DataContext);
         }
 
         /// <summary>
@@ -383,7 +383,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>实体</returns>
         public virtual T Get<TS>(Expression<Func<T, bool>> where, Expression<Func<T, TS>> orderby, bool isAsc = true)
         {
-            return isAsc ? DataContext.Set<T>().OrderBy(orderby).FirstOrDefault(where) : DataContext.Set<T>().OrderByDescending(orderby).FirstOrDefault(where);
+            return isAsc ? EF.CompileQuery((DataContext ctx) => ctx.Set<T>().OrderBy(orderby).FirstOrDefault(where))(DataContext) : EF.CompileQuery((DataContext ctx) => ctx.Set<T>().OrderByDescending(orderby).FirstOrDefault(where))(DataContext);
         }
 
         /// <summary>
@@ -461,7 +461,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>实体</returns>
         public virtual Task<T> GetAsync(Expression<Func<T, bool>> where)
         {
-            return DataContext.Set<T>().FirstOrDefaultAsync(@where);
+            return EF.CompileAsyncQuery((DataContext ctx) => ctx.Set<T>().FirstOrDefault(where))(DataContext);
         }
 
         /// <summary>
@@ -472,9 +472,9 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <param name="orderby">排序字段</param>
         /// <param name="isAsc">是否升序</param>
         /// <returns>实体</returns>
-        public virtual async Task<T> GetAsync<TS>(Expression<Func<T, bool>> where, Expression<Func<T, TS>> orderby, bool isAsc = true)
+        public virtual Task<T> GetAsync<TS>(Expression<Func<T, bool>> where, Expression<Func<T, TS>> orderby, bool isAsc = true)
         {
-            return isAsc ? await DataContext.Set<T>().OrderBy(orderby).FirstOrDefaultAsync(where) : await DataContext.Set<T>().OrderByDescending(orderby).FirstOrDefaultAsync(where);
+            return isAsc ? EF.CompileAsyncQuery((DataContext ctx) => ctx.Set<T>().OrderBy(orderby).FirstOrDefault(where))(DataContext) : EF.CompileAsyncQuery((DataContext ctx) => ctx.Set<T>().OrderByDescending(orderby).FirstOrDefault(where))(DataContext);
         }
 
         /// <summary>
@@ -484,7 +484,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>实体</returns>
         public virtual T GetNoTracking(Expression<Func<T, bool>> where)
         {
-            return DataContext.Set<T>().AsNoTracking().FirstOrDefault(where);
+            return EF.CompileQuery((DataContext ctx) => ctx.Set<T>().AsNoTracking().FirstOrDefault(where))(DataContext);
         }
 
         /// <summary>

+ 1 - 1
src/Masuit.MyBlogs.Core/Infrastructure/Repository/PostRepository.cs

@@ -30,7 +30,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>实体</returns>
         public override Task<Post> GetAsync(Expression<Func<Post, bool>> @where)
         {
-            return DataContext.Post.Include(p => p.Category).Include(p => p.Seminar).FirstOrDefaultAsync(@where);
+            return EF.CompileAsyncQuery((DataContext ctx) => ctx.Post.Include(p => p.Category).Include(p => p.Seminar).FirstOrDefault(@where))(DataContext);
         }
 
         /// <summary>

+ 1 - 1
src/Masuit.MyBlogs.Core/Masuit.MyBlogs.Core.csproj

@@ -73,7 +73,7 @@
             <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
         </None>
         <None Update="App_Data\cert\server.pfx">
-            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
         </None>
         <None Update="App_Data\CustomKeywords.txt">
             <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>

+ 2 - 2
src/Masuit.MyBlogs.Core/Views/Links/Index.cshtml

@@ -24,7 +24,7 @@
             {
                 <a class="effect effect-5" href="@link.Url" title="@link.Name" target="_blank">@link.Name</a>
             }
-            <a class="effect effect-5" onclick="add()">自助添加</a>
+            <a class="effect effect-5" onclick="add()">👉点我自助申请友链</a>
         </div>
     </section>
     <hr class="margin-top10 marginbot10" />
@@ -37,7 +37,7 @@
         swal({
             title: '申请友情链接',
             html: '<div class="input-group"><span class="input-group-addon">网站名称</span><input id="title" class="form-control" autofocus placeholder="您的网站名称"></div>' +
-                '<div class="input-group"><span class="input-group-addon">链接地址</span><input id="url" class="form-control" placeholder="链接地址" value="http://"></div>',
+                '<div class="input-group"><span class="input-group-addon">链接地址</span><input id="url" class="form-control" placeholder="链接地址" value="https://"></div>',
             showCloseButton: true,
             confirmButtonColor: "#DD6B55",
             confirmButtonText: "确定",