Esempio n. 1
0
        protected virtual dynamic ProcessResponse(INancyModule module, HttpRequestMessage request, IFeed feed, IQueryable <IInternalPackage> ds)
        {
            long?total = request.GetInlineCount();

            var packageRepository = _packageRepositoryFactory.Create(feed.Id);

            bool endsWithSlash = _portalConfig.ListenPrefixes.EndsWith("/");

            var baseAddress = string.Format("{0}{1}feeds/{2}/api/v2/", _portalConfig.ListenPrefixes, endsWithSlash ? "" : "/", feed.Name);

            var stream = ODataPackages.CreatePackagesStream(baseAddress, packageRepository, baseAddress,
                                                            ds, feed.Id, total.HasValue ? int.Parse(total.Value.ToString()) : 0);

            StreamReader reader = new StreamReader(stream);
            string       text   = reader.ReadToEnd();

            return(new Response
            {
                ContentType = "application/atom+xml; charset=utf-8",
                Contents = contentStream =>
                {
                    var byteData = Encoding.UTF8.GetBytes(text);
                    contentStream.Write(byteData, 0, byteData.Length);
                }
            });
        }
        protected virtual dynamic ProcessResponse(INancyModule module, IFeed feed, IInternalPackage package)
        {
            bool endsWithSlash = _portalConfig.ListenPrefixes.EndsWith("/");

            var baseAddress = string.Format("{0}{1}feeds/{2}/api/v2/", _portalConfig.ListenPrefixes, endsWithSlash ? "" : "/", feed.Name);

            NuGetODataModelBuilderODataPackage builder = new NuGetODataModelBuilderODataPackage();

            builder.Build();

            var writerSettings = new ODataMessageWriterSettings()
            {
                Indent          = true,
                CheckCharacters = false,
                BaseUri         = new Uri(baseAddress),
                Version         = ODataVersion.V3
            };

            writerSettings.SetContentType(ODataFormat.Atom);

            var responseMessage = new MemoryResponseMessage();
            var writer          = new ODataMessageWriter(responseMessage, writerSettings);

            var entryWriter = writer.CreateODataEntryWriter();

            entryWriter.WriteStart(ODataPackages.MapPackageToEntry(baseAddress, new ODataPackage(package)));
            entryWriter.WriteEnd();

            var msgStream = responseMessage.GetStream();

            msgStream.Seek(0, SeekOrigin.Begin);

            StreamReader reader = new StreamReader(msgStream);
            string       text   = reader.ReadToEnd();

            return(new Response
            {
                ContentType = "application/atom+xml; charset=utf-8",
                Contents = contentStream =>
                {
                    var byteData = Encoding.UTF8.GetBytes(text);
                    contentStream.Write(byteData, 0, byteData.Length);
                }
            });
        }