Exemple #1
0
        protected override async Task OnInitializedAsync()
        {
            settings = SettingsService.Settings;

            try
            {
                availableThemes = (await ThemeRepo.GetNames()).ToArray();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Could not fetch themes: {ex.Message}");
            }
        }
Exemple #2
0
        /// <summary>
        /// 获取话题数据
        /// </summary>
        /// <param name="theme"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static List <ThemeRepo> GetThemeRepos(string theme, SearchType type = SearchType.Repositories)
        {
            ATLog.Info("获取Github上关注的话题");
            List <ThemeRepo> repos = new List <ThemeRepo>();

            StringBuilder conditions = new StringBuilder();

            conditions.Append("?");
            conditions.Append(Conditions.SetQueryKeyWord(theme));

            string requestURL = Conditions.SetRequestRootURL(type.ToString()) + conditions.ToString();

            Console.WriteLine(requestURL);
            HttpWebRequest httpWebRequest = WebRequest.CreateHttp(requestURL);

            httpWebRequest.Accept    = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
            httpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36";
            //httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method = "GET";

            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

            if (httpWebResponse.StatusCode == HttpStatusCode.OK)
            {
                //Console.WriteLine("状态返回值: success");
                Stream       stream     = (Stream)httpWebResponse.GetResponseStream();
                StreamReader sr         = new StreamReader(stream);
                string       resultJson = sr.ReadToEnd();
                resultJson = resultJson.Replace("private", "_private");
                RepositoriesEntity repositoriesResult = JsonConvert.DeserializeObject <RepositoriesEntity>(resultJson);

                RepositoriesResultItem[] items = repositoriesResult.items;
                for (int i = 0; i < items.Length; i++)
                {
                    ThemeRepo themeRepo = new ThemeRepo(items[i].full_name, items[i].html_url, items[i].description, items[i].stargazers_count, items[i].language, items[i].score, items[i].owner.login);
                    repos.Add(themeRepo);
                }
                //Console.WriteLine(repositoriesResult.total_count);
            }

            if (repos.Count != 0)
            {
                GithubOp.Instance.SaveRangeData(repos);
            }

            return(repos);
        }
Exemple #3
0
        private async Task ProcessUploadedTheme(InputFileChangeEventArgs e)
        {
            if (e.FileCount == 0)
            {
                return;
            }

            try
            {
                // Support maximum 5 MB per file
                var stream = e.File.OpenReadStream(5 * 1000 * 1000);

                // Copy the content to a MemoryStream
                using var reader = new StreamReader(stream);
                using var ms     = new MemoryStream();
                await stream.CopyToAsync(ms);

                ms.Seek(0, SeekOrigin.Begin);

                if (e.File.Name.EndsWith(".css"))
                {
                    await ThemeRepo.AddFromCssFile(e.File.Name, ms);
                }
                else if (e.File.Name.EndsWith(".zip"))
                {
                    await ThemeRepo.AddFromZipArchive(ms);
                }
                else
                {
                    throw new NotSupportedException(Loc["UnsupportedThemeFormat"]);
                }

                await js.AlertSuccess(Loc["AllDone"], $"{Loc["ThemeSuccessfullyUploaded"]}: {e.File.Name}");
            }
            catch (Exception ex)
            {
                await js.AlertError(ex.GetType().Name, ex.Message);
            }

            Nav.NavigateTo("/settings/openbullet", true);
        }
Exemple #4
0
 public ThemeManager()
 {
     repo     = new ThemeRepo();
     subjRepo = new SubjectRepo();
     feedRepo = new FeedRepo();
 }