From f582865a2c408254c60fedc1c9100cd6a5ac52b3 Mon Sep 17 00:00:00 2001 From: Eugene Petrenko Date: Thu, 11 Aug 2011 16:49:52 +0400 Subject: [PATCH] feed query initial code --- .idea/libraries/commons_http.xml | 23 ++++++++ nuget-server/nuget-server.iml | 1 + .../META-INF/build-server-plugin-nuget.xml | 5 ++ .../nuget/server/feed/reader/FeedClient.java | 47 ++++++++++++++++ .../server/feed/reader/FeedConstants.java | 25 +++++++++ .../server/feed/reader/NuGetFeedReader.java | 47 ++++++++++++++++ .../tests/integration/FeedReaderTest.java | 56 +++++++++++++++++++ 7 files changed, 204 insertions(+) create mode 100644 .idea/libraries/commons_http.xml create mode 100644 nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/FeedClient.java create mode 100644 nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/FeedConstants.java create mode 100644 nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/NuGetFeedReader.java create mode 100644 nuget-tests/src/jetbrains/buildServer/nuget/tests/integration/FeedReaderTest.java diff --git a/.idea/libraries/commons_http.xml b/.idea/libraries/commons_http.xml new file mode 100644 index 0000000..e02ee9b --- /dev/null +++ b/.idea/libraries/commons_http.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nuget-server/nuget-server.iml b/nuget-server/nuget-server.iml index 0eff86e..0f769ff 100644 --- a/nuget-server/nuget-server.iml +++ b/nuget-server/nuget-server.iml @@ -38,6 +38,7 @@ + diff --git a/nuget-server/src/META-INF/build-server-plugin-nuget.xml b/nuget-server/src/META-INF/build-server-plugin-nuget.xml index 603fd6f..81159e5 100644 --- a/nuget-server/src/META-INF/build-server-plugin-nuget.xml +++ b/nuget-server/src/META-INF/build-server-plugin-nuget.xml @@ -30,4 +30,9 @@ + + + + + \ No newline at end of file diff --git a/nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/FeedClient.java b/nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/FeedClient.java new file mode 100644 index 0000000..40331c4 --- /dev/null +++ b/nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/FeedClient.java @@ -0,0 +1,47 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jetbrains.buildServer.nuget.server.feed.reader; + +import org.apache.http.client.HttpClient; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; +import org.apache.http.params.HttpConnectionParams; +import org.jetbrains.annotations.NotNull; + +/** + * Created by Eugene Petrenko (eugene.petrenko@gmail.com) + * Date: 11.08.11 16:24 + */ +public class FeedClient { + private final HttpClient myClient; + + public FeedClient() { + myClient = new DefaultHttpClient(new ThreadSafeClientConnManager()); + HttpConnectionParams.setConnectionTimeout(myClient.getParams(), 10000); + HttpConnectionParams.setSoTimeout(myClient.getParams(), 10000); + } + + @NotNull + public HttpClient getClient() { + return myClient; + } + + public void dispose() { + myClient.getConnectionManager().shutdown(); + } + +} diff --git a/nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/FeedConstants.java b/nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/FeedConstants.java new file mode 100644 index 0000000..8b3b7db --- /dev/null +++ b/nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/FeedConstants.java @@ -0,0 +1,25 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jetbrains.buildServer.nuget.server.feed.reader; + +/** + * Created by Eugene Petrenko (eugene.petrenko@gmail.com) + * Date: 11.08.11 16:04 + */ +public class FeedConstants { + public static final String FEED_URL = "https://go.microsoft.com/fwlink/?LinkID=206669"; +} diff --git a/nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/NuGetFeedReader.java b/nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/NuGetFeedReader.java new file mode 100644 index 0000000..f0e05c2 --- /dev/null +++ b/nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/NuGetFeedReader.java @@ -0,0 +1,47 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jetbrains.buildServer.nuget.server.feed.reader; + +import org.apache.http.HttpHeaders; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; + +/** + * Created by Eugene Petrenko (eugene.petrenko@gmail.com) + * Date: 11.08.11 15:42 + */ +public class NuGetFeedReader { + private FeedClient myClient; + + public NuGetFeedReader(FeedClient client) { + myClient = client; + } + + public void queryPackage(@NotNull String feedUrl, + @NotNull String packageId) throws IOException { + HttpGet get = new HttpGet(feedUrl + "/Packages()"); + get.getParams().setParameter("$filter", "Id eq '" + packageId + "'"); + get.setHeader(HttpHeaders.ACCEPT_ENCODING, "application/xml"); + final HttpResponse execute = myClient.getClient().execute(get); + + System.out.println(execute); + execute.getEntity().writeTo(System.out); + } +} diff --git a/nuget-tests/src/jetbrains/buildServer/nuget/tests/integration/FeedReaderTest.java b/nuget-tests/src/jetbrains/buildServer/nuget/tests/integration/FeedReaderTest.java new file mode 100644 index 0000000..bd26772 --- /dev/null +++ b/nuget-tests/src/jetbrains/buildServer/nuget/tests/integration/FeedReaderTest.java @@ -0,0 +1,56 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jetbrains.buildServer.nuget.tests.integration; + +import jetbrains.buildServer.BaseTestCase; +import jetbrains.buildServer.nuget.server.feed.reader.FeedClient; +import jetbrains.buildServer.nuget.server.feed.reader.FeedConstants; +import jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.io.IOException; + +/** + * Created by Eugene Petrenko (eugene.petrenko@gmail.com) + * Date: 11.08.11 16:04 + */ +public class FeedReaderTest extends BaseTestCase { + private NuGetFeedReader myReader; + private FeedClient myClient; + + @BeforeMethod + @Override + protected void setUp() throws Exception { + super.setUp(); + myClient = new FeedClient(); + myReader = new NuGetFeedReader(myClient); + } + + @AfterMethod + @Override + protected void tearDown() throws Exception { + super.tearDown(); + myClient.dispose(); + } + + @Test + public void testRead() throws IOException { + myReader.queryPackage(FeedConstants.FEED_URL, "NuGet.CommandLine"); + } +} -- 2.23.3