2 * Copyright 2000-2011 JetBrains s.r.o.
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
17 package jetbrains.buildServer.nuget.server.feed.reader;
\r
19 import com.intellij.openapi.diagnostic.Logger;
\r
20 import com.intellij.openapi.util.Pair;
\r
21 import jetbrains.buildServer.util.FileUtil;
\r
22 import jetbrains.buildServer.util.XmlUtil;
\r
23 import org.apache.http.HttpHeaders;
\r
24 import org.apache.http.HttpResponse;
\r
25 import org.apache.http.client.methods.HttpGet;
\r
26 import org.jdom.Element;
\r
27 import org.jdom.JDOMException;
\r
28 import org.jetbrains.annotations.NotNull;
\r
30 import java.io.IOException;
\r
31 import java.net.URISyntaxException;
\r
34 * Created by Eugene Petrenko (eugene.petrenko@gmail.com)
\r
35 * Date: 11.08.11 15:42
\r
37 public class NuGetFeedReader {
\r
38 private static final Logger LOG = Logger.getInstance(NuGetFeedReader.class.getName());
\r
39 private final FeedClient myClient;
\r
40 private final UrlResolver myResolver;
\r
42 public NuGetFeedReader(FeedClient client, UrlResolver resolver) {
\r
44 myResolver = resolver;
\r
48 public void queryPackage(@NotNull String feedUrl,
\r
49 @NotNull String packageId) throws IOException {
\r
50 LOG.debug("Connecting to NuGet feed url: " + feedUrl);
\r
51 final Pair<String, HttpResponse> pair = myResolver.resolvePath(feedUrl);
\r
52 feedUrl = pair.first;
\r
53 LOG.debug("Resolved NuGet feed URL to " + feedUrl);
\r
54 final Element element = toDocument(pair.second);
\r
56 LOG.debug("Recieved xml: " + XmlUtil.to_s(element));
\r
57 HttpGet get = new HttpGet(feedUrl + "/Packages()?$filter=Id%20eq%20'" + packageId +"'");
\r
58 get.setHeader(HttpHeaders.ACCEPT_ENCODING, "application/atom+xml");
\r
59 final HttpResponse execute = myClient.getClient().execute(get);
\r
61 System.out.println(execute);
\r
62 execute.getEntity().writeTo(System.out);
\r
65 private Element toDocument(HttpResponse response) throws IOException {
\r
67 return FileUtil.parseDocument(response.getEntity().getContent(), false);
\r
68 } catch (final JDOMException e) {
\r
69 throw new IOException("Failed to parse xml document. " + e.getMessage()) {{
\r