コード例 #1
0
        public void ParseRepository(string data)
        {
            // parse repository
            repository  = JsonUtility.FromJson <RepositoryItem>(data);
            allPackages = new List <GithubPackage>();
            // allPackages.AddRange(repositoryItem.packages);
            for (int i = 0; i < repository.packages.Count; i++)
            {
                var    packageInfo      = repository.packages[i].Split('/');
                string authorLocalPath  = Application.temporaryCachePath + "/" + packageInfo[0];
                string packageLocalPath = authorLocalPath + "/" + packageInfo[1];
                if (!Directory.Exists(packageLocalPath))
                {
                    Directory.CreateDirectory(packageLocalPath);
                }

                string packageLocalJsonPath = packageLocalPath + "/" + packageInfo[1] + ".json";
                if (File.Exists(packageLocalJsonPath))
                {
                    string packageData = File.ReadAllText(packageLocalJsonPath);
                    ParsePackage(packageData);
                }
                else
                {
                    // https://api.github.com/repos/omid3098/OpenAudio
                    var url = "https://api.github.com/repos/" + repository.packages[i];
                    Debug.Log(url);
                    EditorCoroutine.start(ConnectionTools.GetData(url, "", null, (_data) =>
                    {
                        File.WriteAllText(packageLocalJsonPath, _data);
                        ParsePackage(_data);
                    }, null));
                }
            }
        }
コード例 #2
0
 private void OnEnable()
 {
     Debug.Log("OnEnable");
     if (controller == null)
     {
         controller = new OpenPackageManagerController();
     }
     repoLocalPath = Path.Combine(cachePath, repositoryLocalFileName);
     if (File.Exists(repoLocalPath))
     {
         // load local repository
         Debug.Log("local repository exists.");
         var data = File.ReadAllText(repoLocalPath);
         controller.ParseRepository(data);
         drawer = new OpenPackageManagerDrawer(controller);
     }
     else
     {
         // download repository from github
         foreach (var link in OpenPackageManagerConfig.RepositoryLinks)
         {
             Debug.Log("local repository does not exist. downloading: " + link);
             EditorCoroutine.start(ConnectionTools.GetData(link, null, (prog) => { Debug.Log("downloading " + prog); }, (data) =>
             {
                 Debug.Log(("Download complete!"));
                 // write file locally
                 File.WriteAllText(repoLocalPath, data);
                 controller.ParseRepository(data);
                 drawer = new OpenPackageManagerDrawer(controller);
             }, (data) => { Debug.Log("download faild: " + data); }));
         }
     }
 }
コード例 #3
0
 private void DrawPackage(GithubPackage package)
 {
     { // Draw package name, version, author and description
         EditorGUILayout.BeginHorizontal();
         {
             EditorGUILayout.BeginVertical();
             {
                 EditorGUILayout.BeginHorizontal();
                 {
                     EditorGUILayout.LabelField(package.name, EditorStyles.boldLabel);
                     if (GUILayout.Button("Author: " + package.owner.login, linkButtonStyle))
                     {
                         Application.OpenURL(controller.repository.server + package.owner.login);
                     }
                     if (GUILayout.Button("Source", linkButtonStyle))
                     {
                         Application.OpenURL(controller.repository.server + package.full_name);
                     }
                     EditorGUILayout.LabelField("Size: " + StringTools.GetBytesReadable(package.size * 1000));
                 }
                 EditorGUILayout.EndHorizontal();
                 EditorGUILayout.LabelField("Description: " + package.description);
             }
             EditorGUILayout.EndVertical();
         }
         // Draw Download Button
         string downloadLable = "download";
         if (downloadingPackages.Contains(package.name))
         {
             downloadLable = downloadProgress + "%";
         }
         if (GUILayout.Button(downloadLable, buttonWidth, buttonHeight))
         {
             downloadingPackages.Add(package.name);
             ConnectionTools.DownloadPackage(package, DownloadingProgress, (byteArray) =>
             {
                 downloadingPackages.Remove(package.name);
             }, (error) =>
             {
                 downloadingPackages.Remove(package.name);
             });
         }
         EditorGUILayout.EndHorizontal();
     }
     DrawLine();
 }