nacx commented on this pull request.


>     public HttpRequest filter(HttpRequest request) throws HttpException {
+      request = this.isSAS ? filterSAS(request, this.credential) : 
filterKey(request);
+      return request;

```suggestion
      utils.logRequest(signatureLog, request, "<<");
      return request;
```

> +         containerName = parametersArray[1]; 
+         UriBuilder endpoint = 
Uris.uriBuilder(storageUrl).appendPath(containerName);
+         if (parametersArray.length == 3) {
+            endpoint.appendPath(parametersArray[2]).query(credential);
+         } else {
+            endpoint.query("restype=container&" + credential);
+         }
+         return removeAuthorizationHeader(
+            replaceDateHeader(request.toBuilder()
+               .endpoint(endpoint.build())
+               .build()));
+      } catch (NullPointerException e){
+        utils.logRequest(signatureLog, request, "<< a NullPointerException is 
catched");
+      } catch (IllegalArgumentException ex) {
+        utils.logRequest(signatureLog, request, "<< an 
IllegalArgumentException is catched ");
+      } 

If we can't apply the required signature it looks better to fail here and 
propagate the exception instead of just returning the request to let the 
request flow continue, sending a request we already know is invalid.

> +            replaceDateHeader(request.toBuilder()
+               .endpoint(endpoint.build())
+               .build()));
+      } catch (NullPointerException e){
+        utils.logRequest(signatureLog, request, "<< a NullPointerException is 
catched");
+      } catch (IllegalArgumentException ex) {
+        utils.logRequest(signatureLog, request, "<< an 
IllegalArgumentException is catched ");
+      } 
+      return request;
+   }
+       
+   /**
+   * this is a 'standard' filter method, applied when SharedKeyLite 
authentication is used. 
+   *
+   */
+   public HttpRequest filterKey(HttpRequest request) throws HttpException {
       request = replaceDateHeader(request);
       String signature = calculateSignature(createStringToSign(request));
       request = replaceAuthorizationHeader(request, signature);

```suggestion
```

>        request = replaceDateHeader(request);
       String signature = calculateSignature(createStringToSign(request));
       request = replaceAuthorizationHeader(request, signature);
-      utils.logRequest(signatureLog, request, "<<");
-      return request;
+         return request;

```suggestion
          return replaceAuthorizationHeader(request, signature);
```

> @@ -110,7 +172,27 @@ HttpRequest replaceDateHeader(HttpRequest request) {
       request = 
request.toBuilder().replaceHeaders(Multimaps.forMap(builder.build())).build();
       return request;
    }
-
+   
+   /**
+   * this is the method to parse container name and blob name from the 
HttpRequest. 
+   * applicable for the cases with SAS Authentication 
+   * 
+   */ 
+   public String[] cutUri (URI uri) throws NullPointerException, 
IllegalArgumentException {

```suggestion
   public String[] cutUri(URI uri) throws NullPointerException, 
IllegalArgumentException {
```

> @@ -110,7 +172,27 @@ HttpRequest replaceDateHeader(HttpRequest request) {
       request = 
request.toBuilder().replaceHeaders(Multimaps.forMap(builder.build())).build();
       return request;
    }
-
+   
+   /**
+   * this is the method to parse container name and blob name from the 
HttpRequest. 
+   * applicable for the cases with SAS Authentication 
+   * 
+   */ 
+   public String[] cutUri (URI uri) throws NullPointerException, 
IllegalArgumentException {
+      String path = uri.getPath();
+      String[] result = path.split("/");
+      if (result.length < 2) {
+         throw new IllegalArgumentException("there is neither ContainerName 
nor BlobName in the URI path");
+      }
+      for (int i = 1; i < result.length; i++){

```suggestion
      for (int i = 1; i < result.length; i++) {
```

> +            
> .endpoint(Uris.uriBuilder(storageUrl).appendPath(container).appendPath(name).query(this.credential).build())
+            .replaceHeader(HttpHeaders.DATE, nowString);
+     
+      request = setHeaders(request, method, options, contentLength, 
contentType);
+        
+         HttpRequest req = request.build();
+         
+      return req;
+   }  
+   
+   /**
+   * modified sign() method, which acts depending on the Auth input. 
+   * 
+   */
+   public HttpRequest sign(String method, String container, String name, 
@Nullable GetOptions options, long expires, @Nullable Long contentLength, 
@Nullable String contentType) {
+         HttpRequest request = null;

```suggestion
```

> +     
+      request = setHeaders(request, method, options, contentLength, 
contentType);
+        
+         HttpRequest req = request.build();
+         
+      return req;
+   }  
+   
+   /**
+   * modified sign() method, which acts depending on the Auth input. 
+   * 
+   */
+   public HttpRequest sign(String method, String container, String name, 
@Nullable GetOptions options, long expires, @Nullable Long contentLength, 
@Nullable String contentType) {
+         HttpRequest request = null;
+         if (isSAS) {
+         request = signSAS(method, container, name, options, expires, 
contentLength, contentType);

```suggestion
         return signSAS(method, container, name, options, expires, 
contentLength, contentType);
```

> +      
+         HttpRequest req = request.build();
+         
+      return req;
+   }  
+   
+   /**
+   * modified sign() method, which acts depending on the Auth input. 
+   * 
+   */
+   public HttpRequest sign(String method, String container, String name, 
@Nullable GetOptions options, long expires, @Nullable Long contentLength, 
@Nullable String contentType) {
+         HttpRequest request = null;
+         if (isSAS) {
+         request = signSAS(method, container, name, options, expires, 
contentLength, contentType);
+         } else {
+         request = signKey(method, container, name, options, expires, 
contentLength, contentType);

```suggestion
      return signKey(method, container, name, options, expires, contentLength, 
contentType);
```

> +       
+      return req;
+   }  
+   
+   /**
+   * modified sign() method, which acts depending on the Auth input. 
+   * 
+   */
+   public HttpRequest sign(String method, String container, String name, 
@Nullable GetOptions options, long expires, @Nullable Long contentLength, 
@Nullable String contentType) {
+         HttpRequest request = null;
+         if (isSAS) {
+         request = signSAS(method, container, name, options, expires, 
contentLength, contentType);
+         } else {
+         request = signKey(method, container, name, options, expires, 
contentLength, contentType);
+         }
+      return request;

```suggestion
```

> +      request = setHeaders(request, method, options, contentLength, 
> contentType);
+        
+         HttpRequest req = request.build();
+         
+      return req;
+   }  
+   
+   /**
+   * modified sign() method, which acts depending on the Auth input. 
+   * 
+   */
+   public HttpRequest sign(String method, String container, String name, 
@Nullable GetOptions options, long expires, @Nullable Long contentLength, 
@Nullable String contentType) {
+         HttpRequest request = null;
+         if (isSAS) {
+         request = signSAS(method, container, name, options, expires, 
contentLength, contentType);
+         } else {

```suggestion
          }
```

> +       HttpRequest req = request.build();
+         
+      return req;
+   }  
+   
+   /**
+   * modified sign() method, which acts depending on the Auth input. 
+   * 
+   */
+   public HttpRequest sign(String method, String container, String name, 
@Nullable GetOptions options, long expires, @Nullable Long contentLength, 
@Nullable String contentType) {
+         HttpRequest request = null;
+         if (isSAS) {
+         request = signSAS(method, container, name, options, expires, 
contentLength, contentType);
+         } else {
+         request = signKey(method, container, name, options, expires, 
contentLength, contentType);
+         }

```suggestion
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jclouds/jclouds/pull/1270#pullrequestreview-202172409

Reply via email to