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