Beispiel #1
0
        public static PackageSearchResult Search(string exactId, int page = 0, bool prereleased = false)
        {
            var result = SearchResult.Create(exactId, SearchAutoCompleteService, page, prereleased);
            PackageSearchResult search = new PackageSearchResult();

            search.MaximumPage = result.MaximumPage;
            search.CurrentPage = page + 1;

            foreach (var item in result.Data)
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Registrations + item.ToLower() + "/index.json");;
                using (var response = request.GetResponse()) {
                    JsonSerializerSettings settings = new JsonSerializerSettings();
                    StreamReader           reader   = new StreamReader(response.GetResponseStream());
                    string json = reader.ReadToEnd();
                    var    regs = JsonConvert.DeserializeObject <PackageMetadata>(json);

                    Package pkg = new Package();

                    int i = -1;
                    foreach (var leaves in regs.Catalogues)
                    {
                        i++;
                        if (leaves.Items == null)
                        {
                            HttpWebRequest leafReq = (HttpWebRequest)HttpWebRequest.Create(leaves.Id);;
                            using (var leafRes = leafReq.GetResponse()) {
                                JsonSerializerSettings s = new JsonSerializerSettings();
                                StreamReader           r = new StreamReader(leafRes.GetResponseStream());
                                string j = r.ReadToEnd();
                                try {
                                    var leaf = JsonConvert.DeserializeObject <PackageMetadataLeaf>(j);
                                    regs.Catalogues[i] = leaf;
                                } catch {
                                    string err = j;
                                    continue;
                                }
                            }
                        }

                        foreach (var subvers in regs.Catalogues[i].Items)
                        {
                            Module module = new Module();
                            module.IconUrl            = subvers.Entry.IconUrl;
                            module.LicenseUrl         = subvers.Entry.LicenseUrl;
                            module.ProjectUrl         = subvers.Entry.ProjectUrl;
                            module.Summary            = subvers.Entry.Summary;
                            module.Description        = subvers.Entry.Description;
                            module.Version            = subvers.Entry.Version;
                            module.License            = subvers.Entry.LicenseExpression;
                            module.AcceptanceRequired = subvers.Entry.RequireLicenseAcceptance;
                            module.Publish            = DateTime.Parse(subvers.Entry.Published);
                            module.Listed             = subvers.Entry.Listed;
                            module.Author             = subvers.Entry.Authors;
                            pkg.Name        = subvers.Entry.PackageId;
                            module.Name     = subvers.Entry.PackageId;
                            module.Download = subvers.Entry.PackageContent;

                            foreach (var group in subvers.Entry.DependencyGroups)
                            {
                                if (group.TargetFramework == ".NetCore3.1")
                                {
                                    foreach (var dep in group.Dependencies)
                                    {
                                        DependencySink sink = new DependencySink();
                                        sink.Id           = dep.PackageId;
                                        sink.Registration = dep.Registration;

                                        string   ver  = dep.VersionRange.Substring(1, dep.VersionRange.Length - 2);
                                        string[] vers = ver.Split(',');
                                        if (string.IsNullOrWhiteSpace(vers[0]))
                                        {
                                            sink.Minimal = Version.Parse(vers[0]);
                                        }
                                        if (string.IsNullOrWhiteSpace(vers[1]))
                                        {
                                            sink.Maximum = Version.Parse(vers[1]);
                                        }
                                        module.Dependency.Add(sink);
                                    }
                                }
                            }

                            pkg.Modules.Add(module);
                        }
                    }

                    search.Packages.Add(pkg);
                }
            }

            return(search);
        }
Beispiel #2
0
        public Package GetPackage(string name)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Registrations + name.ToLower() + "/index.json");;

            request.Method = "GET";

            try {
                using (var response = request.GetResponse()) {
                    JsonSerializerSettings settings = new JsonSerializerSettings();
                    StreamReader           reader   = new StreamReader(response.GetResponseStream());
                    string json = reader.ReadToEnd();
                    var    regs = JsonConvert.DeserializeObject <PackageMetadata>(json);

                    Package pkg = new Package();

                    foreach (var leaves in regs.Catalogues)
                    {
                        foreach (var subvers in leaves.Items)
                        {
                            Module module = new Module();
                            module.IconUrl            = subvers.Entry.IconUrl;
                            module.LicenseUrl         = subvers.Entry.LicenseUrl;
                            module.ProjectUrl         = subvers.Entry.ProjectUrl;
                            module.Summary            = subvers.Entry.Summary;
                            module.Description        = subvers.Entry.Description;
                            module.Version            = subvers.Entry.Version;
                            module.License            = subvers.Entry.LicenseExpression;
                            module.AcceptanceRequired = subvers.Entry.RequireLicenseAcceptance;
                            module.Publish            = DateTime.Parse(subvers.Entry.Published);
                            module.Listed             = subvers.Entry.Listed;
                            module.Author             = subvers.Entry.Authors;
                            pkg.Name        = subvers.Entry.PackageId;
                            module.Name     = subvers.Entry.PackageId;
                            module.Download = subvers.Entry.PackageContent;

                            foreach (var group in subvers.Entry.DependencyGroups)
                            {
                                if (group.TargetFramework == ".NetCore3.1")
                                {
                                    foreach (var dep in group.Dependencies)
                                    {
                                        DependencySink sink = new DependencySink();
                                        sink.Id           = dep.PackageId;
                                        sink.Registration = dep.Registration;

                                        string   ver  = dep.VersionRange.Substring(1, dep.VersionRange.Length - 2);
                                        string[] vers = ver.Split(',');
                                        if (string.IsNullOrWhiteSpace(vers[0]))
                                        {
                                            sink.Minimal = Version.Parse(vers[0]);
                                        }
                                        if (string.IsNullOrWhiteSpace(vers[1]))
                                        {
                                            sink.Maximum = Version.Parse(vers[1]);
                                        }
                                        module.Dependency.Add(sink);
                                    }
                                }
                            }

                            pkg.Modules.Add(module);
                        }
                    }

                    return(pkg);
                }
            } catch { return(null); }
        }