private async Task <UpdateInfoData> Do(GetUpdateInfo request)
        {
            var r = new UpdateInfoData()
            {
                LoadedVersion      = Assembly.GetExecutingAssembly().GetName().Version.ToString(),
                PendingLoadVersion = GetPendingLoadVersion(),
            };

            try
            {
                var resp = await client.GetAsync("https://api.github.com/repos/JavScraper/Emby.Plugins.JavScraper/releases/latest");

                if (resp.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    var data = jsonSerializer.DeserializeFromStream <Rootobject>(await resp.Content.ReadAsStreamAsync());
                    r.UpdateMessage = data.body;

                    foreach (var v in data.assets.Where(o => o.name.IndexOf("JavScraper", StringComparison.OrdinalIgnoreCase) >= 0 && o.name.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)))
                    {
                        var m = regexVersion.Match(v.name);
                        if (m.Success)
                        {
                            r.LatestVersion = m.ToString();
                            r.LatestUrl     = v.browser_download_url;
                            break;
                        }
                    }
                }
                else
                {
                    r.ErrorMessage = "获取新版下失败。";
                    return(r);
                }
            }
            catch (Exception ex)
            {
                r.ErrorMessage = ex.Message;
                return(r);
            }

            //r.PendingLoadVersion = "1.0.0";
            if (request.update == true && r.HasNewVersion)
            {
                try
                {
                    var ms = await client.GetStreamAsync(r.LatestUrl);

                    zipClient.ExtractAllFromZip(ms, appPaths.PluginsPath, true);
                    r.PendingLoadVersion = GetPendingLoadVersion();
                }
                catch (Exception ex)
                {
                    r.ErrorMessage = $"更新失败:{ex.Message}";
                }
            }

            return(r);
        }
Ejemplo n.º 2
0
 public object Get(GetUpdateInfo request)
 {
     return(Task.Run(() => Do(request)).GetAwaiter().GetResult());
 }