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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }