// ----< posts checkout request to the server on button click >--------------------
        private void DownloadDependents(RepoFileMetadata repoFileMeta)
        {
            RepoClientState state = (RepoClientState)this.DataContext;

            foreach (RepoFile dep in repoFileMeta.Dependencies)
            {
                Download(dep);
            }
        }
예제 #2
0
        public void GetFileMetadata(String package, String ns, String filename,
                                    int version, String userId, Action <GetFileMetadataResponse> action,
                                    bool verbose = false)
        {
            string uniqueId = GetUniqueId();

            dispatcher_[uniqueId] = (CsMessage response) => {
                List <RepoFile> dependencies = new List <RepoFile>();
                int             count        = 1;
                while (true)
                {
                    if (!response.containsKey($"dependency-{count}"))
                    {
                        break;
                    }

                    string fileInfo = response.value($"dependency-{count}");
                    dependencies.Add(RepoFile.parse(fileInfo));

                    count++;
                }

                RepoFileMetadata metadata = new RepoFileMetadata
                {
                    Author       = response.value("author"),
                    Description  = response.value("description"),
                    Dependencies = dependencies
                };
                action(new GetFileMetadataResponse {
                    Metadata = metadata, RequestId = uniqueId
                });
                dispatcher_.Remove(uniqueId);
            };

            CsMessage msg = new CsMessage();

            msg.add("to", CsEndPoint.toString(serverEndPoint_));
            msg.add("from", CsEndPoint.toString(endPoint_));
            msg.add("command", "get-file-metadata");
            msg.add("requestId", uniqueId);
            msg.add("userId", userId);
            if (verbose)
            {
                msg.add("verbose", "yes");
            }
            msg.add("package", package);
            msg.add("namespace", ns);
            msg.add("filename", filename);
            msg.add("version", version.ToString());
            translater_.postMessage(msg);
        }
        // ----< displays a message box with the metadata information of selected file >--------------------
        private void DisplayMetadata(RepoFile repoFile, RepoFileMetadata metadata)
        {
            RepoClientState state = (RepoClientState)this.DataContext;

            state.BrowseProps.SelectedRepoFile = repoFile;
            IEnumerable <String> depList = metadata.Dependencies.Select((RepoFile depFile) => $"> {depFile.Filename} v{depFile.Version}");

            FileMetadataPopupWindow fileMetadataPopup = new FileMetadataPopupWindow();

            fileMetadataPopup.Title             = $"Metadata for {repoFile.Filename} v{repoFile.Version}";
            fileMetadataPopup.Author.Text       = metadata.Author;
            fileMetadataPopup.Description.Text  = metadata.Description;
            fileMetadataPopup.Dependencies.Text = String.Join("\n", depList);
            fileMetadataPopup.Show();
        }