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;
    }