コード例 #1
0
        static JToken FindById(SecureSearcherManager searcherManager, string id, string tenantId, string scheme)
        {
            IndexSearcher searcher = searcherManager.Get();

            try
            {
                string analyzedId = id.ToLowerInvariant();

                BooleanQuery query = new BooleanQuery();
                query.Add(new BooleanClause(new TermQuery(new Term("FullId", analyzedId)), Occur.MUST));

                Filter filter = searcherManager.GetFilter(tenantId, new string [] { "http://schema.nuget.org/schema#ApiAppPackage" });

                TopDocs topDocs = searcher.Search(query, 1000);

                if (topDocs.TotalHits > 0)
                {
                    Uri     registrationBaseAddress     = searcherManager.RegistrationBaseAddress[scheme];
                    JObject registrationObj             = new JObject();
                    string  registrationRelativeAddress = string.Format("{0}/index.json", id.ToLowerInvariant());
                    registrationObj["registration"] = new Uri(registrationBaseAddress, registrationRelativeAddress).AbsoluteUri;

                    JArray data = new JArray();
                    for (int i = 0; i < topDocs.ScoreDocs.Length; i++)
                    {
                        Document document = searcher.Doc(topDocs.ScoreDocs[i].Doc);

                        JObject versionObj = new JObject();
                        ServiceHelpers.AddField(versionObj, document, "version", "Version");
                        ServiceHelpers.AddField(versionObj, document, "packageContent", "PackageContent");
                        ServiceHelpers.AddField(versionObj, document, "catalogEntry", "CatalogEntry");

                        data.Add(versionObj);
                    }

                    registrationObj["data"] = data;

                    return(registrationObj);
                }
                else
                {
                    return(null);
                }
            }
            finally
            {
                searcherManager.Release(searcher);
            }
        }
コード例 #2
0
        public static JToken Search(SecureSearcherManager searcherManager, string tenantId, string currentOwner, string scheme, string q, bool countOnly, bool includePrerelease, int skip, int take, bool includeExplanation)
        {
            IndexSearcher searcher = searcherManager.Get();
            try
            {
                Filter filter = searcherManager.GetFilter(tenantId, new[] { "http://schema.nuget.org/schema#ApiAppPackage" }, includePrerelease, false);

                Query query = MakeQuery(q);

                TopDocs topDocs = searcher.Search(query, filter, skip + take);

                return MakeResult(searcher, currentOwner, scheme, topDocs, skip, take, searcherManager, includeExplanation, query);
            }
            finally
            {
                searcherManager.Release(searcher);
            }
        }
コード例 #3
0
        public static JToken Search(SecureSearcherManager searcherManager, string tenantId, string currentOwner, string scheme, string q, bool countOnly, bool includePrerelease, int skip, int take, bool includeExplanation)
        {
            IndexSearcher searcher = searcherManager.Get();

            try
            {
                Filter filter = searcherManager.GetFilter(tenantId, new string [] { "http://schema.nuget.org/schema#ApiAppPackage" }, includePrerelease, false);

                Query query = MakeQuery(q);

                TopDocs topDocs = searcher.Search(query, filter, skip + take);

                return(MakeResult(searcher, currentOwner, scheme, topDocs, skip, take, searcherManager, includeExplanation, query));
            }
            finally
            {
                searcherManager.Release(searcher);
            }
        }
コード例 #4
0
        static bool IsAuthorized(SecureSearcherManager searcherManager, string tenantId, string containerName, string blobName)
        {
            searcherManager.MaybeReopen();

            IndexSearcher searcher = searcherManager.Get();

            try
            {
                Filter  filter       = searcherManager.GetFilter(tenantId, new string[] { "http://schema.nuget.org/schema#ApiAppPackage", "http://schema.nuget.org/schema#CatalogInfrastructure" });
                string  relativePath = string.Format("/{0}/{1}", containerName, blobName);
                Query   query        = new TermQuery(new Term("StoragePath", relativePath));
                TopDocs topDocs      = searcher.Search(query, 1);
                return(topDocs.TotalHits > 0);
            }
            finally
            {
                searcherManager.Release(searcher);
            }
        }
コード例 #5
0
        static bool IsAuthorized(SecureSearcherManager searcherManager, string tenantId, string containerName, string blobName)
        {
            searcherManager.MaybeReopen();

            IndexSearcher searcher = searcherManager.Get();

            try
            {
                Filter filter = searcherManager.GetFilter(tenantId, new string[] { "http://schema.nuget.org/schema#ApiAppPackage", "http://schema.nuget.org/schema#CatalogInfrastructure" });
                string relativePath = string.Format("/{0}/{1}", containerName, blobName);
                Query query = new TermQuery(new Term("StoragePath", relativePath));
                TopDocs topDocs = searcher.Search(query, 1);
                return (topDocs.TotalHits > 0);
            }
            finally
            {
                searcherManager.Release(searcher);
            }
        }
