You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2017/02/02 14:34:22 UTC
[5/9] jclouds-labs git commit: add AddApiVersionToRequest filter
add AddApiVersionToRequest filter
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/86bfeab8
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/86bfeab8
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/86bfeab8
Branch: refs/heads/2.0.x
Commit: 86bfeab8f9082759542d70b5d75d0d0235dddcec
Parents: b7f3923
Author: Andrea Turli <an...@gmail.com>
Authored: Thu Jan 12 10:21:24 2017 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Thu Feb 2 15:23:25 2017 +0100
----------------------------------------------------------------------
.../org/jclouds/packet/PacketApiMetadata.java | 1 +
.../org/jclouds/packet/features/ProjectApi.java | 3 +-
.../packet/filters/AddApiVersionToRequest.java | 57 ++++++++++++++++++++
.../compute/internal/BasePacketApiMockTest.java | 5 +-
4 files changed, 63 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/86bfeab8/packet/src/main/java/org/jclouds/packet/PacketApiMetadata.java
----------------------------------------------------------------------
diff --git a/packet/src/main/java/org/jclouds/packet/PacketApiMetadata.java b/packet/src/main/java/org/jclouds/packet/PacketApiMetadata.java
index 75ba0e6..e05685e 100644
--- a/packet/src/main/java/org/jclouds/packet/PacketApiMetadata.java
+++ b/packet/src/main/java/org/jclouds/packet/PacketApiMetadata.java
@@ -65,6 +65,7 @@ public class PacketApiMetadata extends BaseHttpApiMetadata<PacketApi> {
.documentation(URI.create("https://www.packet.net/help/api/#"))
.defaultEndpoint("https://api.packet.net")
.defaultProperties(PacketApiMetadata.defaultProperties())
+ .version("1")
//.view(typeToken(ComputeServiceContext.class))
.defaultModules(ImmutableSet.<Class<? extends Module>>builder()
.add(PacketHttpApiModule.class)
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/86bfeab8/packet/src/main/java/org/jclouds/packet/features/ProjectApi.java
----------------------------------------------------------------------
diff --git a/packet/src/main/java/org/jclouds/packet/features/ProjectApi.java b/packet/src/main/java/org/jclouds/packet/features/ProjectApi.java
index e6bf0ca..afdf1ef 100644
--- a/packet/src/main/java/org/jclouds/packet/features/ProjectApi.java
+++ b/packet/src/main/java/org/jclouds/packet/features/ProjectApi.java
@@ -36,6 +36,7 @@ import org.jclouds.packet.domain.Href;
import org.jclouds.packet.domain.Project;
import org.jclouds.packet.domain.internal.PaginatedCollection;
import org.jclouds.packet.domain.options.ListOptions;
+import org.jclouds.packet.filters.AddApiVersionToRequest;
import org.jclouds.packet.filters.AddXAuthTokenToRequest;
import org.jclouds.packet.functions.BaseToPagedIterable;
import org.jclouds.rest.annotations.Fallback;
@@ -49,7 +50,7 @@ import com.google.inject.TypeLiteral;
@Path("/projects")
@Consumes(MediaType.APPLICATION_JSON)
-@RequestFilters(AddXAuthTokenToRequest.class)
+@RequestFilters({ AddXAuthTokenToRequest.class, AddApiVersionToRequest.class} )
public interface ProjectApi {
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/86bfeab8/packet/src/main/java/org/jclouds/packet/filters/AddApiVersionToRequest.java
----------------------------------------------------------------------
diff --git a/packet/src/main/java/org/jclouds/packet/filters/AddApiVersionToRequest.java b/packet/src/main/java/org/jclouds/packet/filters/AddApiVersionToRequest.java
new file mode 100644
index 0000000..70e66fb
--- /dev/null
+++ b/packet/src/main/java/org/jclouds/packet/filters/AddApiVersionToRequest.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.jclouds.packet.filters;
+
+import java.util.Collection;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.http.HttpException;
+import org.jclouds.http.HttpRequest;
+import org.jclouds.http.HttpRequestFilter;
+import org.jclouds.rest.annotations.ApiVersion;
+
+import com.google.common.base.Joiner;
+import com.google.common.collect.ImmutableList;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.net.HttpHeaders.ACCEPT;
+import static java.lang.String.format;
+
+@Singleton
+public class AddApiVersionToRequest implements HttpRequestFilter {
+
+ private final String apiVersion;
+
+ @Inject
+ AddApiVersionToRequest(@ApiVersion String apiVersion) {
+ this.apiVersion = apiVersion;
+ }
+
+ @Override
+ public HttpRequest filter(final HttpRequest request) throws HttpException {
+ Collection<String> accept = checkNotNull(request.getHeaders().get(ACCEPT), "accept header must not be null");
+ String versionHeader = Joiner.on("; ").join(ImmutableList.builder()
+ .addAll(accept)
+ .add(format("version=%s", apiVersion))
+ .build());
+ return request.toBuilder()
+ .replaceHeader(ACCEPT, versionHeader)
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/86bfeab8/packet/src/test/java/org/jclouds/packet/compute/internal/BasePacketApiMockTest.java
----------------------------------------------------------------------
diff --git a/packet/src/test/java/org/jclouds/packet/compute/internal/BasePacketApiMockTest.java b/packet/src/test/java/org/jclouds/packet/compute/internal/BasePacketApiMockTest.java
index 5b8d6ae..9fe3d6f 100644
--- a/packet/src/test/java/org/jclouds/packet/compute/internal/BasePacketApiMockTest.java
+++ b/packet/src/test/java/org/jclouds/packet/compute/internal/BasePacketApiMockTest.java
@@ -57,6 +57,7 @@ public class BasePacketApiMockTest {
protected MockWebServer server;
protected PacketApi api;
private Json json;
+ private ApiContext<PacketApi> ctx;
// So that we can ignore formatting.
private final JsonParser parser = new JsonParser();
@@ -65,7 +66,7 @@ public class BasePacketApiMockTest {
public void start() throws IOException {
server = new MockWebServer();
server.play();
- ApiContext<PacketApi> ctx = ContextBuilder.newBuilder("packet")
+ ctx = ContextBuilder.newBuilder("packet")
.credentials("", X_AUTHORIZATION_TOKEN)
.endpoint(url(""))
.modules(modules)
@@ -130,7 +131,7 @@ public class BasePacketApiMockTest {
RecordedRequest request = server.takeRequest();
assertEquals(request.getMethod(), method);
assertEquals(request.getPath(), path);
- assertEquals(request.getHeader("Accept"), "application/json");
+ assertEquals(request.getHeader("Accept"), "application/json; version=" + ctx.getMetadata().get("apiVersion"));
assertEquals(request.getHeader("X-Auth-Token"), X_AUTHORIZATION_TOKEN);
return request;
}