Exemple #1
0
        private static string GetSearchResult(List <Package> packages)
        {
            Uri    uri     = new Uri(BaseUrl);
            string baseUri = uri.Scheme + "://" + uri.Host + ":" + uri.Port;
            string apiUri  = baseUri + "/api/v2/";

            DateTime updated = packages.Any()
                                   ? packages.OrderByDescending(p => p.DateUpdated).First().DateUpdated
                                   : DateTime.UtcNow;

            SeachFeed.feed feed = new SeachFeed.feed
            {
                @base   = apiUri,
                count   = packages.Count,
                updated = updated,
                link    = new SeachFeed.feedLink(apiUri + "Packages"),
                entry   = packages.Select(p => Search.GetPackageEntry(p, uri)).ToArray()
            };

            XmlSerializer serializer = new XmlSerializer(typeof(SeachFeed.feed));
            MemoryStream  ms         = new MemoryStream();

            serializer.Serialize(ms, feed);
            ms.Position = 0;
            return(new StreamReader(ms).ReadToEnd());
        }
        public static HttpResponseMessage Invoke(HttpRequestMessage request, string filter, string orderby, bool desc,
                                                 string searchTerm, string targetFramework, bool includePrerelease,
                                                 int skip, int stop)
        {
            Uri  uri = request.RequestUri;
            bool filterIsLatestVersion = filter == "IsLatestVersion";

            List <Package> packages = ReadPackages(filterIsLatestVersion, orderby, desc, searchTerm, targetFramework,
                                                   includePrerelease, skip, stop);

            DateTime updated = packages.Any()
                ? packages.OrderByDescending(p => p.DateUpdated).First().DateUpdated
                : DateTime.UtcNow;

            string baseUri = uri.Scheme + "://" + uri.Host + ":" + uri.Port;
            string apiUri  = baseUri + "/api/v2/";

            SeachFeed.feed feed = new SeachFeed.feed
            {
                @base   = apiUri,
                count   = packages.Count,
                updated = updated,
                link    = new SeachFeed.feedLink(apiUri + "Packages"),
                entry   = packages.Select(p => GetPackageEntry(p, uri)).ToArray()
            };

            XmlSerializer serializer = new XmlSerializer(typeof(SeachFeed.feed));
            MemoryStream  ms         = new MemoryStream();

            serializer.Serialize(ms, feed);
            ms.Position = 0;
            string result = new StreamReader(ms).ReadToEnd();

            HttpResponseMessage res = request.CreateResponse(HttpStatusCode.OK);

            res.Content = new StringContent(result);

            res.Content.Headers.Remove("Content-Type");
            res.Content.Headers.Add("Content-Type", "application/atom+xml;type=entry;charset=utf-8");
            res.Headers.Add("DataServiceVersion", "2.0;");

            return(res);
        }