github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/clients/hadoopfs/src/main/java/io/lakefs/auth/GeneratePresignGetCallerIdentityResponse.java (about) 1 package io.lakefs.auth; 2 3 import java.io.UnsupportedEncodingException; 4 import java.net.URI; 5 import java.net.URLEncoder; 6 import java.nio.charset.StandardCharsets; 7 import java.util.HashMap; 8 import java.util.Map; 9 10 public class GeneratePresignGetCallerIdentityResponse { 11 private Map<String, String> signedQueryParams; 12 private GeneratePresignGetCallerIdentityRequest req; 13 private Map<String, String> signedHeaders; 14 private String signature; 15 private String region; 16 public GeneratePresignGetCallerIdentityResponse(GeneratePresignGetCallerIdentityRequest req, String region, Map<String, String> signedQueryParams, Map<String, String> signedHeaders, String signature) { 17 this.signedQueryParams = signedQueryParams; 18 this.req = req; 19 this.signedHeaders = signedHeaders; 20 this.signature = signature; 21 this.region = region; 22 } 23 public Map<String, String> getSignedQueryParams() { 24 return signedQueryParams; 25 } 26 public GeneratePresignGetCallerIdentityRequest getRequest() { 27 return req; 28 } 29 public Map<String, String> getSignedHeaders() { 30 return signedHeaders; 31 } 32 public String getSignature() { 33 return signature; 34 } 35 public String getHTTPMethod(){ 36 return "POST"; 37 } 38 public String getRegion() { 39 return region; 40 } 41 public String getHost() { 42 return req.getStsEndpoint().getHost(); 43 } 44 public String getAction(){ 45 return signedQueryParams.get(STSGetCallerIdentityPresigner.AMZ_ACTION_PARAM_NAME); 46 } 47 public String getDate(){ 48 return signedQueryParams.get(STSGetCallerIdentityPresigner.AMZ_DATE_PARAM_NAME); 49 } 50 public String getExpires(){ 51 return signedQueryParams.get(STSGetCallerIdentityPresigner.AMZ_EXPIRES_PARAM_NAME); 52 } 53 public String getAccessKeyId(){ 54 return req.getCredentials().getAWSAccessKeyId(); 55 } 56 public String getVersion(){ 57 return signedQueryParams.get(STSGetCallerIdentityPresigner.AMZ_VERSION_PARAM_NAME); 58 } 59 public String getAlgorithm(){ 60 return signedQueryParams.get(STSGetCallerIdentityPresigner.AMZ_ALGORITHM_PARAM_NAME); 61 } 62 public String getSecurityToken(){ 63 return signedQueryParams.get(STSGetCallerIdentityPresigner.AMZ_SECURITY_TOKEN_PARAM_NAME); 64 } 65 public String getSignedHeadersParam(){ 66 return signedQueryParams.get(STSGetCallerIdentityPresigner.AMZ_SIGNED_HEADERS_PARAM_NAME); 67 } 68 public String convertToURL(){ 69 Map<String, String> allQueryParams = new HashMap<>(); 70 allQueryParams.putAll(signedQueryParams); 71 allQueryParams.put(STSGetCallerIdentityPresigner.AMZ_SIGNATURE_PARAM_NAME, getSignature()); 72 return URLBuilder(allQueryParams, req.getStsEndpoint()); 73 } 74 public static String URLBuilder(Map<String, String> params, URI endpoint) { 75 StringBuilder query = new StringBuilder(); 76 for (Map.Entry<String, String> entry : params.entrySet()) { 77 String key = entry.getKey(); 78 String value = entry.getValue(); 79 if (value != null) { 80 if (query.length() > 0) { 81 query.append("&"); 82 } 83 try { 84 85 String encodedValue = URLEncoder.encode(value, StandardCharsets.UTF_8.toString()); 86 query.append(key).append("=").append(encodedValue); 87 } catch (UnsupportedEncodingException ex) { 88 throw new RuntimeException(ex); 89 } 90 } 91 } 92 try { 93 String url = String.format("%s?%s", endpoint, query.toString()); 94 return new URI(url).toString(); 95 } catch (Exception e) { 96 e.printStackTrace(); 97 return null; 98 } 99 } 100 }