コード例 #6
0
        static JToken FindByIdAndVersion(SecureSearcherManager searcherManager, string id, string version, string tenantId, string scheme)
        {
            IndexSearcher searcher = searcherManager.Get();

            try
            {
                string analyzedId      = id.ToLowerInvariant();
                string analyzedVersion = NuGetVersion.Parse(version).ToNormalizedString();

                BooleanQuery query = new BooleanQuery();
                query.Add(new BooleanClause(new TermQuery(new Term("FullId", analyzedId)), Occur.MUST));
                query.Add(new BooleanClause(new TermQuery(new Term("Version", analyzedVersion)), Occur.MUST));

                Filter filter = searcherManager.GetFilter(tenantId, new string [] { "http://schema.nuget.org/schema#ApiAppPackage" });

                TopDocs topDocs = searcher.Search(query, filter, 1);

                if (topDocs.TotalHits > 0)
                {
                    Uri     registrationBaseAddress = searcherManager.RegistrationBaseAddress[scheme];
                    JObject obj = new JObject();
                    obj["registration"] = new Uri(registrationBaseAddress, string.Format("{0}/index.json", id.ToLowerInvariant())).AbsoluteUri;

                    Document document = searcher.Doc(topDocs.ScoreDocs[0].Doc);
                    ServiceHelpers.AddField(obj, document, "packageContent", "PackageContent");
                    ServiceHelpers.AddField(obj, document, "catalogEntry", "CatalogEntry");

                    return(obj);
                }
                else
                {
                    return(null);
                }
            }
            finally
            {
                searcherManager.Release(searcher);
            }
        }
コード例 #7
0
        static JToken FindByIdAndVersion(SecureSearcherManager searcherManager, string id, string version, string tenantId, string scheme)
        {
            IndexSearcher searcher = searcherManager.Get();
            try
            {
                string analyzedId = id.ToLowerInvariant();
                string analyzedVersion = NuGetVersion.Parse(version).ToNormalizedString();

                BooleanQuery query = new BooleanQuery();
                query.Add(new BooleanClause(new TermQuery(new Term("FullId", analyzedId)), Occur.MUST));
                query.Add(new BooleanClause(new TermQuery(new Term("Version", analyzedVersion)), Occur.MUST));

                Filter filter = searcherManager.GetFilter(tenantId, new string [] { "http://schema.nuget.org/schema#ApiAppPackage" });

                TopDocs topDocs = searcher.Search(query, filter, 1);

                if (topDocs.TotalHits > 0)
                {
                    Uri registrationBaseAddress = searcherManager.RegistrationBaseAddress[scheme];
                    JObject obj = new JObject();
                    obj["registration"] = new Uri(registrationBaseAddress, string.Format("{0}/index.json", id.ToLowerInvariant())).AbsoluteUri;

                    Document document = searcher.Doc(topDocs.ScoreDocs[0].Doc);
                    ServiceHelpers.AddField(obj, document, "packageContent", "PackageContent");
                    ServiceHelpers.AddField(obj, document, "catalogEntry", "CatalogEntry");

                    return obj;
                }
                else
                {
                    return null;
                }
            }
            finally
            {
                searcherManager.Release(searcher);
            }
        }
コード例 #8
0
        static JToken FindById(SecureSearcherManager searcherManager, string id, string tenantId, string scheme)
        {
            IndexSearcher searcher = searcherManager.Get();
            try
            {
                string analyzedId = id.ToLowerInvariant();

                BooleanQuery query = new BooleanQuery();
                query.Add(new BooleanClause(new TermQuery(new Term("FullId", analyzedId)), Occur.MUST));

                Filter filter = searcherManager.GetFilter(tenantId, new string [] { "http://schema.nuget.org/schema#ApiAppPackage" });

                TopDocs topDocs = searcher.Search(query, 1000);

                if (topDocs.TotalHits > 0)
                {
                    Uri registrationBaseAddress = searcherManager.RegistrationBaseAddress[scheme];
                    JObject registrationObj = new JObject();
                    string registrationRelativeAddress = string.Format("{0}/index.json", id.ToLowerInvariant());
                    registrationObj["registration"] = new Uri(registrationBaseAddress, registrationRelativeAddress).AbsoluteUri;

                    JArray data = new JArray();
                    for (int i = 0; i < topDocs.ScoreDocs.Length; i++)
                    {
                        Document document = searcher.Doc(topDocs.ScoreDocs[i].Doc);

                        JObject versionObj = new JObject();
                        ServiceHelpers.AddField(versionObj, document, "version", "Version");
                        ServiceHelpers.AddField(versionObj, document, "packageContent", "PackageContent");
                        ServiceHelpers.AddField(versionObj, document, "catalogEntry", "CatalogEntry");

                        data.Add(versionObj);
                    }

                    registrationObj["data"] = data;

                    return registrationObj;
                }
                else
                {
                    return null;
                }
            }
            finally
            {
                searcherManager.Release(searcher);
            }
        }