public ContentController(IContentFacade facade) { this.facade = facade; }
public TasksController(ICourseTopicFacade courseTopicFacade, IContentFacade contentFacade) { this.courseTopicFacade = courseTopicFacade; this.contentFacade = contentFacade; }
public Layout(IContentFacade contentFacade, SitePage page, Settings settings) { this.ContentFacade = contentFacade ?? throw new ArgumentNullException(nameof(contentFacade)); this.Page = page ?? throw new ArgumentNullException(nameof(page)); this.Settings = settings ?? throw new ArgumentNullException(nameof(settings)); }
private async Task ProcessSearchSafe(IReadOnlyList <PackageInfo> packages, IContentFacade unused, HttpContext context) { // targetFramework = '...' // $filter = IsLatestVersion IQueryCollection query = context.Request.Query; int skip = 0; int top = 0; bool check = int.TryParse(query.GetFirst("$skip", string.Empty), out skip) && int.TryParse(query.GetFirst("$top", string.Empty), out top); if (check == false) { context.Response.StatusCode = 400; lock (Globals.ConsoleLock) Console.WriteLine($"Search: return {context.Response.StatusCode}"); return; } string searchTerm = query.GetFirst("searchTerm", "").Trim(Characters.SingleQuote); var packagesMatchingByIdIndices = new List <int>(); for (int packageIndex = 0; packageIndex < packages.Count; packageIndex++) { if (packages[packageIndex].Id.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase) > -1) { packagesMatchingByIdIndices.Add(packageIndex); } } int totalPacketCount = packagesMatchingByIdIndices.Count; top = Math.Min(top, totalPacketCount); var matchingPackageIndices = packagesMatchingByIdIndices .Skip(skip) .Take(top); lock (Globals.ConsoleLock) { Console.WriteLine(); Console.WriteLine("--- Search -----------------------------------"); foreach (var index in matchingPackageIndices) { Console.WriteLine($"{packages[index].Id} - {packages[index].LatestVersion}"); } Console.WriteLine("----------------------------------------------"); Console.WriteLine(); } var doc = new XElement( XmlElements.feed, new XAttribute(XmlElements.baze, XmlNamespaces.baze), new XAttribute(XmlElements.m, XmlNamespaces.m), new XAttribute(XmlElements.d, XmlNamespaces.d), new XAttribute(XmlElements.georss, XmlNamespaces.georss), new XAttribute(XmlElements.gml, XmlNamespaces.gml), new XElement(XmlElements.m_count, totalPacketCount.ToString()), matchingPackageIndices.Select(idx => new XElement( XmlElements.entry, new XElement(XmlElements.id, $"{context.Request.Scheme}://{context.Request.Host}{Segment}/Packages(Id='{packages[idx].Id}',Version='{packages[idx].LatestVersion}')"), new XElement( XmlElements.content, new XAttribute("type", "application/zip"), new XAttribute("src", $"{context.Request.Scheme}://{context.Request.Host}{Segment}/download/{packages[idx].LatestContentId}") ), new XElement( XmlElements.m_properties, new XElement(XmlElements.d_id, packages[idx].Id), new XElement(XmlElements.d_version, packages[idx].LatestVersion) ) ) ) ); var bytes = Encoding.UTF8.GetBytes(doc.ToString(SaveOptions.DisableFormatting)); context.Response.StatusCode = 200; context.Response.ContentType = "application/xml"; await context.Response.Body.WriteAsync(bytes, 0, bytes.Length); }