@@ -51,11 +51,11 @@ private static String generateUrl(
5151 }
5252 String newUrl =null ;
5353 if (null !=src ){
54- newUrl =buildFullUrl (src ,queryParameters ,transformation ,transformationPosition ,signed ,expireSeconds );
54+ newUrl =buildFullUrl (src ,queryParameters ,transformation ,transformationPosition ,signed ,expireSeconds , config . getPrivateKey (), urlEndpoint );
5555 }
5656 else {
5757 if ("query" .equalsIgnoreCase (transformationPosition )){
58- newUrl =buildFullUrl (urlEndpoint +(path .charAt (0 )=='/' ?path .substring (1 ,path .length ()):path ),queryParameters ,transformation ,transformationPosition ,signed ,expireSeconds );
58+ newUrl =buildFullUrl (urlEndpoint +(path .charAt (0 )=='/' ?path .substring (1 ,path .length ()):path ),queryParameters ,transformation ,transformationPosition ,signed ,expireSeconds , config . getPrivateKey (), urlEndpoint );
5959 }
6060 else {
6161 newUrl = buildPathUrl (path .charAt (0 )=='/' ?path :"/" +path , urlEndpoint , queryParameters , transformation , transformationPosition , signed , expireSeconds , config .getPrivateKey ());
@@ -110,13 +110,7 @@ private static String buildPathUrl(String path, String urlEndpoint, Map<String,
110110 queryMaker .get (),null );
111111
112112 if (signed ){
113- long expiryTimestamp = DEFAULT_TIMESTAMP ;
114- if (expireSeconds > 0 ){
115- expiryTimestamp = ((Calendar .getInstance ().getTimeInMillis ()/1000 )+expireSeconds );
116- String signature = signUrl (privateKey ,tmpUri .toString (),urlEndpoint ,expiryTimestamp );
117- queryMaker .put ("ik-s=" + signature );
118- queryMaker .put ("ik-t=" + expiryTimestamp );
119- }
113+ sign (urlEndpoint , expireSeconds , privateKey , queryMaker , tmpUri );
120114 }
121115
122116 newUri = new URI (baseUrl .getScheme (),baseUrl .getUserInfo (),baseUrl .getHost (),baseUrl .getPort (),
@@ -129,7 +123,7 @@ private static String buildPathUrl(String path, String urlEndpoint, Map<String,
129123 return newUri .toString ();
130124 }
131125
132- private static String buildFullUrl (String src , Map <String , String > queryParameters , List <Map <String , String >> transformation , String transformationPosition , boolean signed , long expireSeconds ) {
126+ private static String buildFullUrl (String src , Map <String , String > queryParameters , List <Map <String , String >> transformation , String transformationPosition , boolean signed , long expireSeconds , String privateKey , String urlEndpoint ) {
133127 StringBuilder tr = new StringBuilder ("" );
134128 if (transformation .size ()>0 ) {
135129 tr .append ("tr=" );
@@ -178,6 +172,15 @@ private static String buildFullUrl(String src, Map<String, String> queryParamete
178172 URI newUri = null ;
179173 try {
180174 String newPath =baseUrl .getPath ();
175+ URI tmpUri = new URI (baseUrl .getScheme (),baseUrl .getUserInfo (),baseUrl .getHost (),baseUrl .getPort (),
176+ newPath ,
177+ queryMaker .get (),null );
178+
179+
180+ if (signed ){
181+ sign (urlEndpoint , expireSeconds , privateKey , queryMaker , tmpUri );
182+ }
183+
181184 newUri = new URI (baseUrl .getScheme (),baseUrl .getUserInfo (),baseUrl .getHost (),baseUrl .getPort (),
182185 newPath ,
183186 queryMaker .get (),null );
@@ -187,6 +190,16 @@ private static String buildFullUrl(String src, Map<String, String> queryParamete
187190 return newUri .toString ();
188191 }
189192
193+ private static void sign (String urlEndpoint , long expireSeconds , String privateKey , QueryMaker queryMaker , URI tmpUri ) {
194+ long expiryTimestamp = DEFAULT_TIMESTAMP ;
195+ if (expireSeconds > 0 ){
196+ expiryTimestamp = ((Calendar .getInstance ().getTimeInMillis ()/1000 )+ expireSeconds );
197+ String signature = signUrl (privateKey , tmpUri .toString (), urlEndpoint ,expiryTimestamp );
198+ queryMaker .put ("ik-s=" + signature );
199+ queryMaker .put ("ik-t=" + expiryTimestamp );
200+ }
201+ }
202+
190203 public static String signUrl (String privateKey , String url , String urlEndpoint , long expiryTimestamp ){
191204 if (expiryTimestamp < 1 ){
192205 expiryTimestamp = DEFAULT_TIMESTAMP ;
0 commit comments